KDE System Administration/XDG Filesystem Hierarchy

From KDE Wiki Sandbox

Freedesktop.org and Standard Directories

Many of the free and open source software projects that focus on desktop technology collaborate on shared specifications and software within the freedesktop.org project.

One of these shared specifications is the base directory specification which defines a set of locations in the filesystem that can be used for portable desktop technology implementations.

KDE supports the base directory specification and the various environment variables it prescribes in addition to the KDE filesystem hierarchy. A summary of KDE's implementation follows below, while the full specification can be read here on freedesktop.org.

Application Data

Data that applications store which are specific to a given user are to be stored in the XDG_DATA_HOME directory. If the XDG_DATA_HOME environment variable isn't set, it defaults to $HOME/.local/share for local storage and /usr/local/share;/usr/share for system-wide files.

Some items that may be stored in XDG_DATA_HOME are files the user has put in the trash, mimetype definitions and associations, and application .desktop files.

The search path for system-wide directories can be defined by setting the XDG_DATA_DIRS environment variable to contain a list of paths.

Configuration

Configuration information should be stored in the XDG_CONFIG_HOME directory. If the XDG_CONFIG_HOME environment variable isn't set, it defaults to $HOME/.config for local storage and /etc/xdg for system-wide files.

Some items that may be stored in XDG_CONFIG_HOME are application configuration files and application menu structure.

The search path for system-wide directories can be defined setting the XDG_CONFIG_DIRS environment variable to contain a list of paths.

Cache Files

Temporary data caches can be stored in the XDG_CACHE_HOME location, which defaults to $HOME/.cache. There is no system-wide cache location, as such caches are always user-specific.

Thumbnails

Thumbnails representing the contents of files for use in icons and other representations of files are to be stored in $HOME/.thumbnails. The structure and content of the thumbnails directory is defined in the thumbnail specification.