Documentation Home Give Thanks / Docs & Website / Email Support

Files and Directories

This documentation is meant to describe the files and directories that make up AmphetaDesk, either in source form or as a runtime. It's intended as a means to find out what that stupid file over there means, or whether this file over here should be included with a distribution. With the new design in v0.93, most of the files in the source code are now shipped with the distributed runtime's regardless.

There are four different places where a file could be: "Source" means it's only relevant in the source code, "Runtime" means it should be distributed along with any compiled package, "Both" assumes the file shows up in the runtime and source, and "-" means that the file is created / downloaded automatically and is not required in a distribution (although it won't hurt if it's there).

File/DirectoryLocationDescription
/AmphetaDesk
/AmphetaDesk.app
/AmphetaDesk.exe
Runtime These are the runtime files built from AmphetaDesk.pl as per our build instructions. These files have all the necessary libraries and XS code, as well as the Perl interpreter. The .exe is the Win32 runtime, the .app is the OS X runtime, and the other is the Classic Mac runtime (the XS code under Classic is loaded from the shared libs directory).
/AmphetaDesk.log - The actual logfile from either the source or runtime versions of AmphetaDesk. If this file doesn't exist, then it is automatically created. Each time AmphetaDesk is run, it will overwrite the old logfile if it's larger than 250k and start afresh. If something weird's happening with AmphetaDesk, there's a good chance we can find out why by looking in here.
/AmphetaDesk.pl Both The wrapper code that loads our true code from the lib directory. This file should be kept as simplistic as possible - it really serves only as a launching pad for our compilation.
/README.txt Both This is just a simple and quick README file that instructs the user how to install AmphetaDesk on Windows, Macintosh, and Linux machines. A duplicate copy exists in the docs directory. Other README.txt files are spread out through the other directories, and serve as quick introductions to the files within.
File/DirectoryLocationDescription
/data/myChannels.opml - This file is created when the user first runs AmphetaDesk and contains a default set of shipped channels. As the user customizes their AmphetaDesk, this file is continually updated. Deleting this file will cause the default channels to be loaded again. For more information about this file, see XML: myServices.
/data/mySettings.xml - mySettings.xml defines all of the user's preferences, hopes, and dreams. If this file is missing, AmphetaDesk will use default entries, else the entries within this file override them. For more information about this file, see XML: mySettings.
/data/channels/* - This directory holds all of the saved data and metadata from the channel feeds. The contents are always changing (whether it be because of new channels being added, or old files being deleted). If this directory doesn't exist, AmphetaDesk will create it.
/data/internal/* - This directory is automatically created if missing, and holds interim files that AmphetaDesk creates as it lives and breathes. Currently, this means only the version.txt file, below.
/data/internal/version.txt - The version.txt file is used to check whether the currently running AmphetaDesk is the latest version available. Each time AmphetaDesk is run, we check this file against the remote version.txt to see if any changes has occurred. If so, we display the contents of the file in the AmphetaDesk window.
/data/lists/* Both This directory is created automatically if it doesn't exist and holds all the service lists that AmphetaDesk uses during it's lifetime. Lists are updated on a set period - the only list currently used is services-channels-recent.xml.
/data/lists/services-channels-recent.xml -
Both
This is referenced whenever people click to "Add A Channel". It's a slimmed down version of the complete list available from Syndic8.com, removing all sites that haven't been updated within the 30 days. This file does not need to be distributed with the runtime because it will be downloaded if it doesn't exist, but it does make the user's initial loading of AmphetaDesk a bit longer (and more confusing), so we're currently recommending against it. For more information, check out XML: Services Lists.
File/DirectoryLocationDescription
/docs/* -
Both
This is the directory where the file you're currently reading is stored. This directory is not required in distributed runtimes (as all the template links point to the disobey.com site), but at the moment, it's be insane NOT to include it. The files in this directory won't be explained, since they're not crucial to the running of AmphetaDesk (you can gain a good enough idea by looking at the Documentation Index of AmphetaDesk).
File/DirectoryLocationDescription
/lib/AmphetaDesk.pm Both This Perl module is the "router" of AmphetaDesk, setting up the runtime environment, starting the internal webserver and GUI, and processing all incoming requests off to their respective modules. It loads all the other modules from the lib directory.
/lib/AmphetaDesk/Channels.pm
/lib/AmphetaDesk/ChannelsList.pm
/lib/AmphetaDesk/MyChannels.pm
Both The three modules that do most of the work for AmphetaDesk. Channels.pm controls the parsing, download and storage of our RSS or scriptingNews files, ChannelsList.pm covers the display of the OPML export of Syndic8.com, and MyChannels.pm manipulates the user's subscription list.
/lib/AmphetaDesk/OS/Linux.pm
/lib/AmphetaDesk/OS/MacOS.pm
/lib/AmphetaDesk/OS/MacOSX.pm
/lib/AmphetaDesk/OS/Windows.pm
Both These four files handle the OS specific portions of AmphetaDesk - they control GUI routines, API handlers for the browsers, and other things that can change from OS to OS. Which file to use is determined at runtime from within AmphetaDesk.
/lib/AmphetaDesk/Settings.pm Both Settings.pm handles the creation and manipulation of the mySettings.xml file, and also contains all the default settings should that file not exist. If certain required directories do not exist, this is where they're automatically created.
/lib/AmphetaDesk/Utilities.pm Both Routines not related to anything else, such as whitespace cleaning, logfile output, character encodings, and message storage. It's full of generic routines for everyone's use. Yum.
/lib/AmphetaDesk/Versioning.pm Both This module currently doesn't do much - it merely downloads a version.txt file and compares the version number within to the locally running copy. In future versions of AmphetaDesk, it'll be able to automatically download and update to newer versions.
/lib/AmphetaDesk/WebServer.pm Both Merely a subclass of HTTP::Daemon, the sole purpose of this routine is to tweak our internal webserver's identification. Fickle. Check out the POD for HTTP::Daemon for more information.
/lib/AmphetaDesk/WWW.pm Both Most of the routines within this file are wrappers around various LWP::UserAgent functions, thus this module concerns itself with access to the web - downloading data, reading HTTP headers, etc.
/lib/Text/*
/lib/XML/*
Both CPAN accessible code relating to our template processing and XML parsing. For more information on these modules, see the Text::Template and XML::Simple documentation.
File/DirectoryLocationDescription
/shared libs/*
/lib/shared libs/*
Runtime (Mac) This directory and its contents ONLY exist on a compiled Classic Macintosh runtime and is necessary for proper operation. It contains various C/XS libraries compiled for use with MacPerl.
File/DirectoryLocationDescription
/templates/*
/templates/gui/*
Both You can find detailed descriptions of all these files in the template/skinning portion of the documentation. They control the AmphetaDesk look and feel of the webpages, and the gui subdirectory controls the icons and logos of the runtime.

Documentation Home Give Thanks / Docs & Website / Email Support