XDG user directories
Related articles
User directories are a set of common user directories located within the $HOME
directory, including Documents
, Downloads
, Music
, and Desktop
. Identified by unique icons within a file manager, they will commonly be automatically sourced by numerous programs and applications. xdg-user-dirs is a program that will automatically generate these directories. See the freedesktop.org website for further information.
Contents
Installation
Install the xdg-user-dirs package.Creating default directories
To create a full suite of localized default user directories within the $HOME
directory, enter the following command:
$ xdg-user-dirs-update
When executed, it will also automatically:
- Create a local
~/.config/user-dirs.dirs
configuration file: used by applications to find and use home directories specific to an account. - Create a global
/etc/xdg/user-dirs.defaults
configuration file: used by applications to find and use home directories generally. - Create a local
~/.config/user-dirs.locale
configuration file: used to set the language according to the locale in use.
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"
As xdg-user-dirs will source the local configuration file to point to the appropriate user directories, it is therefore possible to specify custom folders. For example, if a custom folder for the XDG_DOWNLOAD_DIR
variable has named $HOME/Internet
in ~/.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 xdg-user-dirs. For example, the following command will specify the location of the Templates
directory, which of course corresponds to the XDG_TEMPLATES_DIR
variable in the local configuration file:
$ xdg-user-dir TEMPLATES