Difference between revisions of "XDG Base Directory"

From ArchWiki
Jump to navigation Jump to search
(→‎Hardcoded: use Arch Linux manual page)
(add spacemacs)
 
(111 intermediate revisions by 37 users not shown)
Line 14: Line 14:
 
Please read the [https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html full specification]. This section will attempt to break down the essence of what it tries to achieve.
 
Please read the [https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html full specification]. This section will attempt to break down the essence of what it tries to achieve.
  
Only {{ic|XDG_RUNTIME_DIR}} is set by default through [http://www.freedesktop.org/software/systemd/man/pam_systemd.html pam_systemd]. It is up to the user to explicitly [[define]] the other variables, using absolute paths that point to existing directories.
+
Only {{ic|XDG_RUNTIME_DIR}} is set by default through [https://www.freedesktop.org/software/systemd/man/pam_systemd.html pam_systemd]. It is up to the user to explicitly [[define]] the other variables according to the specification.
  
 
=== User directories ===
 
=== User directories ===
Line 106: Line 106:
 
| [https://littlesvr.ca/bugs/show_bug.cgi?id=52]
 
| [https://littlesvr.ca/bugs/show_bug.cgi?id=52]
 
| Uses {{ic|XDG_CONFIG_HOME/asunder/asunder}} for {{ic|~/.asunder}} and {{ic|XDG_CACHE_HOME/asunder/asunder_album_...}} for the other 3 files. Legacy paths are not removed after migration, they have to be deleted manually.
 
| Uses {{ic|XDG_CONFIG_HOME/asunder/asunder}} for {{ic|~/.asunder}} and {{ic|XDG_CACHE_HOME/asunder/asunder_album_...}} for the other 3 files. Legacy paths are not removed after migration, they have to be deleted manually.
 +
|-
 +
| {{Pkg|binwalk}}
 +
| {{ic|~/.binwalk}}
 +
| [https://github.com/ReFirmLabs/binwalk/commit/2051757 2051757]
 +
| [https://github.com/ReFirmLabs/binwalk/issues/216]
 +
| {{ic|$XDG_CONFIG_HOME/binwalk}}<br>
 +
Supported only in Git master branch, there's no updated stable release yet.
 
|-
 
|-
 
| [[Blender]]
 
| [[Blender]]
Line 133: Line 140:
 
|
 
|
 
|-
 
|-
| [[PHP#Composer|Composer]]
+
| [[Composer]]
 
| {{ic|~/.composer}}
 
| {{ic|~/.composer}}
 
| [https://github.com/composer/composer/releases/tag/1.0.0-beta1 1.0.0-beta1]
 
| [https://github.com/composer/composer/releases/tag/1.0.0-beta1 1.0.0-beta1]
 
| [https://github.com/composer/composer/pull/1407]
 
| [https://github.com/composer/composer/pull/1407]
|
 
|-
 
| {{AUR|cower}}
 
|
 
| [https://github.com/falconindy/cower/commit/8b70805 8b70805]
 
|
 
 
|
 
|
 
|-
 
|-
Line 179: Line 180:
 
|
 
|
 
|
 
|
 +
|
 +
|-
 +
| {{Pkg|elixir}}
 +
| {{ic|~/.mix}}
 +
| [https://github.com/elixir-lang/elixir/commit/afaf889 afaf889]
 +
| [https://github.com/elixir-lang/elixir/issues/8818]
 
|
 
|
 
|-
 
|-
Line 191: Line 198:
 
{{ic|~/.fontconfig<br>
 
{{ic|~/.fontconfig<br>
 
~/.fonts}}
 
~/.fonts}}
| [http://cgit.freedesktop.org/fontconfig/commit/?id=8c255fb 8c255fb]
+
| [https://cgit.freedesktop.org/fontconfig/commit/?id=8c255fb 8c255fb]
 
|
 
|
 
| Use {{ic|"$XDG_DATA_HOME"/fonts}} to store fonts instead.
 
| Use {{ic|"$XDG_DATA_HOME"/fonts}} to store fonts instead.
Line 243: Line 250:
 
| [[GStreamer]]
 
| [[GStreamer]]
 
| {{ic|~/.gstreamer-0.10}}
 
| {{ic|~/.gstreamer-0.10}}
| [http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=4e36f93 4e36f93]
+
| [https://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=4e36f93 4e36f93]
 
| [https://bugzilla.gnome.org/show_bug.cgi?id=518597]
 
| [https://bugzilla.gnome.org/show_bug.cgi?id=518597]
 
|
 
|
 
|-
 
|-
| [[GTK+]] 3
+
| [[GTK]] 3
 
|
 
|
 
|
 
|
Line 283: Line 290:
 
|
 
|
 
|-
 
|-
| {{AUR|latex-mk}}
+
| latexmk (in {{Pkg|texlive-core}})
 
| {{ic|~/.latexmkrc}}
 
| {{ic|~/.latexmkrc}}
 
|
 
|
Line 337: Line 344:
 
|
 
|
 
| {{ic|XDG_CONFIG_HOME/hg/hgrc}}.
 
| {{ic|XDG_CONFIG_HOME/hg/hgrc}}.
 +
|-
 +
| [[msmtp]]
 +
| {{ic|~/.msmtprc}}
 +
|
 +
[https://github.com/marlam/msmtp-mirror/commit/af2f409 af2f409]
 +
v1.6.7+
 +
|
 +
| {{ic| $XDG_CONFIG_HOME"/msmtp/config}}.
 
|-
 
|-
 
| {{Pkg|mesa}}
 
| {{Pkg|mesa}}
Line 391: Line 406:
 
[https://github.com/arybczak/ncmpcpp/issues/110]
 
[https://github.com/arybczak/ncmpcpp/issues/110]
 
| {{ic|ncmpcpp_directory}} should be set to avoid an {{ic|error.log}} file in {{ic|~/.ncmpcpp}}.
 
| {{ic|ncmpcpp_directory}} should be set to avoid an {{ic|error.log}} file in {{ic|~/.ncmpcpp}}.
|-
 
| {{AUR|np2kai-git}}
 
|
 
{{ic|~/.config/np2kai<br>
 
~/.config/xnp2kai}}
 
| [https://github.com/AZO234/NP2kai/commit/56a1cc2 56a1cc2]
 
| [https://github.com/AZO234/NP2kai/pull/50]
 
|
 
 
|-
 
|-
 
| [[Neovim]]
 
| [[Neovim]]
Line 419: Line 426:
 
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/newsbeuter "$XDG_CONFIG_HOME"/newsbeuter}}
 
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/newsbeuter "$XDG_CONFIG_HOME"/newsbeuter}}
 
|-
 
|-
| [[NVIDIA]]
+
| [https://github.com/nodejs/node-gyp node-gyp]
| {{ic|~/.nv}}
+
| {{ic|~/.node-gyp}}
|
+
| [https://github.com/nodejs/node-gyp/commit/2b5ce52a 2b5ce52a]
|
+
| [https://github.com/nodejs/node-gyp/pull/1570]
 +
| Only available on master as of 2018-12-04.
 +
|-
 +
| {{AUR|np2kai-git}}
 
|
 
|
 +
{{ic|~/.config/np2kai<br>
 +
~/.config/xnp2kai}}
 +
| [https://github.com/AZO234/NP2kai/commit/56a1cc2 56a1cc2]
 +
| [https://github.com/AZO234/NP2kai/pull/50]
 +
|
 +
|-
 +
| {{AUR|nteract-bin}}
 +
|
 +
| [https://github.com/nteract/nteract/commit/4593e72 4593e72]
 +
| [https://github.com/nteract/nteract/issues/180] [https://github.com/nteract/nteract/pull/3870]
 +
| [https://github.com/nteract/nteract/issues/4517 does not recognize workarounds for ipython/jupyter]
 
|-
 
|-
 
| [[OfflineIMAP]]
 
| [[OfflineIMAP]]
Line 435: Line 456:
 
| [https://bitbucket.org/opentyrian/opentyrian/commits/8d45ff2 8d45ff2]
 
| [https://bitbucket.org/opentyrian/opentyrian/commits/8d45ff2 8d45ff2]
 
| [https://web.archive.org/web/20140815181350/http://code.google.com/p/opentyrian/issues/detail?id=125]
 
| [https://web.archive.org/web/20140815181350/http://code.google.com/p/opentyrian/issues/detail?id=125]
 +
|
 +
|-
 +
| {{Pkg|pandoc}}
 +
| {{ic|~/.pandoc/}}
 +
| [https://github.com/jgm/pandoc/commit/0bed0ab5a308f5e72a01fa9bee76488556288862 0bed0ab]
 +
| [https://github.com/jgm/pandoc/issues/3582]
 
|
 
|
 
|-
 
|-
Line 445: Line 472:
 
[https://github.com/PCSX2/pcsx2/commit/0a012ae 0a012ae]
 
[https://github.com/PCSX2/pcsx2/commit/0a012ae 0a012ae]
 
| [https://github.com/PCSX2/pcsx2/issues/352] [https://github.com/PCSX2/pcsx2/issues/381]
 
| [https://github.com/PCSX2/pcsx2/issues/352] [https://github.com/PCSX2/pcsx2/issues/381]
 +
|
 +
|-
 +
| [http://pryrepl.org/ Pry]
 +
| {{ic|~/.pryrc<br>~/.pry_history}}
 +
|
 +
[https://github.com/pry/pry/commit/a0be0cc7b2070edff61c0c7f10fa37fce9b730bd a0be0cc7]
 +
[https://github.com/pry/pry/commit/15e1fc929ed84c161abc5afc9be73488a41df397 15e1fc92]
 +
[https://github.com/pry/pry/commit/e9d1be0e17b294318dbb2f70f74a50486cfa044c e9d1be0e]
 +
| [https://github.com/pry/pry/issues/1316]
 
|
 
|
 
|-
 
|-
Line 496: Line 532:
 
~/.pulse-cookie}}
 
~/.pulse-cookie}}
 
|
 
|
[http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=59a8618 59a8618]
+
[https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=59a8618 59a8618]
[http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=87ae830 87ae830]
+
[https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=87ae830 87ae830]
[http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=9ab510a 9ab510a]
+
[https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=9ab510a 9ab510a]
[http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=4c195bc 4c195bc]
+
[https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=4c195bc 4c195bc]
 
| [https://bugzilla.redhat.com/show_bug.cgi?id=845607]
 
| [https://bugzilla.redhat.com/show_bug.cgi?id=845607]
 
|
 
|
Line 507: Line 543:
 
|
 
|
 
|
 
|
 +
|
 +
|-
 +
| {{Pkg|quodlibet}}
 +
| {{ic|~/.quodlibet}}
 +
| 3.10.0
 +
| [https://github.com/quodlibet/quodlibet/issues/138]
 
|
 
|
 
|-
 
|-
Line 540: Line 582:
 
| [https://github.com/mozilla/rr/commit/02e7d41 02e7d41]
 
| [https://github.com/mozilla/rr/commit/02e7d41 02e7d41]
 
| [https://github.com/mozilla/rr/issues/1455]
 
| [https://github.com/mozilla/rr/issues/1455]
 +
|
 +
|-
 +
| [https://rspec.info RSpec]
 +
| {{ic|~/.rspec}}
 +
| [https://github.com/rspec/rspec-core/commit/5e395e2016f1da19475e6db2817eb26dae828c4c 5e395e2]
 +
| [https://github.com/rspec/rspec-core/issues/1773]
 
|
 
|
 
|-
 
|-
Line 546: Line 594:
 
| [https://github.com/rakshasa/rtorrent/commit/6a8d332 6a8d332]
 
| [https://github.com/rakshasa/rtorrent/commit/6a8d332 6a8d332]
 
|
 
|
 +
|
 +
|-
 +
| [https://www.rubocop.org RuboCop]
 +
| {{ic|~/.rubocop.yml}}
 +
| [https://github.com/rubocop-hq/rubocop/commit/6fe5956c177ca369cfaa70bdf748b70020a56bf4 6fe5956]
 +
| [https://github.com/rubocop-hq/rubocop/issues/6662]
 
|
 
|
 
|-
 
|-
Line 558: Line 612:
 
| [https://github.com/snes9xgit/snes9x/commit/93b5f11 93b5f11]
 
| [https://github.com/snes9xgit/snes9x/commit/93b5f11 93b5f11]
 
| [https://github.com/snes9xgit/snes9x/issues/194]
 
| [https://github.com/snes9xgit/snes9x/issues/194]
| By default configuration is blank, is intended that the user fill it at they will (throw the gui or manually) before launch a rom
+
| By default, the configuration file is left blank with intention that the user will fill it at their will (through the gui or manually).
 
|-
 
|-
 
| {{AUR|sublime-text-dev}}
 
| {{AUR|sublime-text-dev}}
Line 594: Line 648:
 
|
 
|
 
|
 
|
 +
|-
 +
| {{Pkg|tig}}
 +
| {{ic|~/.tigrc}}, {{ic|~/.tig_history}}
 +
| [https://github.com/jonas/tig/blob/master/NEWS.adoc#tig-22 2.2]
 +
| [https://github.com/jonas/tig/issues/513]
 +
| {{ic|~/.local/share/tig}} directory must exist, writes to {{ic|~/.tig_history}} otherwise.
 
|-
 
|-
 
| {{AUR|tmuxinator}}
 
| {{AUR|tmuxinator}}
Line 609: Line 669:
 
| {{Pkg|util-linux}}
 
| {{Pkg|util-linux}}
 
|
 
|
| [http://git.kernel.org/cgit/utils/util-linux/util-linux.git/commit/?id=570b321 570b321]
+
| [https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/?id=570b321 570b321]
 
|
 
|
 
|
 
|
Line 619: Line 679:
 
|
 
|
 
|-
 
|-
| {{AUR|vimb}}
+
| {{Pkg|vimb}}
 
|
 
|
 
|
 
|
Line 644: Line 704:
 
| [https://trac.videolan.org/vlc/ticket/1267]
 
| [https://trac.videolan.org/vlc/ticket/1267]
 
|
 
|
 +
|-
 +
| [[Visual Studio Code]]
 +
|
 +
|
 +
|
 +
| Note that extension directory is not moving; see [https://github.com/Microsoft/vscode/issues/3884].
 
|-
 
|-
 
| {{Pkg|warsow}}
 
| {{Pkg|warsow}}
Line 696: Line 762:
 
! Notes
 
! Notes
 
|-
 
|-
| [http://abook.sourceforge.net/ abook]
+
| {{Pkg|abook}}
 
| {{ic|~/.abook}}
 
| {{ic|~/.abook}}
 
|
 
|
 
|
 
|
 
| {{ic|1=$ abook --config "$XDG_CONFIG_HOME"/abook/abookrc --datafile "$XDG_CACHE_HOME"/abook/addressbook}}
 
| {{ic|1=$ abook --config "$XDG_CONFIG_HOME"/abook/abookrc --datafile "$XDG_CACHE_HOME"/abook/addressbook}}
 +
|-
 +
| {{Pkg|ack}}
 +
| {{ic|~/.ackrc}}
 +
|
 +
| [https://github.com/beyondgrep/ack2/issues/516]
 +
| {{ic|1=$ export ACKRC="$XDG_CONFIG_HOME/ack/ackrc"}}
 
|-
 
|-
 
| [[Anki]]
 
| [[Anki]]
Line 743: Line 815:
 
| [https://bugs.launchpad.net/bzr/+bug/195397]
 
| [https://bugs.launchpad.net/bzr/+bug/195397]
 
| Discussion in upstream bug states that bazaar wil use {{ic|~/.config/bazaar}} if it exists. The logfile {{ic|~/.bzr.log}} might still be written.
 
| Discussion in upstream bug states that bazaar wil use {{ic|~/.config/bazaar}} if it exists. The logfile {{ic|~/.bzr.log}} might still be written.
 +
|-
 +
| {{Aur|buchhaltung-git}}
 +
|
 +
{{ic|~/.buchhaltung}}
 +
|
 +
| [https://github.com/johannesgerer/buchhaltung/issues/44]
 +
| {{ic|1=$ export BUCHHALTUNG="$XDG_CONFIG_HOME"/buchhaltung}}
 
|-
 
|-
 
| [[Ruby#Bundler]]
 
| [[Ruby#Bundler]]
Line 750: Line 829:
 
| {{ic|1=$ export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle}}
 
| {{ic|1=$ export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle}}
 
|-
 
|-
| [http://crates.io/ cargo]
+
| {{Pkg|calcurse}}
 +
| {{ic|~/.calcurse}}
 +
|
 +
|
 +
| {{ic|1=$ calcurse -C "$XDG_CONFIG_HOME"/calcurse -D "$XDG_DATA_HOME"/calcurse}}
 +
|-
 +
| [[Rust#Cargo]]
 
| {{ic|~/.cargo}}
 
| {{ic|~/.cargo}}
 
|
 
|
Line 760: Line 845:
 
|
 
|
 
|
 
|
| {{ic|1=$ export CCACHE_DIR="$XDG_CACHE_HOME"/ccache}}
+
| {{ic|1=$ export CCACHE_CONFIGPATH="$XDG_CONFIG_HOME"/ccache.config}}<br>
 +
{{ic|1=$ export CCACHE_DIR="$XDG_CACHE_HOME"/ccache}}
 
|-
 
|-
| [https://github.com/cisco/ChezScheme ChezScheme]
+
| {{AUR|chez-scheme}}
 
| {{ic|~/.chezscheme_history}}
 
| {{ic|~/.chezscheme_history}}
 
|
 
|
Line 778: Line 864:
 
|
 
|
 
|
 
|
| {{ic|1=$ source "$(dircolors "$XDG_CONFIG_HOME"/dircolors)"}}
+
| {{ic|1=$ source $(dircolors "$XDG_CONFIG_HOME"/dircolors)}}
 
|-
 
|-
 
| [http://www.dungeoncrawl.org/ crawl]
 
| [http://www.dungeoncrawl.org/ crawl]
Line 806: Line 892:
 
| {{ic|1=$ export DOCKER_CONFIG="$XDG_CONFIG_HOME"/docker}}
 
| {{ic|1=$ export DOCKER_CONFIG="$XDG_CONFIG_HOME"/docker}}
 
|-
 
|-
| [https://docs.docker.com/machine/overview/ Docker Machine]
+
| {{Pkg|docker-machine}}
 
| {{ic|~/.docker/machine}}
 
| {{ic|~/.docker/machine}}
 
|
 
|
 
|
 
|
 
| {{ic|1=$ export MACHINE_STORAGE_PATH="$XDG_DATA_HOME"/docker-machine}}
 
| {{ic|1=$ export MACHINE_STORAGE_PATH="$XDG_DATA_HOME"/docker-machine}}
 +
|-
 +
| [[DOSBox]]
 +
| {{ic|~/.dosbox/dosbox-0.74-2.conf}}
 +
|
 +
| [https://www.vogons.org/viewtopic.php?t=29599]
 +
| {{ic|1=$ dosbox -conf "$XDG_CONFIG_HOME"/dosbox/dosbox.conf}}
 
|-
 
|-
 
| [[ELinks]]
 
| [[ELinks]]
Line 818: Line 910:
 
| {{ic|1=$ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks}}
 
| {{ic|1=$ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks}}
 
|-
 
|-
| [http://kripken.github.io/emscripten-site/ emscripten]
+
| {{Pkg|emscripten}}
 
|
 
|
 
{{ic|~/.emscripten<br>
 
{{ic|~/.emscripten<br>
Line 832: Line 924:
 
$ emcc --em-config "$XDG_CONFIG_HOME"/emscripten/config --em-cache "$XDG_CACHE_HOME"/emscripten/cache}}
 
$ emcc --em-config "$XDG_CONFIG_HOME"/emscripten/config --em-cache "$XDG_CACHE_HOME"/emscripten/cache}}
 
|-
 
|-
| [https://www.freecadweb.org/ freecad]
+
| {{AUR|freecad}}
 
| {{ic|~/.FreeCAD}}
 
| {{ic|~/.FreeCAD}}
 
|
 
|
 
| [https://www.freecadweb.org/tracker/view.php?id=2956]
 
| [https://www.freecadweb.org/tracker/view.php?id=2956]
 
| {{ic|1=$ freecad -u "$XDG_CONFIG_HOME"/FreeCAD/user.cfg -s "$XDG_CONFIG_HOME"/FreeCAD/system.cfg}}
 
| {{ic|1=$ freecad -u "$XDG_CONFIG_HOME"/FreeCAD/user.cfg -s "$XDG_CONFIG_HOME"/FreeCAD/system.cfg}}
 +
 +
Despite these options, {{AUR|freecad}} will still create the file {{ic|.FreeCAD/cookie}} as the web module has it [https://github.com/FreeCAD/FreeCAD/blob/master/src/Mod/Web/Gui/CookieJar.cpp#L55 hard coded]
 
|-
 
|-
| [http://www.gnu.org/software/gdb/ gdb]
+
| [[GDB]]
 
| {{ic|~/.gdbinit}}
 
| {{ic|~/.gdbinit}}
 
|
 
|
Line 844: Line 938:
 
| {{ic|1=$ gdb -nh -x "$XDG_CONFIG_HOME"/gdb/init}}
 
| {{ic|1=$ gdb -nh -x "$XDG_CONFIG_HOME"/gdb/init}}
 
|-
 
|-
| [https://github.com/get-iplayer/get_iplayer get_iplayer]
+
| {{AUR|get_iplayer}}
 
| {{ic|~/.get_iplayer}}
 
| {{ic|~/.get_iplayer}}
 
|
 
|
Line 856: Line 950:
 
| {{ic|1=$ getmail --rcfile="$XDG_CONFIG_HOME/getmail/getmailrc" --getmaildir="$XDG_DATA_HOME/getmail"}}
 
| {{ic|1=$ getmail --rcfile="$XDG_CONFIG_HOME/getmail/getmailrc" --getmaildir="$XDG_DATA_HOME/getmail"}}
 
|-
 
|-
| [http://guichaz.free.fr/gliv/ gliv]
+
| {{AUR|gliv}}
 
| {{ic|~/.glivrc}}
 
| {{ic|~/.glivrc}}
 
|
 
|
Line 867: Line 961:
 
| [https://bugs.gnupg.org/gnupg/issue1456] [https://bugs.gnupg.org/gnupg/issue1018]
 
| [https://bugs.gnupg.org/gnupg/issue1456] [https://bugs.gnupg.org/gnupg/issue1018]
 
|
 
|
{{ic|1=$ export GNUPGHOME="$XDG_CONFIG_HOME"/gnupg<br>
+
{{ic|1=$ export GNUPGHOME="$XDG_DATA_HOME"/gnupg<br>
$ gpg2 --homedir "$XDG_CONFIG_HOME"/gnupg}}
+
$ gpg2 --homedir "$XDG_DATA_HOME"/gnupg}}
 
|-
 
|-
 
| [[Google Earth]]
 
| [[Google Earth]]
Line 875: Line 969:
 
|
 
|
 
| Some paths can be changed with the {{ic|KMLPath}} and {{ic|CachePath}} options in {{ic|~/.config/Google/GoogleEarthPlus.conf}}
 
| Some paths can be changed with the {{ic|KMLPath}} and {{ic|CachePath}} options in {{ic|~/.config/Google/GoogleEarthPlus.conf}}
 +
|-
 +
| {{Pkg|gopass}}
 +
| {{ic|~/.password-store}}
 +
|
 +
|
 +
| Override settings in {{ic|~/.config/gopass/config.yml}}:
 +
{{hc|~/.config/gopass/config.yml|
 +
root:
 +
path: gpgcli-gitcli-fs+file:///home/<userid>/.config/password-store
 +
}}
 
|-
 
|-
 
| [https://sourceforge.net/projects/gqclient GQ LDAP client]
 
| [https://sourceforge.net/projects/gqclient GQ LDAP client]
Line 887: Line 991:
 
$ mkdir -p "$(dirname "$GQSTATE")"}}
 
$ mkdir -p "$(dirname "$GQSTATE")"}}
 
|-
 
|-
| [https://gradle.org/ gradle]
+
| [[Gradle]]
 
| {{ic|~/.gradle}}
 
| {{ic|~/.gradle}}
 
|
 
|
Line 893: Line 997:
 
| {{ic|1=$ export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle}}
 
| {{ic|1=$ export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle}}
 
|-
 
|-
| [[GTK+]] 1
+
| [[GTK]] 1
 
| {{ic|~/.gtkrc}}
 
| {{ic|~/.gtkrc}}
 
|
 
|
Line 899: Line 1,003:
 
| {{ic|1=$ export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc}}
 
| {{ic|1=$ export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc}}
 
|-
 
|-
| [[GTK+]] 2
+
| [[GTK]] 2
 
| {{ic|~/.gtkrc-2.0}}
 
| {{ic|~/.gtkrc-2.0}}
 
|
 
|
Line 905: Line 1,009:
 
| {{ic|1=$ export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc}}
 
| {{ic|1=$ export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc}}
 
|-
 
|-
| [http://httpie.org httpie]
+
| {{Pkg|hledger}}
 +
| {{ic|~/.hledger.journal}}
 +
|
 +
| [https://github.com/simonmichael/hledger/issues/1081]
 +
| {{ic|1=$ export LEDGER_FILE="$XDG_DATA_HOME"/hledger.journal}}
 +
|-
 +
| {{Pkg|httpie}}
 
| {{ic|~/.httpie}}
 
| {{ic|~/.httpie}}
 
|
 
|
 
| [https://github.com/jakubroztocil/httpie/issues/145]
 
| [https://github.com/jakubroztocil/httpie/issues/145]
 
| {{ic|1=$ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie}}
 
| {{ic|1=$ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie}}
 +
|-
 +
| {{AUR|intellij-idea-ce}}
 +
| {{ic|~/.IntelliJIdea*}}
 +
|
 +
| [https://youtrack.jetbrains.com/issue/IDEA-22407]
 +
| {{bc|1=$ mkdir -p "${XDG_CONFIG_HOME}"/intellij-idea
 +
$ cp /opt/intellij-idea-ce/bin/{idea.properties,idea64.vmoptions} "${XDG_CONFIG_HOME}"/intellij-idea/
 +
$ export IDEA_PROPERTIES="${XDG_CONFIG_HOME}"/intellij-idea/idea.properties
 +
$ export IDEA_VM_OPTIONS="${XDG_CONFIG_HOME}"/intellij-idea/idea.vmoptions}}
 +
{{hc|$XDG_CONFIG_HOME/idea.properties|<nowiki>
 +
# these are hardcoded but you get the idea
 +
idea.config.path=${user.home}/.config/intellij-idea
 +
idea.system.path=${user.home}/.cache/intellij-idea
 +
idea.log.path=${user.home}/.cache/intellij-idea/log
 +
idea.plugins.path=${user.home}/.local/share/intellij-idea/plugins
 +
</nowiki>}}
 
|-
 
|-
 
| [http://ipython.org ipython]/[[jupyter]]
 
| [http://ipython.org ipython]/[[jupyter]]
 
| {{ic|~/.ipython}}
 
| {{ic|~/.ipython}}
 
|
 
|
|
+
| [https://github.com/ipython/ipython/pull/4457 won't fix]
 
|
 
|
 
{{ic|1=$ export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter<br>
 
{{ic|1=$ export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter<br>
Line 939: Line 1,065:
 
| {{ic|1=$ mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc}}
 
| {{ic|1=$ mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc}}
 
|-
 
|-
| [[Java]] (OpenJDK)
+
| [[Java#OpenJDK]]
 
| {{ic|~/.java/.userPrefs}}
 
| {{ic|~/.java/.userPrefs}}
 
|
 
|
 +
| [https://bugzilla.redhat.com/show_bug.cgi?id=1154277]
 +
| {{ic|1=$ export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java}}
 +
|-
 +
| [[ledger]]
 +
| {{ic|~/.ledgerrc}}, {{ic|~/.pricedb}}
 
|
 
|
| {{ic|1=$ export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java}}
+
| [https://github.com/ledger/ledger/issues/1820]
 +
| {{ic|1=$ ledger --init-file "$XDG_CONFIG_HOME"/ledgerrc}}
 
|-
 
|-
| [[core utilities#less|less]]
+
| [[Core utilities|less]]
 
| {{ic|~/.lesshst}}
 
| {{ic|~/.lesshst}}
 
|
 
|
Line 956: Line 1,088:
 
{{ic|1=$ export LESSHISTFILE=-}} can be used to disable this feature.
 
{{ic|1=$ export LESSHISTFILE=-}} can be used to disable this feature.
 
|-
 
|-
| [http://www.videolan.org/developers/libdvdcss.html libdvdcss]
+
| {{Pkg|libdvdcss}}
 
| {{ic|~/.dvdcss}}
 
| {{ic|~/.dvdcss}}
 
|
 
|
Line 962: Line 1,094:
 
| {{ic|1=$ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss}}
 
| {{ic|1=$ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss}}
 
|-
 
|-
| [https://www.x.org/releases/current/doc/libICE/ice.html libice]
+
| {{Pkg|libice}}
 
| {{ic|~/.ICEauthority}}
 
| {{ic|~/.ICEauthority}}
 
|
 
|
| [https://bugs.freedesktop.org/show_bug.cgi?id=49173]
+
| [https://gitlab.freedesktop.org/xorg/lib/libice/issues/2]
 
| {{ic|1=$ export ICEAUTHORITY="$XDG_CACHE_HOME"/ICEauthority}}
 
| {{ic|1=$ export ICEAUTHORITY="$XDG_CACHE_HOME"/ICEauthority}}
 
Make sure {{ic|XDG_CACHE_HOME}} is set beforehand to directory user running [[Xorg]] has write access to.
 
Make sure {{ic|XDG_CACHE_HOME}} is set beforehand to directory user running [[Xorg]] has write access to.
Line 981: Line 1,113:
 
$ export XCOMPOSECACHE="$XDG_CACHE_HOME"/X11/xcompose}}
 
$ export XCOMPOSECACHE="$XDG_CACHE_HOME"/X11/xcompose}}
 
|-
 
|-
| [http://ltrace.org/ ltrace]
+
| {{Pkg|ltrace}}
 
| {{ic|~/.ltrace.conf}}
 
| {{ic|~/.ltrace.conf}}
 
|
 
|
Line 990: Line 1,122:
 
| {{ic|~/.m2}}
 
| {{ic|~/.m2}}
 
|
 
|
|
+
| [https://issues.apache.org/jira/browse/MNG-6603]
 
| {{ic|1=$ mvn -gs "$XDG_CONFIG_HOME"/maven/settings.xml}}
 
| {{ic|1=$ mvn -gs "$XDG_CONFIG_HOME"/maven/settings.xml}}
 
{{hc|[http://maven.apache.org/settings.html settings.xml]|<nowiki><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 
{{hc|[http://maven.apache.org/settings.html settings.xml]|<nowiki><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
Line 1,007: Line 1,139:
 
| {{ic|1=$ export MATHEMATICA_USERBASE="$XDG_CONFIG_HOME"/mathematica}}
 
| {{ic|1=$ export MATHEMATICA_USERBASE="$XDG_CONFIG_HOME"/mathematica}}
 
|-
 
|-
| [http://mednafen.sourceforge.net/ mednafen]
+
| {{Pkg|mednafen}}
 
| {{ic|~/.mednafen}}
 
| {{ic|~/.mednafen}}
 
|
 
|
Line 1,021: Line 1,153:
 
$ mocp -O MOCDir="$XDG_CONFIG_HOME"/moc}}
 
$ mocp -O MOCDir="$XDG_CONFIG_HOME"/moc}}
 
|-
 
|-
| [https://www.jedsoft.org/most/ most]
+
| {{Aur|monero}}
 +
| {{ic|~/.bitmonero}}
 +
|
 +
|
 +
| {{ic|1=$ monerod --data-dir "$XDG_DATA_HOME"/bitmonero}}
 +
|-
 +
| {{Pkg|most}}
 
| {{ic|~/.mostrc}}
 
| {{ic|~/.mostrc}}
 
|
 
|
Line 1,033: Line 1,171:
 
| {{ic|1=$ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer}}
 
| {{ic|1=$ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer}}
 
|-
 
|-
| [[msmtp]]
+
| [[MySQL]]
| {{ic|~/.msmtprc}}
 
|
 
|
 
| {{ic|1=$ msmtp -C "$XDG_CONFIG_HOME"/msmtp/msmtprc}}
 
|-
 
| [[MySQL]]
 
 
| {{ic|~/.mysql_history}}
 
| {{ic|~/.mysql_history}}
 
|
 
|
Line 1,054: Line 1,186:
 
$ export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo}}
 
$ export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo}}
 
|-
 
|-
| [http://www.musicpd.org/clients/ncmpc/ ncmpc]
+
| {{Pkg|ncmpc}}
 
| {{ic|~/.ncmpc}}
 
| {{ic|~/.ncmpc}}
 
|
 
|
Line 1,095: Line 1,227:
 
{{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}}.
 
|-
 
|-
| [https://github.com/NVIDIA/nvidia-settings nvidia-settings]
+
| {{Pkg|nuget}}
 +
| {{ic|~/.nuget/packages}}
 +
|
 +
| [https://docs.microsoft.com/en-us/nuget/consume-packages/managing-the-global-packages-and-cache-folders]
 +
| {{ic|1=$ export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages}}
 +
|-
 +
| [[NVIDIA]]
 +
| {{ic|~/.nv}}
 +
|
 +
|
 +
| Uses XDG_CACHE_HOME if set, otherwise improperly falls back to ~/.nv instead of ~/.cache.
 +
|-
 +
| {{Pkg|nvidia-settings}}
 
| {{ic|~/.nvidia-settings-rc}}
 
| {{ic|~/.nvidia-settings-rc}}
 
|
 
|
Line 1,125: Line 1,269:
 
The {{ic|local_list}} option must be given an absolute path.
 
The {{ic|local_list}} option must be given an absolute path.
 
|-
 
|-
| [http://www.openscad.org/ openscad]
+
| {{Pkg|openscad}}
 
| {{ic|~/.OpenSCAD}}
 
| {{ic|~/.OpenSCAD}}
 
| [https://github.com/openscad/openscad/commit/7c3077b0f 7c3077b0f]
 
| [https://github.com/openscad/openscad/commit/7c3077b0f 7c3077b0f]
Line 1,139: Line 1,283:
 
| Seeding file .rnd's location can be set with RANDFILE environment variable per [https://www.openssl.org/docs/faq.html FAQ].
 
| Seeding file .rnd's location can be set with RANDFILE environment variable per [https://www.openssl.org/docs/faq.html FAQ].
 
|-
 
|-
| [http://www.gnu.org/software/parallel/ GNU parallel]
+
| {{Pkg|parallel}}
 
| {{ic|~/.parallel}}
 
| {{ic|~/.parallel}}
 
| [https://git.savannah.gnu.org/cgit/parallel.git/commit/?id=685018f532f4e2d24b84eb28d5de3d759f0d1af1 20170422]
 
| [https://git.savannah.gnu.org/cgit/parallel.git/commit/?id=685018f532f4e2d24b84eb28d5de3d759f0d1af1 20170422]
Line 1,157: Line 1,301:
 
| {{ic|1=$ pidgin --config="$XDG_DATA_HOME"/purple}}
 
| {{ic|1=$ pidgin --config="$XDG_DATA_HOME"/purple}}
 
|-
 
|-
| [https://www.postgresql.org/ postgresql]
+
| [[PostgreSQL]]
 
|
 
|
 
{{ic|~/.psqlrc<br>
 
{{ic|~/.psqlrc<br>
Line 1,179: Line 1,323:
 
| Very likely generated by the {{ic|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 {{ic|/etc/pulse/default.pa}} or {{ic|"$XDG_CONFIG_HOME"/pulse/default.pa}}.
 
| Very likely generated by the {{ic|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 {{ic|/etc/pulse/default.pa}} or {{ic|"$XDG_CONFIG_HOME"/pulse/default.pa}}.
 
|-
 
|-
| [https://www.pylint.org/ pylint]
+
| {{aur|python-azure-cli}}
| {{ic|~/.pylint.d}}
+
| {{ic|~/.azure}}
 +
|
 
|
 
|
| [https://github.com/PyCQA/pylint/issues/1364]<sup>won't
+
| {{ic|1=$ export AZURE_CONFIG_DIR=$XDG_DATA_HOME/azure}}
| {{ic|1=$ export PYLINTHOME="$XDG_CACHE_HOME"/pylint}}
 
 
|-
 
|-
| [https://pypi.python.org/pypi/setuptools python-setuptools]
+
| {{Pkg|python-setuptools}}
 
| {{ic|~/.python-eggs}}
 
| {{ic|~/.python-eggs}}
 
|
 
|
 
|
 
|
 
| {{ic|1=$ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs}}
 
| {{ic|1=$ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs}}
 +
|-
 +
| {{Pkg|python-pylint}}
 +
| {{ic|~/.pylint.d}}
 +
|
 +
| [https://github.com/PyCQA/pylint/issues/1364 won't fix]
 +
| {{ic|1=$ export PYLINTHOME="$XDG_CACHE_HOME"/pylint}}
 +
|-
 +
| {{Pkg|racket}}
 +
| {{ic|~/.racketrc<br>
 +
~/.racket}}
 +
|
 +
| [https://github.com/racket/racket/issues/2740]
 +
| {{ic|1=$ export PLTUSERHOME="$XDG_DATA_HOME"/racket}}
 
|-
 
|-
 
| [[readline]]
 
| [[readline]]
Line 1,197: Line 1,354:
 
| {{ic|1=$ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc}}
 
| {{ic|1=$ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc}}
 
|-
 
|-
| [http://utopia.knoware.nl/~hlub/uck/rlwrap/ rlwrap]
+
| {{Pkg|rlwrap}}
 
| {{ic|~/.*_history}}
 
| {{ic|~/.*_history}}
 
|
 
|
Line 1,203: Line 1,360:
 
| {{ic|1=$ export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap}}
 
| {{ic|1=$ export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap}}
 
|-
 
|-
| [https://rubygems.org/ RubyGems]
+
| [[Ruby#RubyGems]]
 
| {{ic|~/.gem}}
 
| {{ic|~/.gem}}
 
|
 
|
Line 1,210: Line 1,367:
 
{{ic|1=$ export GEM_HOME="$XDG_DATA_HOME"/gem<br>
 
{{ic|1=$ export GEM_HOME="$XDG_DATA_HOME"/gem<br>
 
$ export GEM_SPEC_CACHE="$XDG_CACHE_HOME"/gem}}
 
$ export GEM_SPEC_CACHE="$XDG_CACHE_HOME"/gem}}
 +
Make sure to remove {{ic|gem: --user-install}} from {{ic|/etc/gemrc}}
 
|-
 
|-
| [https://www.rustup.rs/ rustup]
+
| [[Rust#Rustup]]
 
| {{ic|~/.rustup}}
 
| {{ic|~/.rustup}}
 
|
 
|
Line 1,217: Line 1,375:
 
| {{ic|1=$ export RUSTUP_HOME="$XDG_DATA_HOME"/rustup}}
 
| {{ic|1=$ export RUSTUP_HOME="$XDG_DATA_HOME"/rustup}}
 
|-
 
|-
| [http://www.scala-sbt.org/ sbt]
+
| {{Pkg|sbt}}
 
| {{ic|~/.sbt}}
 
| {{ic|~/.sbt}}
 
{{ic|~/.ivy2}}
 
{{ic|~/.ivy2}}
Line 1,224: Line 1,382:
 
| {{ic|1=$ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt}} (beware [https://github.com/sbt/sbt/issues/3598])
 
| {{ic|1=$ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt}} (beware [https://github.com/sbt/sbt/issues/3598])
 
|-
 
|-
| [[screen]]
+
| [[GNU Screen]]
 
| {{ic|~/.screenrc}}
 
| {{ic|~/.screenrc}}
 
|
 
|
Line 1,230: Line 1,388:
 
| {{ic|1=$ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc}}
 
| {{ic|1=$ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc}}
 
|-
 
|-
| [https://www.stackage.org/ stack]
+
| [[Haskell#Stack]]
 
| {{ic|~/.stack}}
 
| {{ic|~/.stack}}
 
|
 
|
Line 1,252: Line 1,410:
 
$ export TASKRC="$XDG_CONFIG_HOME"/task/taskrc}}
 
$ export TASKRC="$XDG_CONFIG_HOME"/task/taskrc}}
 
|-
 
|-
| [http://jonas.nitro.dk/tig/ tig]
+
| {{AUR|tiptop}}
| {{ic|~/.tigrc}}
 
|
 
|
 
| {{ic|1=$ export TIGRC_USER="$XDG_CONFIG_HOME"/tig/tigrc}}
 
|-
 
| [http://tiptop.gforge.inria.fr/ tiptop]
 
 
| {{ic|~/.tiptoprc}}
 
| {{ic|~/.tiptoprc}}
 
|
 
|
Line 1,268: Line 1,420:
 
| {{ic|~/.tmux.conf}}
 
| {{ic|~/.tmux.conf}}
 
|
 
|
| [http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/6013]{{Dead link|2017|12|29}} [http://sourceforge.net/p/tmux/mailman/message/30619546/]{{Dead link|2017|12|29}}
+
| [https://github.com/tmux/tmux/issues/142]
 
| {{ic|1=$ tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf}}
 
| {{ic|1=$ tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf}}
  
 
{{ic|1=$ export TMUX_TMPDIR="$XDG_RUNTIME_DIR"}}
 
{{ic|1=$ export TMUX_TMPDIR="$XDG_RUNTIME_DIR"}}
 
|-
 
|-
| [https://github.com/bengardner/uncrustify uncrustify]
+
| {{Pkg|uncrustify}}
 
| {{ic|~/.uncrustify.cfg}}
 
| {{ic|~/.uncrustify.cfg}}
 
|
 
|
Line 1,304: Line 1,456:
 
| {{ic|~/.weechat}}
 
| {{ic|~/.weechat}}
 
|
 
|
| [http://savannah.nongnu.org/task/?10934]
+
| [http://savannah.nongnu.org/task/?10934] [https://github.com/ipython/ipython/pull/4457]
 
|
 
|
 
{{ic|1=$ export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat<br>
 
{{ic|1=$ export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat<br>
Line 1,329: Line 1,481:
 
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/wineprefixes<br>
 
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/wineprefixes<br>
 
$ export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default}}
 
$ export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default}}
 +
|-
 +
| [[xbindkeys]]
 +
| {{ic|~/.xbindkeysrc}}
 +
|
 +
|
 +
| {{ic|1=$ xbindkeys -f "$XDG_CONFIG_HOME"/xbindkeys/config}}
 
|-
 
|-
 
| {{Pkg|xorg-xauth}}
 
| {{Pkg|xorg-xauth}}
Line 1,341: Line 1,499:
 
~/.xserverrc}}
 
~/.xserverrc}}
 
|
 
|
|
+
| [https://gitlab.freedesktop.org/xorg/app/xinit/issues/14]
 
|
 
|
 
{{ic|1=$ export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc<br>
 
{{ic|1=$ export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc<br>
Line 1,348: Line 1,506:
 
Note that these variables are respected by ''xinit'', but not by ''startx''. Instead, specify the filename as an argument:
 
Note that these variables are respected by ''xinit'', but not by ''startx''. Instead, specify the filename as an argument:
  
{{ic|1=$ startx "$XDG_CONFIG_HOME/X11/xinitrc" -- vt1}}
+
{{ic|1=$ startx "$XDG_CONFIG_HOME/X11/xinitrc" -- "$XDG_CONFIG_HOME/X11/xserverrc" vt1}}
 
|-
 
|-
 
| {{Pkg|xorg-xrdb}}
 
| {{Pkg|xorg-xrdb}}
Line 1,356: Line 1,514:
 
|
 
|
 
|
 
|
| 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 [https://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}}.
 +
|-
 +
| {{Pkg|z}}
 +
|
 +
{{ic|~/.z}}
 +
|
 +
| [https://github.com/rupa/z/issues/267]
 +
| {{ic|1=$ export _Z_DATA="$XDG_DATA_HOME/z"}}
 
|}
 
|}
  
Line 1,398: Line 1,563:
 
| {{ic|~/.screenlayout}}
 
| {{ic|~/.screenlayout}}
 
|
 
|
 +
|
 +
|-
 +
| [[Arduino]]
 +
|
 +
{{ic|~/.arduino15<br>
 +
~/.jssc}}
 +
| [https://github.com/arduino/Arduino/issues/3915 won't fix]
 
|
 
|
 
|-
 
|-
Line 1,409: Line 1,581:
 
|
 
|
 
|
 
|
 +
|-
 +
| [[Bash]]
 +
|
 +
{{ic|~/.bashrc<br>
 +
~/.bash_history<br>
 +
~/.bash_profile<br>
 +
~/.bash_login<br>
 +
~/.bash_logout}}
 +
| [http://savannah.gnu.org/support/?108134 won't fix]
 +
| {{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/bash/history}}
 +
A specified {{ic|bashrc}} can be sourced from {{ic|/etc/bashrc}}.
 +
 +
Specify {{ic|--init-file <file>}} as an alternative to {{ic|~/.bashrc}} for interactive shells.
 
|-
 
|-
 
| [https://www.haskell.org/cabal/ cabal]
 
| [https://www.haskell.org/cabal/ cabal]
Line 1,420: Line 1,605:
 
|
 
|
 
|-
 
|-
| {{pkg|cmake}}
+
| {{Pkg|cmake}}
 
| {{ic|~/.cmake/}}
 
| {{ic|~/.cmake/}}
 
|
 
|
 
| Used for the user package registry {{ic|~/.cmake/packages/<package>}}, detailed in {{man|7|cmake-packages|User Package Registry}} and [https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Package-Registry the Package registry wiki page]. Looks like it's hardcoded, for example in [https://gitlab.kitware.com/cmake/cmake/blob/v3.12.1/Source/cmFindPackageCommand.cxx#L1221 cmFindPackageCommand.cxx].
 
| Used for the user package registry {{ic|~/.cmake/packages/<package>}}, detailed in {{man|7|cmake-packages|User Package Registry}} and [https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Package-Registry the Package registry wiki page]. Looks like it's hardcoded, for example in [https://gitlab.kitware.com/cmake/cmake/blob/v3.12.1/Source/cmFindPackageCommand.cxx#L1221 cmFindPackageCommand.cxx].
 +
|-
 +
| [[Cinnamon]]
 +
| {{ic|~/.cinnamon/}}
 +
| [https://github.com/linuxmint/Cinnamon/issues/7807]
 +
|
 
|-
 
|-
 
| {{AUR|cryptomator}}
 
| {{AUR|cryptomator}}
 
| {{ic|~/.Cryptomator}}
 
| {{ic|~/.Cryptomator}}
 
| [https://github.com/cryptomator/cryptomator/issues/710]
 
| [https://github.com/cryptomator/cryptomator/issues/710]
 +
|
 +
|-
 +
| [[CUPS]]
 +
| {{ic|~/.cups/}}
 +
| [https://github.com/apple/cups/issues/4243 won't fix]
 
|
 
|
 
|-
 
|-
Line 1,437: Line 1,632:
 
| [[dbus]]
 
| [[dbus]]
 
| {{ic|~/.dbus/}}
 
| {{ic|~/.dbus/}}
| [https://bugs.freedesktop.org/show_bug.cgi?id=35887]
+
| [https://gitlab.freedesktop.org/dbus/dbus/issues/46]
 
| This should be avoidable with kdbus [citation needed].
 
| This should be avoidable with kdbus [citation needed].
 +
|-
 +
| {{Pkg|devede}}
 +
| {{ic|~/.devedeng}}
 +
|
 +
| Hardcoded [https://gitlab.com/rastersoft/devedeng/blob/f0893b3ff7b14723bd148db35bdfe2d284156d19/src/devedeng/configuration_data.py#L111 here]
 
|-
 
|-
 
| [https://wiki.gnome.org/Apps/Dia Dia]
 
| [https://wiki.gnome.org/Apps/Dia Dia]
Line 1,445: Line 1,645:
 
|
 
|
 
|-
 
|-
| [[eclipse]]
+
| {{Pkg|dotnet-sdk}}
 +
| {{ic|~/.dotnet/}}
 +
| [https://github.com/dotnet/cli/issues/7569]
 +
|
 +
|-
 +
| [[Eclipse]]
 
| {{ic|~/.eclipse/}}
 
| {{ic|~/.eclipse/}}
 
| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=200809]
 
| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=200809]
 
| Option {{ic|1=-Dosgi.configuration.area=@user.home/.config/..}} overrides but must be added to {{ic|"$ECLIPSE_HOME"/eclipse.ini"}} rather than command line which means you must have write access to {{ic|$ECLIPSE_HOME}}. (Arch Linux hard-codes {{ic|$ECLIPSE_HOME}} in {{ic|/usr/bin/eclipse}})
 
| Option {{ic|1=-Dosgi.configuration.area=@user.home/.config/..}} overrides but must be added to {{ic|"$ECLIPSE_HOME"/eclipse.ini"}} rather than command line which means you must have write access to {{ic|$ECLIPSE_HOME}}. (Arch Linux hard-codes {{ic|$ECLIPSE_HOME}} in {{ic|/usr/bin/eclipse}})
 
|-
 
|-
| [https://www.gnu.org/software/emacs/ emacs]
+
| [[Emacs]]
 
|
 
|
 
{{ic|~/.emacs<br>
 
{{ic|~/.emacs<br>
Line 1,465: Line 1,670:
 
| {{ic|~/.mozilla/}}
 
| {{ic|~/.mozilla/}}
 
| [https://bugzil.la/259356]
 
| [https://bugzil.la/259356]
 +
|
 +
|-
 +
| [[Flatpak]]
 +
| {{ic|~/.var/}}
 +
| [https://github.com/flatpak/flatpak/issues/46] [https://github.com/flatpak/flatpak.github.io/issues/191] [https://github.com/flatpak/flatpak/issues/1651 won't fix]
 
|
 
|
 
|-
 
|-
Line 1,470: Line 1,680:
 
| {{ic|~/.ghc}}
 
| {{ic|~/.ghc}}
 
| [https://ghc.haskell.org/trac/ghc/ticket/6077]
 
| [https://ghc.haskell.org/trac/ghc/ticket/6077]
 +
|
 +
|-
 +
| {{Aur|ghidra}}
 +
|
 +
| [https://github.com/NationalSecurityAgency/ghidra/issues/908]
 
|
 
|
 
|-
 
|-
Line 1,494: Line 1,709:
 
| {{Pkg|hplip}}
 
| {{Pkg|hplip}}
 
| {{ic|~/.hplip/}}
 
| {{ic|~/.hplip/}}
| https://bugs.launchpad.net/hplip/+bug/307152
+
| [https://bugs.launchpad.net/hplip/+bug/307152]
 +
|
 
|-
 
|-
 
| [http://www.idris-lang.org/ idris]
 
| [http://www.idris-lang.org/ idris]
Line 1,501: Line 1,717:
 
|
 
|
 
|-
 
|-
| [[Java]] (OpenJDK)
+
| [[Java]] OpenJDK
| {{ic|~/.java/fonts}}, {{ic|~/.java/webview}}<sup>JavaFX
+
| {{ic|~/.java/fonts}}
| [https://bugzilla.redhat.com/show_bug.cgi?id=1154277]<sup>RedHat
+
| [https://bugzilla.redhat.com/show_bug.cgi?id=1154277]
 +
|
 +
|-
 +
| [[Java]] OpenJFX
 +
| {{ic|~/.java/webview}}
 +
|
 
|
 
|
 
|-
 
|-
Line 1,532: Line 1,753:
 
| History can be moved by using {{ic|rlwrap mathomatic -r}} with the {{ic|RLWRAP_HOME}} environment set appropriately.
 
| History can be moved by using {{ic|rlwrap mathomatic -r}} with the {{ic|RLWRAP_HOME}} environment set appropriately.
 
|-
 
|-
| [https://minecraft.net/ Minecraft]
+
| [[Minecraft]]
 
| {{ic|~/.minecraft/}}
 
| {{ic|~/.minecraft/}}
 
| [https://bugs.mojang.com/browse/MCL-2563]
 
| [https://bugs.mojang.com/browse/MCL-2563]
 +
|
 +
|-
 +
| [[Minetest]]
 +
| {{ic|~/.minetest/}}
 +
| [https://github.com/minetest/minetest/issues/864 won't fix] [https://github.com/minetest/minetest/issues/8151]
 
|
 
|
 
|-
 
|-
Line 1,542: Line 1,768:
 
~/.dbshell}}
 
~/.dbshell}}
 
| [https://jira.mongodb.org/browse/DOCS-5652?jql=text%20~%20%22.mongorc.js%22]
 
| [https://jira.mongodb.org/browse/DOCS-5652?jql=text%20~%20%22.mongorc.js%22]
| [http://stackoverflow.com/a/22349050/4200039 This Stack Overflow thread] suggests a partial workaround using command-line switch {{ic|--norc}}.
+
| [https://stackoverflow.com/questions/22348604/the-mongorc-js-is-not-found-but-there-is-one/22349050#22349050 This Stack Overflow thread] suggests a partial workaround using command-line switch {{ic|--norc}}.
 +
|-
 +
| [http://0ldsk00l.ca/nestopia/ Nestopia UE]
 +
| {{ic|~/.nestopia/}}
 +
| [https://github.com/0ldsk00l/nestopia/pull/292 won't fix]
 +
|
 
|-
 
|-
 
|
 
|
Line 1,549: Line 1,780:
 
| 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.
 
|-
 
|-
| [https://github.com/nodejs/node-gyp node-gyp]
+
| [[Networkmanager-openvpn]]
| {{ic|~/.node-gyp}}
+
| {{ic|~/.cert/nm-openvpn}}
| [https://github.com/nodejs/node-gyp/issues/175] [https://github.com/nodejs/node-gyp/issues/21] [https://github.com/nodejs/node-gyp/issues/1124]
+
| [https://gitlab.gnome.org/GNOME/NetworkManager-openvpn/issues/35]
| Discussion seems as though partial support may soon be added.
+
|
 
|-
 
|-
 
| [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS NSS]
 
| [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS NSS]
Line 1,558: Line 1,789:
 
| [https://bugzilla.mozilla.org/show_bug.cgi?id=818686]
 
| [https://bugzilla.mozilla.org/show_bug.cgi?id=818686]
 
|
 
|
 +
|-
 +
| [[OpenSSH]]
 +
| {{ic|~/.ssh}}
 +
| [https://bugzilla.mindrot.org/show_bug.cgi?id=2050 won't fix]
 +
| Assumed to be present by many ssh daemons and clients such as DropBear and OpenSSH.
 
|-
 
|-
 
| [https://www.palemoon.org/ palemoon]
 
| [https://www.palemoon.org/ palemoon]
Line 1,563: Line 1,799:
 
| [https://forum.palemoon.org/viewtopic.php?f=5&t=9639]
 
| [https://forum.palemoon.org/viewtopic.php?f=5&t=9639]
 
|
 
|
 +
|-
 +
| {{AUR|parsec-bin}}
 +
| {{ic|~/.parsec}}
 +
|
 +
|
 +
|-
 +
| {{AUR|pcsxr}}
 +
| {{ic|~/.pcsxr}}
 +
|
 +
| A {{ic|-cfg}} flag exists, but can only be set relative to {{ic|~/.pcsxr}}.
 
|-
 
|-
 
| [https://perf.wiki.kernel.org/index.php/Main_Page perf]
 
| [https://perf.wiki.kernel.org/index.php/Main_Page perf]
Line 1,581: Line 1,827:
 
| [https://doc.qt.io/qt-5/qtdesigner-manual.html Qt Designer]
 
| [https://doc.qt.io/qt-5/qtdesigner-manual.html Qt Designer]
 
| {{ic|~/.designer}}
 
| {{ic|~/.designer}}
|
 
|
 
|-
 
| [https://quodlibet.readthedocs.io/en/latest/ Quod Libet]
 
| {{ic|~/.quodlibet}}
 
| [https://github.com/quodlibet/quodlibet/issues/138]
 
|
 
|-
 
| [https://racket-lang.org/ racket]
 
| {{ic|~/.racketrc}}
 
 
|
 
|
 
|
 
|
Line 1,614: Line 1,850:
 
| {{ic|scanimage}} creates a {{ic|.cal}} file there
 
| {{ic|scanimage}} creates a {{ic|.cal}} file there
 
|-
 
|-
| [https://www.scribus.net/ Scribus]
+
| {{Pkg|scribus}}
 
| {{ic|~/.scribus}}
 
| {{ic|~/.scribus}}
 
|
 
|
 
|
 
|
 +
|-
 +
| {{Pkg|sdcv}}
 +
| {{ic|~/.stardict/}}
 +
| [https://github.com/Dushistov/sdcv/issues/51]
 +
| Only workaround is modifying {{ic|HOME}}
 
|-
 
|-
 
| [http://www.seamonkey-project.org/ SeaMonkey]
 
| [http://www.seamonkey-project.org/ SeaMonkey]
Line 1,623: Line 1,864:
 
| [https://bugzil.la/726939]
 
| [https://bugzil.la/726939]
 
|
 
|
 +
|-
 +
| {{Pkg|simplescreenrecorder}}
 +
| {{ic|~/.ssr/}}
 +
| [https://github.com/MaartenBaert/ssr/issues/407]
 +
| Author seems against this feature.
 
|-
 
|-
 
| [https://www.gnu.org/software/solfege/solfege.html Solfege]
 
| [https://www.gnu.org/software/solfege/solfege.html Solfege]
Line 1,630: Line 1,876:
 
~/lessonfiles}}
 
~/lessonfiles}}
 
| [https://savannah.gnu.org/bugs/index.php?50251]
 
| [https://savannah.gnu.org/bugs/index.php?50251]
 +
|
 +
|-
 +
| [https://spacemacs.org/ spacemacs]
 +
|
 +
{{ic|~/.spacemacs<br>
 +
~/.spacemacs.d}}
 +
| [https://github.com/syl20bnr/spacemacs/issues/3589]
 
|
 
|
 
|-
 
|-
Line 1,646: Line 1,899:
 
{{ic|~/.sqlite_history<br>
 
{{ic|~/.sqlite_history<br>
 
~/.sqliterc}}
 
~/.sqliterc}}
| [https://unix.stackexchange.com/questions/306890/change-location-of-sqlite-history-file][http://sqlite.1065341.n5.nabble.com/Customizing-the-location-of-the-sqlite-history-td87055.html]
+
| [https://www.sqlite.org/src/info/696e82f7c82d1720]
| {{ic|$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc}}
+
| {{ic|1=$ export SQLITE_HISTORY=$XDG_DATA_HOME/sqlite_history<br>
 +
$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc}}
 
|-
 
|-
 
| [[Steam]]
 
| [[Steam]]
Line 1,687: Line 1,941:
 
~/.vimrc<br>
 
~/.vimrc<br>
 
~/.viminfo}}
 
~/.viminfo}}
|
+
| [https://github.com/vim/vim/issues/2034]
 
| Since [https://github.com/vim/vim/commit/6a459902592e2a4ba68 7.3.1178] vim will search for {{ic|~/.vim/vimrc}} if {{ic|~/.vimrc}} is not found.
 
| Since [https://github.com/vim/vim/commit/6a459902592e2a4ba68 7.3.1178] vim will search for {{ic|~/.vim/vimrc}} if {{ic|~/.vimrc}} is not found.
  
{{ic|1=<nowiki>$ mkdir -p "$XDG_CACHE_HOME"/vim/{undo,swap,backup}</nowiki>}}
+
{{ic|1=<nowiki>$ mkdir -p "$XDG_DATA_HOME"/vim/{undo,swap,backup}</nowiki>}}
  
 
{{hc|"$XDG_CONFIG_HOME"/vim/vimrc|
 
{{hc|"$XDG_CONFIG_HOME"/vim/vimrc|
set undodir&#61;$XDG_CACHE_HOME/vim/undo
+
set undodir&#61;$XDG_DATA_HOME/vim/undo
set directory&#61;$XDG_CACHE_HOME/vim/swap
+
set directory&#61;$XDG_DATA_HOME/vim/swap
set backupdir&#61;$XDG_CACHE_HOME/vim/backup
+
set backupdir&#61;$XDG_DATA_HOME/vim/backup
set viminfo+&#61;'1000,n$XDG_CACHE_HOME/vim/viminfo
+
set viminfo+&#61;'1000,n$XDG_DATA_HOME/vim/viminfo
 
set runtimepath&#61;$XDG_CONFIG_HOME/vim,$VIMRUNTIME,$XDG_CONFIG_HOME/vim/after
 
set runtimepath&#61;$XDG_CONFIG_HOME/vim,$VIMRUNTIME,$XDG_CONFIG_HOME/vim/after
 
}}
 
}}
Line 1,726: Line 1,980:
 
| {{ic|~/.gnome}}
 
| {{ic|~/.gnome}}
 
| [https://bugs.freedesktop.org/show_bug.cgi?id=90775]
 
| [https://bugs.freedesktop.org/show_bug.cgi?id=90775]
| For some reason the script {{ic|xdg-desktop-menu}} hard-codes {{ic|gnome_user_dir&#61;"$HOME/.gnome/apps"}}.  This is used by [[chromium]] amoung others.
+
| For some reason the script {{ic|xdg-desktop-menu}} hard-codes {{ic|gnome_user_dir&#61;"$HOME/.gnome/apps"}}.  This is used by [[chromium]] among others.
 
|-
 
|-
 
| [https://opensource.conformal.com/wiki/xombrero xombrero]
 
| [https://opensource.conformal.com/wiki/xombrero xombrero]
Line 1,732: Line 1,986:
 
| [https://github.com/conformal/xombrero/issues/74]
 
| [https://github.com/conformal/xombrero/issues/74]
 
|
 
|
 +
|-
 +
| [https://yardoc.org YARD]
 +
| {{ic|~/.yard}}
 +
| [https://github.com/lsegal/yard/issues/1230]
 +
| Would accept Pull Request if anyone want to implement it.
 
|-
 
|-
 
| [https://nmap.org/zenmap/ zenmap] {{Pkg|nmap}}
 
| [https://nmap.org/zenmap/ zenmap] {{Pkg|nmap}}
Line 1,745: Line 2,004:
 
~/.zlogin<br>
 
~/.zlogin<br>
 
~/.zlogout<br>
 
~/.zlogout<br>
~/.histfile}}
+
~/.histfile<br>
 +
~/.zcompdump}}
 
| [http://www.zsh.org/mla/workers/2013/msg00692.html]
 
| [http://www.zsh.org/mla/workers/2013/msg00692.html]
 
| Consider exporting {{ic|1=ZDOTDIR=$HOME/.config/zsh}} in {{ic|~/.zshenv}} (this is hardcoded due to the bootstrap problem).  You could also add this to {{ic|/etc/zsh/zshenv}} and avoid the need for any dotfiles in your {{ic|HOME}}.  Doing this however requires root privilege which may not be viable and is system-wide.
 
| Consider exporting {{ic|1=ZDOTDIR=$HOME/.config/zsh}} in {{ic|~/.zshenv}} (this is hardcoded due to the bootstrap problem).  You could also add this to {{ic|/etc/zsh/zshenv}} and avoid the need for any dotfiles in your {{ic|HOME}}.  Doing this however requires root privilege which may not be viable and is system-wide.
  
 
{{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/zsh/history}}
 
{{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/zsh/history}}
|}
 
  
==== Won't fix ====
+
{{ic| $ compinit -d $XDG_CACHE_HOME/zsh/zcompdump-$ZSH_VERSION}} [https://unix.stackexchange.com/questions/391641/separate-path-for-zcompdump-files] /!\ The folder needs to exist
  
 
{| class="wikitable sortable" style="width: 100%"
 
! Application
 
! Legacy Path
 
! Discussion
 
! Notes
 
|-
 
|-
 
| [[Arduino]]
 
|
 
{{ic|~/.arduino15<br>
 
~/.jssc}}
 
| [https://github.com/arduino/Arduino/issues/3915]
 
|
 
|-
 
| [[bash]]
 
|
 
{{ic|~/.bashrc<br>
 
~/.bash_history<br>
 
~/.bash_profile<br>
 
~/.bash_login<br>
 
~/.bash_logout}}
 
| [http://savannah.gnu.org/support/?108134]
 
| {{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/bash/history}}
 
A specified {{ic|bashrc}} can be sourced from {{ic|/etc/bashrc}}.
 
 
Specify {{ic|--init-file <file>}} as an alternative to {{ic|~/.bashrc}} for interactive shells.
 
|-
 
| [[CUPS]]
 
| {{ic|~/.cups/}}
 
| [http://www.cups.org/str.php?L4243]
 
|
 
|-
 
| [[Flatpak]]
 
| {{ic|~/.var/}}
 
| [https://github.com/flatpak/flatpak/issues/46] [https://github.com/flatpak/flatpak.github.io/issues/191] [https://github.com/flatpak/flatpak/issues/1651]
 
|
 
|-
 
| [[Minetest]]
 
| {{ic|~/.minetest/}}
 
| [https://github.com/minetest/minetest/issues/864]
 
|
 
|-
 
| [https://www.openssh.com/ OpenSSH]
 
| {{ic|~/.ssh}}
 
| [https://bugzilla.mindrot.org/show_bug.cgi?id=2050]
 
| Assumed to be present by many ssh daemons and clients such as DropBear and OpenSSH.
 
|-
 
| [http://0ldsk00l.ca/nestopia/ Nestopia UE]
 
| {{ic|~/.nestopia/}}
 
| [https://github.com/0ldsk00l/nestopia/pull/292]
 
|
 
 
|}
 
|}
  
Line 1,832: Line 2,039:
 
; Rust
 
; Rust
 
: [https://github.com/soc/directories-rs directories-rs]
 
: [https://github.com/soc/directories-rs directories-rs]
 +
: [https://github.com/whitequark/rust-xdg rust-xdg]
  
 
; Python
 
; Python
: [http://freedesktop.org/wiki/Software/pyxdg/ pyxdg]
+
: [https://freedesktop.org/wiki/Software/pyxdg/ pyxdg]
  
 
; Vala
 
; Vala
Line 1,844: Line 2,052:
 
* [https://wiki.gnome.org/Initiatives/GnomeGoals/XDGConfigFolders GNOME Goal: XDG Base Directory Specification Usage]
 
* [https://wiki.gnome.org/Initiatives/GnomeGoals/XDGConfigFolders GNOME Goal: XDG Base Directory Specification Usage]
 
* [https://plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp Rob Pike: "Dotfiles" being hidden is a UNIXv2 mistake].
 
* [https://plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp Rob Pike: "Dotfiles" being hidden is a UNIXv2 mistake].
* [http://www.freedesktop.org/software/systemd/man/systemd-path.html systemd-path(1)]
+
* [https://www.freedesktop.org/software/systemd/man/systemd-path.html systemd-path(1)]
* [http://www.freedesktop.org/software/systemd/man/file-hierarchy.html file-hierarchy(7)]
+
* [https://www.freedesktop.org/software/systemd/man/file-hierarchy.html file-hierarchy(7)]
 
* [https://github.com/grawity/dotfiles/blob/master/.dotfiles.notes Grawity's notes on dotfiles].
 
* [https://github.com/grawity/dotfiles/blob/master/.dotfiles.notes Grawity's notes on dotfiles].
 
* [https://github.com/grawity/dotfiles/blob/master/.environ.notes Grawity's notes on environment variables].
 
* [https://github.com/grawity/dotfiles/blob/master/.environ.notes Grawity's notes on environment variables].
 
* [https://ploum.net/207-modify-your-application-to-use-xdg-folders/ ploum.net: Modify Your Application to use XDG Folders].
 
* [https://ploum.net/207-modify-your-application-to-use-xdg-folders/ ploum.net: Modify Your Application to use XDG Folders].
 +
* The [https://pcgamingwiki.com/wiki/Home PCGamingWiki] attempts to document whether or not Linux PC games follow the XDG Base Directory Specification.

Latest revision as of 21:53, 9 September 2019

This article summarizes the XDG Base Directory specification in #Specification and tracks software support in #Support.

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 according to the specification.

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.

Support

This section 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.

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 either a link to an internal article, a Template:Pkg or a Template:AUR.
  • 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.

Supported

Application Legacy Path Supported Since Discussion Notes
aerc-gitAUR
antimicroAUR ~/.antimicro edba864 [1]
aria2 ~/.aria2 8bc1d37 [2]
asunder

~/.asunder
~/.asunder_album_artist
~/.asunder_album_genre
~/.asunder_album_title

2.9.0 [3] Uses XDG_CONFIG_HOME/asunder/asunder for ~/.asunder and XDG_CACHE_HOME/asunder/asunder_album_... for the other 3 files. Legacy paths are not removed after migration, they have to be deleted manually.
binwalk ~/.binwalk 2051757 [4] $XDG_CONFIG_HOME/binwalk

Supported only in Git master branch, there's no updated stable release yet.

Blender ~/.blender 4293f47 [5]
calibre
Chromium ~/.chromium 23057

[6] [7]

citra-gitAUR ~/.citra-emu f7c3193 [8]
Composer ~/.composer 1.0.0-beta1 [9]
d-feet ~/.d-feet 7f6104b
dconf
Dolphin emulator ~/.dolphin-emu a498c68 [10]
dr14_tmeterAUR 7e777ca [11] XDG_CONFIG_HOME/dr14tmeter/
dunst 78b6e2b [12]
dwb
elixir ~/.mix afaf889 [13]
fish
fontconfig

~/.fontconfig
~/.fonts

8c255fb Use "$XDG_DATA_HOME"/fonts to store fonts instead.
fontforge

~/.FontForge
~/.PfaEdit

e4c2cc7

[14] [15]

freerdp ~/.freerdp edf6e72
Gajim ~/.gajim 3e777ea [16]
gconf ~/.gconf fc28caa [17]
GIMP

~/.gimp-x.y
~/.thumbnails

60e0cfe 483505f

[18] [19]

Git ~/.gitconfig 0d94427
GStreamer ~/.gstreamer-0.10 4e36f93 [20]
GTK 3
htop ~/.htoprc 93233a6
i3 ~/.i3 7c130fb
i3status ~/.i3status.conf c3f7fc4
imagemagick
Inkscape ~/.inkscape 0.47 [21]
latexmk (in texlive-core) ~/.latexmkrc
lftp ~/.lftp 21dc400 [22]
lgogdownloaderAUR ~/.gogdownloader d430af6 [23]
LibreOffice

a6f56f7 25bd2ee

[24]
Streamlink ~/.livestreamerrc ea80591 [25]
llpp 3ab86f0 Currently llpp places the configuration directly under XDG_CONFIG_HOME instead of creating a directory.
mc ~/.mc

1b99570 0b71156 ce401d7

[26]
Mercurial ~/.hgrc

3540200 4.2

XDG_CONFIG_HOME/hg/hgrc.
msmtp ~/.msmtprc

af2f409 v1.6.7+

$XDG_CONFIG_HOME"/msmtp/config.
mesa 87ab26b XDG_CACHE_HOME/mesa
milkytracker ~/.milkytracker_config eb487c5 [27]
mpd ~/.mpdconf 87b7328
mpv ~/.mpv cb250d4 [28]
mutt ~/.mutt b17cd67 [29]
mypaint ~/.mypaint cf723b7
nano

~/.nano/
~/.nanorc

c16e79b [30]
ncmpcpp ~/.ncmpcpp

38d9f81 27cd86e

[31] [32]

ncmpcpp_directory should be set to avoid an error.log file in ~/.ncmpcpp.
Neovim

~/.nvim
~/.nvimlog
~/.nviminfo

1ca5646

[33] [34]

newsbeuter ~/.newsbeuter 3c57824 [35] It is required to create both directories [36]:

$ mkdir -p "$XDG_DATA_HOME"/newsbeuter "$XDG_CONFIG_HOME"/newsbeuter

node-gyp ~/.node-gyp 2b5ce52a [37] Only available on master as of 2018-12-04.
np2kai-gitAUR

~/.config/np2kai
~/.config/xnp2kai

56a1cc2 [38]
nteract-binAUR 4593e72 [39] [40] does not recognize workarounds for ipython/jupyter
OfflineIMAP ~/.offlineimaprc 5150de5 [41]
opentyrianAUR ~/.opentyrian 8d45ff2 [42]
pandoc ~/.pandoc/ 0bed0ab [43]
pcsx2 ~/.pcsx2

87f1e8f a9020c6 3b22f0f 0a012ae

[44] [45]
Pry ~/.pryrc
~/.pry_history

a0be0cc7 15e1fc92 e9d1be0e

[46]
python-pip ~/.pip 6.0 [47]
powershellAUR 6.0
ppsspp ~/.ppsspp 132fe47 [48]
procps-ng ~/.toprc af53e17

[49] [50]

orbment-gitAUR
pacman ~/.makepkg.conf 80eca94 [51]
panda3dAUR ~/.panda3d 2b537d2
PulseAudio

~/.pulse
~/.pulse-cookie

59a8618 87ae830 9ab510a 4c195bc

[52]
pyroomAUR
quodlibet ~/.quodlibet 3.10.0 [53]
qutebrowser
qtile

fd8686e 66d704b 51cff01

[54] Some optional bar widgets can create files and directories in non-compliant paths, but most often these are still configurable.
rclone ~/.rclone.conf 9d36258 [55]
retroarch
rrAUR ~/.rr 02e7d41 [56]
RSpec ~/.rspec 5e395e2 [57]
rTorrent ~/.rtorrent.rc 6a8d332
RuboCop ~/.rubocop.yml 6fe5956 [58]
skypeforlinux-stable-binAUR ~/.Skype 8.0
snes9x ~/.snes9x 93b5f11 [59] By default, the configuration file is left blank with intention that the user will fill it at their will (through the gui or manually).
sublime-text-devAUR Cache is placed in $XDG_CONFIG_HOME/sublime-text-3/Cache instead of expected $XDG_CACHE_HOME/sublime-text-3.
surfraw

~/.surfraw.conf
~/.surfraw.bookmarks

3e4591d bd8c427 f57fc71

sway ~/.sway/config 614393c [60]
systemd
termite
tig ~/.tigrc, ~/.tig_history 2.2 [61] ~/.local/share/tig directory must exist, writes to ~/.tig_history otherwise.
tmuxinatorAUR ~/.tmuxinator 2636923 [62]
Transmission ~/.transmission b71a298
util-linux 570b321
Uzbl c6fd63a [63]
vimb
VirtualBox ~/.VirtualBox 4.3 [64]
vis ~/.vis

68a25c7 d138908

[65]
VLC ~/.vlcrc 16f32e1 [66]
Visual Studio Code Note that extension directory is not moving; see [67].
warsow ~/.warsow-2.x 98ece3f [68]
Wireshark ~/.wireshark b0b53fa
xsettingsd-gitAUR ~/.xsettingsd b4999f5
xmonad ~/.xmonad 40fc10b

[69] [70]

Alternatively the environments XMONAD_CONFIG_HOME, XMONAD_DATA_HOME, and XMONAD_CACHE_HOME are also available.
xsel ~/.xsel.log ee7b481 [71]
yarn

~/.yarnrc
~/.yarn/
~/.yarncache/
~/.yarn-config/

2d454b5 [72]

Partial

Application Legacy Path Supported Since Discussion Notes
abook ~/.abook $ abook --config "$XDG_CONFIG_HOME"/abook/abookrc --datafile "$XDG_CACHE_HOME"/abook/addressbook
ack ~/.ackrc [73] $ export ACKRC="$XDG_CONFIG_HOME/ack/ackrc"
Anki

~/Anki
~/Documents/Anki

[74] [75] $ anki -b "$XDG_DATA_HOME"/Anki
aspell ~/.aspell.conf $ export ASPELL_CONF="per-conf $XDG_CONFIG_HOME/aspell/aspell.conf; personal $XDG_CONFIG_HOME/aspell/en.pws; repl $XDG_CONFIG_HOME/aspell/en.prepl"
Atom ~/.atom [76] $ export ATOM_HOME="$XDG_DATA_HOME"/atom
aws-cli ~/.aws 1.7.45 [77]

$ export AWS_SHARED_CREDENTIALS_FILE="$XDG_CONFIG_HOME"/aws/credentials
$ export AWS_CONFIG_FILE="$XDG_CONFIG_HOME"/aws/config

bash-completion ~/.bash_completion $ export BASH_COMPLETION_USER_FILE="$XDG_CONFIG_HOME"/bash-completion/bash_completion
bazaar

~/.bazaar
~/.bzr.log

2.3.0 [78] Discussion in upstream bug states that bazaar wil use ~/.config/bazaar if it exists. The logfile ~/.bzr.log might still be written.
buchhaltung-gitAUR

~/.buchhaltung

[79] $ export BUCHHALTUNG="$XDG_CONFIG_HOME"/buchhaltung
Ruby#Bundler ~/.bundle [80] [81] $ export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
calcurse ~/.calcurse $ calcurse -C "$XDG_CONFIG_HOME"/calcurse -D "$XDG_DATA_HOME"/calcurse
Rust#Cargo ~/.cargo [82] [83] [84] [85] $ export CARGO_HOME="$XDG_DATA_HOME"/cargo
ccache ~/.ccache $ export CCACHE_CONFIGPATH="$XDG_CONFIG_HOME"/ccache.config

$ export CCACHE_DIR="$XDG_CACHE_HOME"/ccache

chez-schemeAUR ~/.chezscheme_history $ petite --eehistory "$XDG_DATA_HOME"/chezscheme/history
conky ~/.conkyrc 00481ee [86] $ conky --config="$XDG_CONFIG_HOME"/conky/conkyrc
coreutils ~/.dircolors $ source $(dircolors "$XDG_CONFIG_HOME"/dircolors)
crawl ~/.crawl The trailing slash is required:

$ export CRAWL_DIR="$XDG_DATA_HOME"/crawl/

CUDA ~/.nv $ export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv
dict ~/.dictrc $ dict -c "$XDG_CONFIG_HOME"/dict/dictrc
Docker ~/.docker $ export DOCKER_CONFIG="$XDG_CONFIG_HOME"/docker
docker-machine ~/.docker/machine $ export MACHINE_STORAGE_PATH="$XDG_DATA_HOME"/docker-machine
DOSBox ~/.dosbox/dosbox-0.74-2.conf [87] $ dosbox -conf "$XDG_CONFIG_HOME"/dosbox/dosbox.conf
ELinks ~/.elinks $ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks
emscripten

~/.emscripten
~/.emscripten_sanity
~/.emscripten_ports
~/.emscripten_cache__last_clear

[88]

$ export EM_CONFIG="$XDG_CONFIG_HOME"/emscripten/config
$ export EM_CACHE="$XDG_CACHE_HOME"/emscripten/cache
$ export EM_PORTS="$XDG_DATA_HOME"/emscripten/cache
$ emcc --em-config "$XDG_CONFIG_HOME"/emscripten/config --em-cache "$XDG_CACHE_HOME"/emscripten/cache

freecadAUR ~/.FreeCAD [89] $ freecad -u "$XDG_CONFIG_HOME"/FreeCAD/user.cfg -s "$XDG_CONFIG_HOME"/FreeCAD/system.cfg

Despite these options, freecadAUR will still create the file .FreeCAD/cookie as the web module has it hard coded

GDB ~/.gdbinit $ gdb -nh -x "$XDG_CONFIG_HOME"/gdb/init
get_iplayerAUR ~/.get_iplayer $ export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer
getmail ~/.getmail/getmailrc $ getmail --rcfile="$XDG_CONFIG_HOME/getmail/getmailrc" --getmaildir="$XDG_DATA_HOME/getmail"
glivAUR ~/.glivrc $ gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc
GnuPG ~/.gnupg [90] [91]

$ export GNUPGHOME="$XDG_DATA_HOME"/gnupg
$ gpg2 --homedir "$XDG_DATA_HOME"/gnupg

Google Earth ~/.googleearth Some paths can be changed with the KMLPath and CachePath options in ~/.config/Google/GoogleEarthPlus.conf
gopass ~/.password-store Override settings in ~/.config/gopass/config.yml:
~/.config/gopass/config.yml
root:
path: gpgcli-gitcli-fs+file:///home/<userid>/.config/password-store
GQ LDAP client

~/.gq
~/.gq-state

1.51

$ export GQRC="$XDG_CONFIG_HOME"/gqrc
$ export GQSTATE="$XDG_DATA_HOME"/gq/gq-state
$ mkdir -p "$(dirname "$GQSTATE")"

Gradle ~/.gradle [92] $ export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
GTK 1 ~/.gtkrc $ export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc
GTK 2 ~/.gtkrc-2.0 $ export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
hledger ~/.hledger.journal [93] $ export LEDGER_FILE="$XDG_DATA_HOME"/hledger.journal
httpie ~/.httpie [94] $ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie
intellij-idea-ceAUR ~/.IntelliJIdea* [95]
$ mkdir -p "${XDG_CONFIG_HOME}"/intellij-idea
$ cp /opt/intellij-idea-ce/bin/{idea.properties,idea64.vmoptions} "${XDG_CONFIG_HOME}"/intellij-idea/
$ export IDEA_PROPERTIES="${XDG_CONFIG_HOME}"/intellij-idea/idea.properties
$ export IDEA_VM_OPTIONS="${XDG_CONFIG_HOME}"/intellij-idea/idea.vmoptions
$XDG_CONFIG_HOME/idea.properties
# these are hardcoded but you get the idea
idea.config.path=${user.home}/.config/intellij-idea
idea.system.path=${user.home}/.cache/intellij-idea
idea.log.path=${user.home}/.cache/intellij-idea/log
idea.plugins.path=${user.home}/.local/share/intellij-idea/plugins
ipython/jupyter ~/.ipython won't fix

$ export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter
$ export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter

irb ~/.irbrc
~/.profile
$ export IRBRC="$XDG_CONFIG_HOME"/irb/irbrc
"$XDG_CONFIG_HOME"/irb/irbrc
IRB.conf[:SAVE_HISTORY] ||= 1000
IRB.conf[:HISTORY_FILE] ||= File.join(ENV["XDG_DATA_HOME"], "irb", "history")
irssi ~/.irssi [96] $ irssi --config="$XDG_CONFIG_HOME"/irssi/config --home="$XDG_DATA_HOME"/irssi
isync ~/.mbsyncrc $ mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc
Java#OpenJDK ~/.java/.userPrefs [97] $ export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
ledger ~/.ledgerrc, ~/.pricedb [98] $ ledger --init-file "$XDG_CONFIG_HOME"/ledgerrc
less ~/.lesshst

$ mkdir -p "$XDG_CACHE_HOME"/less
$ export LESSKEY="$XDG_CONFIG_HOME"/less/lesskey
$ export LESSHISTFILE="$XDG_CACHE_HOME"/less/history

$ export LESSHISTFILE=- can be used to disable this feature.

libdvdcss ~/.dvdcss [99] $ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss
libice ~/.ICEauthority [100] $ export ICEAUTHORITY="$XDG_CACHE_HOME"/ICEauthority

Make sure XDG_CACHE_HOME is set beforehand to directory user running Xorg has write access to.

Do not use XDG_RUNTIME_DIR as it is available after login. Display managers that launch Xorg (like GDM) will repeatedly fail otherwise.

libx11

~/.XCompose
~/.compose-cache

$ export XCOMPOSEFILE="$XDG_CONFIG_HOME"/X11/xcompose
$ export XCOMPOSECACHE="$XDG_CACHE_HOME"/X11/xcompose

ltrace ~/.ltrace.conf $ ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf
maven ~/.m2 [101] $ mvn -gs "$XDG_CONFIG_HOME"/maven/settings.xml
settings.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <localRepository>${env.XDG_CACHE_HOME}/maven/repository</localRepository>
  ...
</settings>
Mathematica ~/.Mathematica $ export MATHEMATICA_USERBASE="$XDG_CONFIG_HOME"/mathematica
mednafen ~/.mednafen $ export MEDNAFEN_HOME="$XDG_CONFIG_HOME"/mednafen
MOC ~/.moc

$ mocp -M "$XDG_CONFIG_HOME"/moc
$ mocp -O MOCDir="$XDG_CONFIG_HOME"/moc

moneroAUR ~/.bitmonero $ monerod --data-dir "$XDG_DATA_HOME"/bitmonero
most ~/.mostrc $ export MOST_INITFILE="$XDG_CONFIG_HOME"/mostrc
MPlayer ~/.mplayer $ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer
MySQL ~/.mysql_history $ export MYSQL_HISTFILE="$XDG_DATA_HOME"/mysql_history
ncurses ~/.terminfo Precludes system path searching:

$ export TERMINFO="$XDG_DATA_HOME"/terminfo
$ export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo

ncmpc ~/.ncmpc ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config
Netbeans ~/.netbeans [102] $ netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans
Node.js ~/.node_repl_history $ export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history [103]
notmuch ~/.notmuch-config [104]

$ export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc
$ export NMBGIT="$XDG_DATA_HOME"/notmuch/nmbug

npm

~/.npm
~/.npmrc

[105] $ export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc
npmrc
prefix=${XDG_DATA_HOME}/npm
cache=${XDG_CACHE_HOME}/npm
tmp=${XDG_RUNTIME_DIR}/npm
init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js

prefix is unnecessary (and unsupported) if Node.js is installed by nvmAUR.

nuget ~/.nuget/packages [106] $ export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
NVIDIA ~/.nv Uses XDG_CACHE_HOME if set, otherwise improperly falls back to ~/.nv instead of ~/.cache.
nvidia-settings ~/.nvidia-settings-rc $ nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings
nvmAUR ~/.nvm $ export NVM_DIR="$XDG_DATA_HOME"/nvm
Octave

~/octave
~/.octave_packages
~/.octave_hist

$ export OCTAVE_HISTFILE="$XDG_CACHE_HOME/octave-hsts"
$ export OCTAVE_SITE_INITFILE="$XDG_CONFIG_HOME/octave/octaverc"

$XDG_CONFIG_HOME/octave/octaverc
source /usr/share/octave/site/m/startup/octaverc;
pkg prefix ~/.local/share/octave/packages ~/.local/share/octave/packages;
pkg local_list /home/<your username>/.local/share/octave/octave_packages;

The local_list option must be given an absolute path.

openscad ~/.OpenSCAD 7c3077b0f [107] Does not fully honour XDG Base Directory Specification, see [108]

Currently it hard-codes ~/.local/share.

OpenSSL ~/.rnd Seeding file .rnd's location can be set with RANDFILE environment variable per FAQ.
parallel ~/.parallel 20170422 $ export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel
Pass ~/.password-store $ export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
Pidgin ~/.purple [109] $ pidgin --config="$XDG_DATA_HOME"/purple
PostgreSQL

~/.psqlrc
~/.psql_history
~/.pgpass
~/.pg_service.conf

9.2 [110] [111]

$ export PSQLRC="$XDG_CONFIG_HOME/pg/psqlrc"
$ export PSQL_HISTORY="$XDG_CACHE_HOME/pg/psql_history"
$ export PGPASSFILE="$XDG_CONFIG_HOME/pg/pgpass"
$ export PGSERVICEFILE="$XDG_CONFIG_HOME/pg/pg_service.conf"

It is required to create both directories $ mkdir "$XDG_CONFIG_HOME/pg" && mkdir "$XDG_CACHE_HOME/pg"

PulseAudio ~/.esd_auth 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.
python-azure-cliAUR ~/.azure $ export AZURE_CONFIG_DIR=$XDG_DATA_HOME/azure
python-setuptools ~/.python-eggs $ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs
python-pylint ~/.pylint.d won't fix $ export PYLINTHOME="$XDG_CACHE_HOME"/pylint
racket ~/.racketrc

~/.racket

[112] $ export PLTUSERHOME="$XDG_DATA_HOME"/racket
readline ~/.inputrc $ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc
rlwrap ~/.*_history [113] $ export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap
Ruby#RubyGems ~/.gem

$ export GEM_HOME="$XDG_DATA_HOME"/gem
$ export GEM_SPEC_CACHE="$XDG_CACHE_HOME"/gem
Make sure to remove gem: --user-install from /etc/gemrc

Rust#Rustup ~/.rustup [114] $ export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
sbt ~/.sbt

~/.ivy2

[115] $ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt (beware [116])
GNU Screen ~/.screenrc $ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc
Haskell#Stack ~/.stack [117] $ export STACK_ROOT="$XDG_DATA_HOME"/stack
subversion ~/.subversion [118] [119][120] $ svn --config-dir "$XDG_CONFIG_HOME"/subversion
task

~/.task
~/.taskrc

$ export TASKDATA="$XDG_DATA_HOME"/task
$ export TASKRC="$XDG_CONFIG_HOME"/task/taskrc

tiptopAUR ~/.tiptoprc This will still expect the .tiptoprc file.

$ tiptop -W "$XDG_CONFIG_HOME"/tiptop

tmux ~/.tmux.conf [121] $ tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf

$ export TMUX_TMPDIR="$XDG_RUNTIME_DIR"

uncrustify ~/.uncrustify.cfg $ export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg
Unison ~/.unison $ export UNISON="$XDG_DATA_HOME"/unison
urxvtd ~/.urxvt/urxvtd-hostname $ export RXVT_SOCKET="$XDG_RUNTIME_DIR"/urxvtd
Vagrant

~/.vagrant.d
~/.vagrant.d/aliases

[122]

$ export VAGRANT_HOME="$XDG_DATA_HOME"/vagrant
$ export VAGRANT_ALIAS_FILE="$XDG_DATA_HOME"/vagrant/aliases

WeeChat ~/.weechat [123] [124]

$ export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat
$ weechat -d "$XDG_CONFIG_HOME"/weechat

wget

~/.wgetrc
~/.wget-hsts

$ export WGETRC="$XDG_CONFIG_HOME/wgetrc"
and add the following as an alias for wget:
$ wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"
or set the hsts-file variable with an absolute path as wgetrc does not support environment variables:
$ echo hsts-file \= "$XDG_CACHE_HOME"/wget-hsts >> "$XDG_CONFIG_HOME/wgetrc"

wine ~/.wine [125] Winetricks uses XDG-alike location below for WINEPREFIX management:

$ mkdir -p "$XDG_DATA_HOME"/wineprefixes
$ export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default

xbindkeys ~/.xbindkeysrc $ xbindkeys -f "$XDG_CONFIG_HOME"/xbindkeys/config
xorg-xauth ~/.Xauthority $ export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
xinit

~/.xinitrc
~/.xserverrc

[126]

$ export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc
$ export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc

Note that these variables are respected by xinit, but not by startx. Instead, specify the filename as an argument:

$ startx "$XDG_CONFIG_HOME/X11/xinitrc" -- "$XDG_CONFIG_HOME/X11/xserverrc" vt1

xorg-xrdb

~/.Xresources
~/.Xdefaults

Ultimately you should be using Xresources and since these resources are loaded via xrdb you can specify a path such as $ xrdb -load ~/.config/X11/xresources.
z

~/.z

[127] $ export _Z_DATA="$XDG_DATA_HOME/z"

Hardcoded

Application Legacy Path Discussion Notes
adb ~/.android/ [128] $ export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android
AMule ~/.aMule
Android Studio

~/.AndroidStudio2.3
~/.android/
~/.java/

anthy ~/.anthy [129]
Apache Directory Studio ~/.ApacheDirectoryStudio
ARandR ~/.screenlayout
Arduino

~/.arduino15
~/.jssc

won't fix
Audacity ~/.audacity-data/
Avidemux ~/.avidemux6
Bash

~/.bashrc
~/.bash_history
~/.bash_profile
~/.bash_login
~/.bash_logout

won't fix $ export HISTFILE="$XDG_DATA_HOME"/bash/history

A specified bashrc can be sourced from /etc/bashrc.

Specify --init-file <file> as an alternative to ~/.bashrc for interactive shells.

cabal ~/.cabal/ [130] See discussion for potential workarounds. It is not very easy or straightforward but may be possible to emulate Base Directory compliance.
chattyAUR ~/.chatty/ [131]
cmake ~/.cmake/ Used for the user package registry ~/.cmake/packages/<package>, detailed in cmake-packages(7) and the Package registry wiki page. Looks like it's hardcoded, for example in cmFindPackageCommand.cxx.
Cinnamon ~/.cinnamon/ [132]
cryptomatorAUR ~/.Cryptomator [133]
CUPS ~/.cups/ won't fix
darcs ~/.darcs/ [134]
dbus ~/.dbus/ [135] This should be avoidable with kdbus [citation needed].
devede ~/.devedeng Hardcoded here
Dia ~/.dia/
dotnet-sdk ~/.dotnet/ [136]
Eclipse ~/.eclipse/ [137] 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)
Emacs

~/.emacs
~/.emacs.d/

[138] 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.
Fetchmail ~/.fetchmailrc
Firefox ~/.mozilla/ [139]
Flatpak ~/.var/ [140] [141] won't fix
GHC ~/.ghc [142]
ghidraAUR [143]
Goldendict ~/.goldendict/ [144]
gramps ~/.gramps/ [145]
grsync ~/.grsync/ [146]
gtk-recordMyDesktop ~/.gtk-recordmydesktop
hplip ~/.hplip/ [147]
idris ~/.idris [148]
Java OpenJDK ~/.java/fonts [149]
Java OpenJFX ~/.java/webview
julia

~/.juliarc.jl
~/.julia_history

[150] [151]
Linux PAM ~/.pam_environment [152] Hardcoded in modules/pam_env/pam_env.c
lldb

~/.lldb
~/.lldbinit

mathomatic

~/.mathomaticrc
~/.matho_history

History can be moved by using rlwrap mathomatic -r with the RLWRAP_HOME environment set appropriately.
Minecraft ~/.minecraft/ [153]
Minetest ~/.minetest/ won't fix [154]
mongodb

~/.mongorc.js
~/.dbshell

[155] This Stack Overflow thread suggests a partial workaround using command-line switch --norc.
Nestopia UE ~/.nestopia/ won't fix
~/.netrc 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.
Networkmanager-openvpn ~/.cert/nm-openvpn [156]
NSS ~/.pki [157]
OpenSSH ~/.ssh won't fix Assumed to be present by many ssh daemons and clients such as DropBear and OpenSSH.
palemoon ~/.moonchild productions [158]
parsec-binAUR ~/.parsec
pcsxrAUR ~/.pcsxr A -cfg flag exists, but can only be set relative to ~/.pcsxr.
perf ~/.debug Hardcoded in tools/perf/util/config.c:29.
various shells and display managers ~/.profile
python ~/.python_history All history from interactive sessions is saved to ~/.python_history by default since version 3.4, custom path can still be set the same way as in older versions (see this example).
Qt Designer ~/.designer
RedNotebook ~/.rednotebook
Remarkable ~/.remarkable
Ren'Py ~/.renpy [159]
SANE ~/.sane/ scanimage creates a .cal file there
scribus ~/.scribus
sdcv ~/.stardict/ [160] Only workaround is modifying HOME
SeaMonkey ~/.mozilla/ [161]
simplescreenrecorder ~/.ssr/ [162] Author seems against this feature.
Solfege

~/.solfege
~/.solfegerc
~/lessonfiles

[163]
spacemacs

~/.spacemacs
~/.spacemacs.d

[164]
SpamAssassin ~/.spamassassin
spectrwm ~/.spectrwm
SQLite

~/.sqlite_history
~/.sqliterc

[165] $ export SQLITE_HISTORY=$XDG_DATA_HOME/sqlite_history

$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc

Steam

~/.steam
~/.steampath
~/.steampid

[166] Many game engines (Unity 3D, Unreal) follow the specification, but then individual game publishers hardcode the paths in Steam Auto-Cloud causing game-saves to sync to the wrong directory.
TeamSpeak ~/.ts3client
texinfo ~/.infokey $ info --init-file "$XDG_CONFIG_HOME/infokey"
TeXmacs ~/.TeXmacs
Thunderbird ~/.thunderbird/ [167]
tllocalmgr ~/.texlive
vim

~/.vim
~/.vimrc
~/.viminfo

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

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

"$XDG_CONFIG_HOME"/vim/vimrc
set undodir=$XDG_DATA_HOME/vim/undo
set directory=$XDG_DATA_HOME/vim/swap
set backupdir=$XDG_DATA_HOME/vim/backup
set viminfo+='1000,n$XDG_DATA_HOME/vim/viminfo
set runtimepath=$XDG_CONFIG_HOME/vim,$VIMRUNTIME,$XDG_CONFIG_HOME/vim/after
~/.profile
export VIMINIT=":source $XDG_CONFIG_HOME"/vim/vimrc
vimperator ~/.vimperatorrc [169] $ export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"

$ export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator

w3m ~/.w3m [170]
wpa_cli ~/.wpa_cli_history
xdg-utils ~/.gnome [171] For some reason the script xdg-desktop-menu hard-codes gnome_user_dir="$HOME/.gnome/apps". This is used by chromium among others.
xombrero ~/.xombrero [172]
YARD ~/.yard [173] Would accept Pull Request if anyone want to implement it.
zenmap nmap ~/.zenmap [174] [175]
zsh

~/.zshrc
~/.zprofile
~/.zshenv
~/.zlogin
~/.zlogout
~/.histfile
~/.zcompdump

[176] 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.

$ export HISTFILE="$XDG_DATA_HOME"/zsh/history

$ compinit -d $XDG_CACHE_HOME/zsh/zcompdump-$ZSH_VERSION [177] /!\ The folder needs to exist

Libraries

C
C99: Cloudef's simple implementation.
JVM
Java, Kotlin, Clojure, Scala, ...
directories-jvm
Go
go-appdir
Haskell
Officially in directory since 1.2.3.0 ab9d0810ce.
xdg-basedir
Perl
File-BaseDir
perl-file-xdg
Ruby
rubyworks/xdg
Rust
directories-rs
rust-xdg
Python
pyxdg
Vala
Builtin support via GLib.Environment.
See get_user_cache_dir, get_user_data_dir, get_user_config_dir, etc.

See also