What is the relationship between .gconf, .gnome2, .cache, .local, and other dot-file hierarchies in my home directory?

Solution 1:

.local, .cache, and .config are part of the FreeDesktop Base Directory Specification. They should not actually be hard-coded but instead use the environment variables (i.e. $XDG_DATA_HOME, $XDG_CACHE_HOME, and $XDG_CONFIG_HOME). There are GLib and Python wrappers for the spec that may be helpful as well. Here's an example in Python:

>>> import xdg.BaseDirectory
>>> print xdg.BaseDirectory.xdg_data_home
/home/andrew/.local/share
>>> print xdg.BaseDirectory.xdg_config_home
/home/andrew/.config
>>> print xdg.BaseDirectory.xdg_cache_home
/home/andrew/.cache

.gnome and .gnome2 are indeed deprecated and should not be used. These were used by libgnome's gnome-config module.

.gconf does indeed contain the settings that gconf-editor accesses as xml files. For instance, compare the output of the following commands:

gconftool -a /desktop/gnome/applications/browser

cat ~/.gconf/desktop/gnome/applications/browser/%gconf.xml

Solution 2:

The proper phrasing should be that .local, .cache, etc are part of the XDG Base Directory Specification of FreeDesktop, http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html.

The XDG Base Directory Specification is a standard, and is followed by KDE and other compliant environments.