XDG user directories

From ArchWiki
(Redirected from Xdg user directories)
Jump to: navigation, search

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.

Tip: This program will be especially helpful for those who wish to use a file manager to manage their desktop for a Window manager such as Openbox, as it will also automatically create a ~/Desktop directory.

Installation

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: Installing the package does not seem to be necessary in order to e.g. prevent applications from creating directories with unwanted names: creating the files in ~/.config manually should be equally effective. This should be clarified here, but the whole article might need a review. (Discuss in Talk:XDG user directories#)
Install the xdg-user-dirs package.

Creating default directories

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: This needs a technical review, as e.g. /etc/xdg/user-dirs.defaults is installed by the package, obviously not created by a command run by a normal user. (Discuss in Talk:XDG user directories#)

To create a full suite of localized default user directories within the $HOME directory, enter the following command:

$ xdg-user-dirs-update
Tip: To force the creation of English-named directories, LC_ALL=C xdg-user-dirs-update can be used.

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.

Note: Like with many configuration files, local settings override global settings. It will also be necessary to create any new custom directories.

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