Skip to main content.

Xfce 4.0 (obsolete)

In Xfce 4.0, all user specific data (this includes configuration settings, cached data and general data) was stored below the directory referenced by the environment variable $XFCE4HOME (defaults to ~/.xfce4/). All desktop related configuration was stored in the directory $XFCE4HOME/settings/, for example $XFCE4HOME/settings/xfwm4.xml for the window manager configuration, $XFCE4HOME/settings/session.xml for the session manager configuration and $XFCE4HOME/settings/panel.xml for the panel configuration. All these configuration files are controlled by the xfce-mcs-manager.

In addition to the MCS (Multi Channel Settings) controlled configuration, some xfce programs had additional information, that were also stored in $XFCE4HOME. For example, the panel description file - the file that contains the information about the plugins used and their actual settings - was located in $XFCE4HOME/xfce4rc, the xfcalendar related settings where stored in $XFCE4HOME/xfcalendar/, the file manager data was stored in $XFCE4HOME/xffm/ and the mixer data was stored in $XFCE4HOME/xfce4-mixer/. Similar, the session data (used by the session and window managers to restore your desktop after relogin) was stored in $XFCE4HOME/sessions/.

Xfce 4.2

Now that you know how all this was handled in Xfce 4.0, forget everything I told you above, since Xfce 4.2 uses a slightly different specification for locating user specific files. Xfce 4.2 is the first desktop to completely adopt the new XDG base directory specification. This specification defines where desktop related files should be looked for by defining one or more base directories relative to which files should be located. The idea of this specification is to reduce the number of dot directories in the users home directory. The basic concept is very easy to understand, please read the specification once or twice, as I'll concentrate on how this applies to Xfce here.

In Xfce 4.2, all temporary data is stored below $XDG_CACHE_HOME. For example, xfce4-session stores generated previews of splash themes in $XDG_CACHE_HOME. Everything that was previously stored to $XFCE4HOME/sessions/ can now be found in $XDG_CACHE_HOME/sessions/. xfdesktop stores a cached version of the desktop/panel menu in $XDG_CACHE_HOME/xfce4/desktop/ to decrease startup times (the cached menu is regenerated on demand). Finally, xffm stores cached data to both $XDG_CACHE_HOME/xfce4/xfce4-modules/ and $XDG_CACHE_HOME/xfce4/xffm/.

The MCS configuration files have moved to $XDG_CONFIG_DIRS/xfce4/mcs_settings/ in Xfce 4.2 while the names are the same as in 4.0. The panel description file was renamed to contents.xml and is now located in $XDG_CONFIG_DIRS/xfce4/panel/ (one panel description file per X screen). The default desktop/panel menu description file is now $XDG_CONFIG_DIRS/xfce4/desktop/menu.xml and the file manager settings are stored in $XDG_CONFIG_DIRS/xfce4/xffm/ now. So to summarize, you basicly have all configuration related files, that were stored in $XFCE4HOME previously, moved to $XDG_CONFIG_DIRS/xfce4/ with Xfce 4.2. One exception from this rule is xfce4-session, which stores its configuration (the session settings and the splash theme settings) in $XDG_CONFIG_DIRS/xfce4-session/ for historic reasons (and different interpretations of the XDG base directory specification).


It is important to note that the XDG base directory specification is a rather new standard and isn't widely adopted yet. Xfce is the first big project to use it. We did the switch, because we consider it a good thing, and we believe that its worth to support this specification in the interest of cleaner and better structured home directories. It is expected that other projects will follow this example in the future, for example, Glib 2.6 will ship with XDG basedir support functions (similar to the ones in libxfce4util), while kdelibs already contain support for some time now.