XDG user directories
- xdg-user-dirs is a tool to help manage "well known" user directories like the desktop folder and the music folder. It also handles localization (i.e. translation) of the filenames.
- The way it works is that
$XDG_CONFIG_HOME/user-dirs.dirs(XDG_CONFIG_HOME defaults to ~/.config) that applications can read to find these directories. is run very early in the login phase. This program reads a configuration file, and a set of default directories. It then creates localized versions of these directories in the users home directory and sets up a config file in
Most file managers indicate XDG user directories with special icons.
Creating default directories
Creating a full suite of localized default user directories within the
$HOME directory can be done automatically using and running:
LC_ALL=C xdg-user-dirs-updatecan be used.
When executed, it will also automatically:
- Create a local
~/.config/user-dirs.dirsconfiguration file: used by applications to find and use home directories specific to an account.
- Create a local
~/.config/user-dirs.localeconfiguration file: used to set the language according to the locale in use.
provides a user service
xdg-user-dirs-update.service, enabled globally by default, which simply calls
$ xdg-user-dirs-update so your directories stay up to date.
Creating custom directories
Both the local
~/.config/user-dirs.dirs and global
/etc/xdg/user-dirs.defaults configuration files use the following environmental variable format to point to user directories:
XDG_DIRNAME_DIR="$HOME/directory_name" An example configuration file will/may likely look like this (these are all the template directories):
XDG_DESKTOP_DIR="$HOME/Desktop" XDG_DOCUMENTS_DIR="$HOME/Documents" XDG_DOWNLOAD_DIR="$HOME/Downloads" XDG_MUSIC_DIR="$HOME/Music" XDG_PICTURES_DIR="$HOME/Pictures" XDG_PUBLICSHARE_DIR="$HOME/Public" XDG_TEMPLATES_DIR="$HOME/Templates" XDG_VIDEOS_DIR="$HOME/Videos"
XDG_DOWNLOAD_DIR variable has named
~/.config/user-dirs.dirs any application that uses this variable will use this directory.
Alternatively, it is also possible to specify custom folders using the command line. For example, the following command will produce the same results as the above configuration file edit:
$ xdg-user-dirs-update --set DOWNLOAD ~/Internet
Querying configured directories
Once set, any user directory can be viewed with
Templates directory, which of course corresponds to the
XDG_TEMPLATES_DIR variable in the local configuration file:
$ xdg-user-dir TEMPLATES