{{ic|prefix}} is unnecessary (and unsupported) if Node.js is installed by {{AUR|nvm}}.

{{ic|prefix}} is unnecessary (and unsupported) if Node.js is installed by {{AUR|nvm}}.

|-

|-

Line 1,101:

Line 1,121:

|

|

| Ultimately you [http://superuser.com/questions/243914/xresources-or-xdefaults should be] using {{ic|Xresources}} and since these resources are loaded via {{ic|xrdb}} you can specify a path such as {{ic|1=$ xrdb -load ~/.config/X11/xresources}}.

| Ultimately you [http://superuser.com/questions/243914/xresources-or-xdefaults should be] using {{ic|Xresources}} and since these resources are loaded via {{ic|xrdb}} you can specify a path such as {{ic|1=$ xrdb -load ~/.config/X11/xresources}}.

| Like {{ic|~/.ssh}}, many programs expect this file to be here. These include projects like curl ({{ic|CURLOPT_NETRC_FILE}}), ftp ({{ic|NETRC}}), s-nail ({{ic|NETRC}}), etc. While some of them offer alternative configurable locations, many do not such as w3m, wget and lftp.

| Like {{ic|~/.ssh}}, many programs expect this file to be here. These include projects like curl ({{ic|CURLOPT_NETRC_FILE}}), ftp ({{ic|NETRC}}), s-nail ({{ic|NETRC}}), etc. While some of them offer alternative configurable locations, many do not such as w3m, wget and lftp.

+

|-

+

| [[nano]]

+

| {{ic|~/.nano/}} {{ic|~/.nanorc}}

+

| [https://savannah.gnu.org/patch/?8523]

|-

|-

| [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS NSS]

| [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS NSS]

Line 1,330:

Line 1,353:

|

|

|-

|-

−

| [https://quodlibet.readthedocs.io/en/latest/ quodlibet]

+

| [https://quodlibet.readthedocs.io/en/latest/ Quod Libet]

| {{ic|~/.quodlibet}}

| {{ic|~/.quodlibet}}

−

|

+

| [https://github.com/quodlibet/quodlibet/issues/138]

|

|

|-

|-

Line 1,392:

Line 1,415:

| [[Steam]]

| [[Steam]]

| {{ic|~/.steam}}

| {{ic|~/.steam}}

+

{{ic|~/.steampath}}

+

{{ic|~/.steampid}}

| [https://github.com/ValveSoftware/steam-for-linux/issues/1890]

| [https://github.com/ValveSoftware/steam-for-linux/issues/1890]

|

|

Line 1,458:

Line 1,483:

| {{ic|~/.xombrero}}

| {{ic|~/.xombrero}}

| [https://github.com/conformal/xombrero/issues/74]

| [https://github.com/conformal/xombrero/issues/74]

+

|

+

|-

+

| {{pkg|yarn}}

+

| {{ic|~/.yarnrc}}

+

+

{{ic|~/.yarn/}}

+

+

{{ic|~/.yarncache/}}

+

+

{{ic|~/.yarn-config/}}

+

| [https://github.com/yarnpkg/yarn/issues/2334]

|

|

|-

|-

Line 1,489:

Line 1,525:

; Python

; Python

: [http://freedesktop.org/wiki/Software/pyxdg/ pyxdg]

: [http://freedesktop.org/wiki/Software/pyxdg/ pyxdg]

+

+

; Ruby

+

: [https://github.com/rubyworks/xdg rubyworks/xdg]

; Vala

; Vala

Revision as of 04:24, 6 October 2017

This article exists to catalog the growing set of software using the XDG Base Directory Specification introduced in 2003. This is here to demonstrate the viability of this specification by listing commonly found dotfiles and their support status. For those not currently supporting the Base Directory Specification, workarounds will be demonstrated to emulate it instead.

The workarounds will be limited to anything not involving patching the source, executing code stored in environment variables or compile-time options. The rationale for this is that configurations should be portable across systems and having compile-time options prevent that.

Hopefully this will provide a source of information about exactly what certain kinds of dotfiles are and where they come from.

Contents

XDG Base Directory specification

Please read the full specification. This section will attempt to break down the essence of what it tries to achieve.

Only XDG_RUNTIME_DIR is set by default through pam_systemd. It is up to the user to explicitly define the other variables, using absolute paths that point to existing directories.

User directories

XDG_CONFIG_HOME

Where user-specific configurations should be written (analogous to /etc).

Should default to $HOME/.config.

XDG_CACHE_HOME

Where user-specific non-essential (cached) data should be written (analogous to /var/cache).

Should default to $HOME/.cache.

XDG_DATA_HOME

Where user-specific data files should be written (analogous to /usr/share).

Should default to $HOME/.local/share.

XDG_RUNTIME_DIR

Used for non-essential, user-specific data files such as sockets, named pipes, etc.

Not required to have a default value; warnings should be issued if not set or equivalents provided.

Must be owned by the user with an access mode of 0700.

Filesystem fully featured by standards of OS.

Must be on the local filesystem.

May be subject to periodic cleanup.

Modified every 6 hours or set sticky bit if persistence is desired.

Can only exist for the duration of the user's login.

Should not store large files as it may be mounted as a tmpfs.

System directories

XDG_DATA_DIRS

List of directories seperated by : (analogous to PATH).

Should default to /usr/local/share:/usr/share.

XDG_CONFIG_DIRS

List of directories seperated by : (analogous to PATH).

Should default to /etc/xdg.

Contributing

When contributing make sure to use the correct section.

Nothing should require code evaluation (such as vim and VIMINIT), patches or compile-time options to gain support and anything which does must be deemed hardcoded. Additionally if the process is too error prone or difficult, such as Haskell's cabal or eclipse, they should also be considered as hardcoded.

The first column should be the project name, ideally the command name if it is not ambigious, linked to their website or an appropriate internal wiki article.

The second column is for any legacy files and directories the project had (one per line), this is done so people can find them even if they are no longer read.

In the third, try to find the commit or version a project switched to XDG Base Directory or any open discussions and include them in the next two columns (two per line).

The last column should include any appropriate workarounds or solutions. Please verify that your solution is correct and functional.

Very likely generated by the module-esound-protocol-unix.so module. It can be configured to use a different location but it makes much more sense to just comment out this module in /etc/pulse/default.pa or "$XDG_CONFIG_HOME"/pulse/default.pa.

Option -Dosgi.configuration.area=@user.home/.config/.. overrides but must be added to "$ECLIPSE_HOME"/eclipse.ini" rather than command line which means you must have write access to $ECLIPSE_HOME. (Arch Linux hard-codes $ECLIPSE_HOME in /usr/bin/eclipse)

It's possible to set HOME, but it has unexpected side effects. So far the most promising approach is modifying another Emacs environment variable to alter the load path and author your own site file which can manually load up your init file, but it changes the load process significantly.

Like ~/.ssh, many programs expect this file to be here. These include projects like curl (CURLOPT_NETRC_FILE), ftp (NETRC), s-nail (NETRC), etc. While some of them offer alternative configurable locations, many do not such as w3m, wget and lftp.

Since 7.3.1178 vim will search for ~/.vim/vimrc if ~/.vimrc is not found.

$ mkdir -p "$XDG_CACHE_HOME"/vim/{undo,swap,backup}

"$XDG_CONFIG_HOME"/vim/vimrc

set undodir=$XDG_CACHE_HOME/vim/undo
set directory=$XDG_CACHE_HOME/vim/swap
set backupdir=$XDG_CACHE_HOME/vim/backup
set viminfo+='1000,n$XDG_CACHE_HOME/vim/viminfo
set runtimepath=$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$VIMRUNTIME

Consider exporting ZDOTDIR=$HOME/.config/zsh in ~/.zshenv (this is hardcoded due to the bootstrap problem). You could also add this to /etc/zsh/zshenv and avoid the need for any dotfiles in your HOME. Doing this however requires root privilege which may not be viable and is system-wide.