Difference between revisions of "XDG Base Directory support"
m (Fix var name for xserverrc: XSERVERRC works while X doesn't (was it a typo?)) |
(Add Ruby) |
||
(36 intermediate revisions by 20 users not shown) | |||
Line 197: | Line 197: | ||
| [https://git.gnome.org/browse/gconf/commit/?id=fc28caa7 fc28caa7] | | [https://git.gnome.org/browse/gconf/commit/?id=fc28caa7 fc28caa7] | ||
| [https://bugzilla.gnome.org/show_bug.cgi?id=674803] | | [https://bugzilla.gnome.org/show_bug.cgi?id=674803] | ||
+ | | | ||
+ | |- | ||
+ | | [[GIMP]] | ||
+ | | {{ic|~/.gimp-x.y}} | ||
+ | {{ic|~/.thumbnails}} | ||
+ | | [https://git.gnome.org/browse/gimp/commit/?id=60e0cfe 60e0cfe] [https://git.gnome.org/browse/gimp/commit/?id=483505f 483505f] | ||
+ | | [https://bugzilla.gnome.org/show_bug.cgi?id=166643] [https://bugzilla.gnome.org/show_bug.cgi?id=646644] | ||
| | | | ||
|- | |- | ||
Line 295: | Line 302: | ||
| [https://www.mercurial-scm.org/repo/hg/rev/354020079723 354020079723] [https://www.mercurial-scm.org/wiki/Release4.2 4.2] | | [https://www.mercurial-scm.org/repo/hg/rev/354020079723 354020079723] [https://www.mercurial-scm.org/wiki/Release4.2 4.2] | ||
| | | | ||
− | | | + | | {{ic|XDG_CONFIG_HOME/hg/hgrc}}. |
+ | |- | ||
+ | | [https://www.mesa3d.org/ mesa] | ||
+ | | | ||
+ | | [https://cgit.freedesktop.org/mesa/mesa/commit/?id=87ab26b2ab35a29d446ae66f1795d40c184c0739 87ab26b2ab] | ||
+ | | | ||
+ | | {{ic|XDG_CACHE_HOME/mesa}} | ||
|- | |- | ||
| [http://milkytracker.org/ milkytracker] | | [http://milkytracker.org/ milkytracker] | ||
Line 404: | Line 417: | ||
| [https://projects.archlinux.org/pacman.git/commit/?id=80eca94c8 80eca94c8] | | [https://projects.archlinux.org/pacman.git/commit/?id=80eca94c8 80eca94c8] | ||
| [https://mailman.archlinux.org/pipermail/pacman-dev/2014-July/019178.html] | | [https://mailman.archlinux.org/pipermail/pacman-dev/2014-July/019178.html] | ||
+ | | | ||
+ | |- | ||
+ | | [https://github.com/panda3d/panda3d Panda3D] | ||
+ | | {{ic|~/.panda3d}} | ||
+ | | [https://github.com/panda3d/panda3d/commit/2b537d2 2b537d2] | ||
+ | | | ||
| | | | ||
|- | |- | ||
Line 435: | Line 454: | ||
| [https://github.com/qtile/qtile/pull/835] | | [https://github.com/qtile/qtile/pull/835] | ||
| Some optional bar widgets can create files and directories in non-compliant paths, but most often these are still configurable. | | Some optional bar widgets can create files and directories in non-compliant paths, but most often these are still configurable. | ||
+ | |- | ||
+ | | {{Pkg|rclone}} | ||
+ | | {{ic|~/.rclone.conf}} | ||
+ | | [https://github.com/ncw/rclone/commit/9d362589 9d362589] | ||
+ | | [https://github.com/ncw/rclone/issues/868] | ||
+ | | | ||
|- | |- | ||
| [http://www.libretro.com/ retroarch] | | [http://www.libretro.com/ retroarch] | ||
Line 447: | Line 472: | ||
| [https://github.com/mozilla/rr/issues/1455] | | [https://github.com/mozilla/rr/issues/1455] | ||
| | | | ||
+ | |- | ||
+ | | [http://www.snes9x.com/ Snes9x] | ||
+ | | {{ic|~/.snes9x}} | ||
+ | | [https://github.com/snes9xgit/snes9x/commit/93b5f11641fa22d4518f251d6e3db99219864677 19864677] | ||
+ | | [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 | ||
|- | |- | ||
| {{AUR|sublime-text-dev}} | | {{AUR|sublime-text-dev}} | ||
Line 478: | Line 509: | ||
| [[termite]] | | [[termite]] | ||
| | | | ||
− | | | + | |- |
− | | | + | | [https://github.com/tmuxinator/tmuxinator tmuxinator] |
+ | | {{ic|~/.tmuxinator}} | ||
+ | | [https://github.com/tmuxinator/tmuxinator/pull/511/commits/263692349f1142c0edcacfbefae541cbc0e7b44e 2636923] | ||
+ | | [https://github.com/tmuxinator/tmuxinator/pull/511] | ||
+ | |||
| | | | ||
|- | |- | ||
Line 510: | Line 545: | ||
| [https://www.virtualbox.org/ticket/5099?action=diff&version=7 4.3] | | [https://www.virtualbox.org/ticket/5099?action=diff&version=7 4.3] | ||
| [https://www.virtualbox.org/ticket/5099] | | [https://www.virtualbox.org/ticket/5099] | ||
+ | | | ||
+ | |- | ||
+ | | [http://martanne.github.io/vis/ vis] | ||
+ | | {{ic|~/.vis}} | ||
+ | | [https://github.com/martanne/vis/pull/303] | ||
+ | | [https://github.com/martanne/vis/commit/68a25c751c0219ef5df589a19513e46a08965d5a 68a25c75] | ||
+ | [https://github.com/martanne/vis/commit/d138908cf8149eb10120957271cd6979272b4730 d138908c] | ||
| | | | ||
|- | |- | ||
Line 541: | Line 583: | ||
| [https://github.com/xmonad/xmonad/issues/61] [https://code.google.com/p/xmonad/issues/detail?id=484] | | [https://github.com/xmonad/xmonad/issues/61] [https://code.google.com/p/xmonad/issues/detail?id=484] | ||
| Alternatively the environments {{ic|XMONAD_CONFIG_HOME}}, {{ic|XMONAD_DATA_HOME}}, and {{ic|XMONAD_CACHE_HOME}} are also available. | | Alternatively the environments {{ic|XMONAD_CONFIG_HOME}}, {{ic|XMONAD_DATA_HOME}}, and {{ic|XMONAD_CACHE_HOME}} are also available. | ||
+ | |- | ||
+ | | [http://www.vergenet.net/~conrad/software/xsel/ xsel] | ||
+ | | {{ic|~/.xsel.log}} | ||
+ | | [https://github.com/kfish/xsel/commit/ee7b48111be2e2117b201962e9d1c0e1f9804ed4 ee7b4811] | ||
+ | | [https://github.com/kfish/xsel/issues/10] | ||
+ | | | ||
|} | |} | ||
Line 658: | Line 706: | ||
| | | | ||
| {{ic|1=$ export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer}} | | {{ic|1=$ export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer}} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| [http://guichaz.free.fr/gliv/ gliv] | | [http://guichaz.free.fr/gliv/ gliv] | ||
Line 777: | Line 818: | ||
| | | | ||
| {{ic|1=$ ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf}} | | {{ic|1=$ ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf}} | ||
+ | |- | ||
+ | | {{pkg|maven}} | ||
+ | | {{ic|~/.m2}} | ||
+ | | | ||
+ | | | ||
+ | | {{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" | ||
+ | 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></nowiki>}} | ||
|- | |- | ||
| [[Mathematica]] | | [[Mathematica]] | ||
Line 803: | Line 858: | ||
| | | | ||
| {{ic|1=$ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer}} | | {{ic|1=$ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer}} | ||
+ | |- | ||
+ | | [[msmtp]] | ||
+ | | {{ic|~/.msmtprc}} | ||
+ | | | ||
+ | | | ||
+ | | {{ic|1=$ msmtp -C "$XDG_CONFIG_HOME"/msmtp/msmtprc}} | ||
|- | |- | ||
| {{pkg|ncurses}} | | {{pkg|ncurses}} | ||
Line 819: | Line 880: | ||
| | | | ||
| {{ic|ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config}} | | {{ic|ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config}} | ||
+ | |- | ||
+ | | [[Netbeans]] | ||
+ | | {{ic|~/.netbeans}} | ||
+ | | | ||
+ | | [https://netbeans.org/bugzilla/show_bug.cgi?id=215961] | ||
+ | | {{ic|1=$ netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans}} | ||
|- | |- | ||
| [[notmuch]] | | [[notmuch]] | ||
Line 835: | Line 902: | ||
| [https://github.com/npm/npm/issues/6675] | | [https://github.com/npm/npm/issues/6675] | ||
| {{ic|1=$ export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc}} | | {{ic|1=$ export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc}} | ||
− | {{hc|npmrc|<nowiki>cache=$XDG_CACHE_HOME/npm | + | {{hc|npmrc|<nowiki> |
− | + | 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 | ||
+ | </nowiki>}} | ||
+ | {{ic|prefix}} is unnecessary (and unsupported) if Node.js is installed by {{AUR|nvm}}. | ||
|- | |- | ||
| [[NVIDIA]], [[CUDA]] | | [[NVIDIA]], [[CUDA]] | ||
Line 851: | Line 923: | ||
| | | | ||
| {{ic|1=$ nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings}} | | {{ic|1=$ nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings}} | ||
+ | |- | ||
+ | | {{AUR|nvm}} | ||
+ | | {{ic|~/.nvm}} | ||
+ | | | ||
+ | | | ||
+ | | {{ic|1=$ export NVM_DIR="$XDG_DATA_HOME"/nvm}} | ||
|- | |- | ||
| [http://www.openscad.org/ openscad] | | [http://www.openscad.org/ openscad] | ||
Line 877: | Line 955: | ||
| | | | ||
| {{ic|1=$ pidgin --config="$XDG_DATA_HOME"/purple}} | | {{ic|1=$ pidgin --config="$XDG_DATA_HOME"/purple}} | ||
+ | |- | ||
+ | | [https://www.postgresql.org/ postgresql] | ||
+ | | {{ic|~/.psqlrc}} | ||
+ | {{ic|~/.psql_history}} | ||
+ | |||
+ | {{ic|~/.pgpass}} | ||
+ | |||
+ | {{ic|~/.pg_service.conf}} | ||
+ | | 9.2 | ||
+ | | [https://www.postgresql.org/docs/current/static/app-psql.html] | ||
+ | |||
+ | [https://www.postgresql.org/docs/current/static/libpq-envars.html] | ||
+ | | {{ic|1=$ export PSQLRC="$XDG_CONFIG_HOME/pg/psqlrc"}} | ||
+ | {{ic|1=$ export PSQL_HISTORY="$XDG_CACHE_HOME/pg/psql_history"}} | ||
+ | |||
+ | {{ic|1=$ export PGPASSFILE="$XDG_CONFIG_HOME/pg/pgpass"}} | ||
+ | |||
+ | {{ic|1=$ export PGSERVICEFILE="$XDG_CONFIG_HOME/pg/pg_service.conf"}} | ||
+ | |||
+ | It is required to create both directories {{ic|1=$ mkdir "$XDG_CONFIG_HOME/pg" && mkdir "$XDG_CACHE_HOME/pg"}} | ||
|- | |- | ||
| [[PulseAudio]] | | [[PulseAudio]] | ||
Line 889: | Line 987: | ||
| | | | ||
| {{ic|1=$ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs}} | | {{ic|1=$ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs}} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| [[readline]] | | [[readline]] | ||
Line 948: | Line 1,040: | ||
| | | | ||
| {{ic|1=$ export TIGRC_USER="$XDG_CONFIG_HOME"/tig/tigrc}} | | {{ic|1=$ export TIGRC_USER="$XDG_CONFIG_HOME"/tig/tigrc}} | ||
+ | |- | ||
+ | | [http://tiptop.gforge.inria.fr/ tiptop] | ||
+ | | {{ic|~/.tiptoprc}} | ||
+ | | | ||
+ | | | ||
+ | | This will still expect the {{ic|.tiptoprc}} file. | ||
+ | {{ic|$ tiptop -W "$XDG_CONFIG_HOME"/tiptop}} | ||
|- | |- | ||
| [[tmux]] | | [[tmux]] | ||
Line 1,022: | 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}}. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
Line 1,040: | Line 1,133: | ||
| [[adb]] | | [[adb]] | ||
| {{ic|~/.android}} | | {{ic|~/.android}} | ||
− | | | + | | [https://developer.android.com/studio/command-line/variables.html#android_sdk_root] |
− | | | + | | {{ic|1=$ export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android}} |
|- | |- | ||
| [[AMule]] | | [[AMule]] | ||
Line 1,146: | Line 1,239: | ||
| {{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] | ||
| | | | ||
|- | |- | ||
Line 1,177: | Line 1,275: | ||
| [http://www.linux-pam.org/ Linux PAM] | | [http://www.linux-pam.org/ Linux PAM] | ||
| {{ic|~/.pam_environment}} | | {{ic|~/.pam_environment}} | ||
− | | | + | | [https://github.com/linux-pam/linux-pam/issues/7] |
| Hardcoded in [https://github.com/linux-pam/linux-pam/blob/master/modules/pam_env/pam_env.c modules/pam_env/pam_env.c] | | Hardcoded in [https://github.com/linux-pam/linux-pam/blob/master/modules/pam_env/pam_env.c modules/pam_env/pam_env.c] | ||
|- | |- | ||
Line 1,215: | Line 1,313: | ||
| | | | ||
| 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,251: | Line 1,353: | ||
| | | | ||
|- | |- | ||
− | | [https://quodlibet.readthedocs.io/en/latest/ | + | | [https://quodlibet.readthedocs.io/en/latest/ Quod Libet] |
| {{ic|~/.quodlibet}} | | {{ic|~/.quodlibet}} | ||
− | | | + | | [https://github.com/quodlibet/quodlibet/issues/138] |
| | | | ||
|- | |- | ||
Line 1,279: | Line 1,381: | ||
| [https://bugzil.la/726939] | | [https://bugzil.la/726939] | ||
| | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| [[Skype]] < 5.0 | | [[Skype]] < 5.0 | ||
Line 1,315: | Line 1,412: | ||
| [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://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] | ||
| {{ic|$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc}} | | {{ic|$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc}} | ||
+ | |- | ||
+ | | [[Steam]] | ||
+ | | {{ic|~/.steam}} | ||
+ | {{ic|~/.steampath}} | ||
+ | {{ic|~/.steampid}} | ||
+ | | [https://github.com/ValveSoftware/steam-for-linux/issues/1890] | ||
+ | | | ||
|- | |- | ||
| [[TeamSpeak]] | | [[TeamSpeak]] | ||
Line 1,379: | 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,410: | 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
.
- Where user-specific configurations should be written (analogous to
-
XDG_CACHE_HOME
- Where user-specific non-essential (cached) data should be written (analogous to
/var/cache
). - Should default to
$HOME/.cache
.
- Where user-specific non-essential (cached) data should be written (analogous to
-
XDG_DATA_HOME
- Where user-specific data files should be written (analogous to
/usr/share
). - Should default to
$HOME/.local/share
.
- Where user-specific data files should be written (analogous to
-
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 toPATH
). - Should default to
/usr/local/share:/usr/share
.
- List of directories seperated by
-
XDG_CONFIG_DIRS
- List of directories seperated by
:
(analogous toPATH
). - Should default to
/etc/xdg
.
- List of directories seperated by
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.
Supported
Application | Legacy Path | Supported Since | Discussion | Notes |
---|---|---|---|---|
aerc | ||||
antimicro | ~/.antimicro
|
edba864 | [1] | |
aria2 | ~/.aria2
|
8bc1d37 | [2] | |
blender | ~/.blender
|
4293f473 | [3] | |
burp | f2388e9 | |||
chromium | ~/.chromium
|
23057 | [4] [5] | |
citra | ~/.citra-emu
|
f7c3193fec | [6] | |
composer | ~/.composer
|
1.0.0-beta1 | [7] | |
cower | 8b70805 | |||
d-feet | ~/.d-feet
|
7f6104b | ||
dconf | ||||
dolphin-emu | ~/.dolphin-emu
|
a498c68 | [8] | |
dr14-meter | 7e777ca64 | [9] | Hardcoded $HOME/.config/dr14meter
| |
dunst | 78b6e2b1 | [10] | ||
dwb | ||||
fish | ||||
fontconfig | ~/.fontconfig
|
8c255fb1 | Use "$XDG_DATA_HOME"/fonts to store fonts instead.
| |
fontforge | ~/.FontForge
|
e4c2cc7432 | [11] [12] | |
freerdp | ~/.freerdp
|
edf6e7258d | ||
gconf | ~/.gconf
|
fc28caa7 | [13] | |
GIMP | ~/.gimp-x.y
|
60e0cfe 483505f | [14] [15] | |
git | ~/.gitconfig
|
0d94427e | ||
gstreamer | ~/.gstreamer-0.10
|
4e36f93924cf | [16] | |
gtk3 | ||||
htop | ~/.htoprc
|
93233a67 | ||
i3 | ~/.i3
|
7c130fb54 | ||
i3status | ~/.i3status.conf
|
c3f7fc4994 | ||
imagemagick | ||||
inkscape | ~/.inkscape
|
0.47 | [17] | |
latexmk | ~/.latexmkrc
|
|||
lftp | ~/.lftp
|
21dc400 | [18] | |
lgogdownloader | ~/.gogdownloader
|
d430af63d000 | [19] | |
LibreOffice | a6f56f70 25bd2eec | [20] | ||
livestreamer | ~/.livestreamerrc
|
ea805917 | [21] | |
llpp | 3ab86f0cb | Currently llpp places the configuration directly under XDG_CONFIG_HOME instead of creating a directory.
| ||
mc | ~/.mc
|
1b9957058 0b7115647 | [22] | |
Mercurial | ~/.hgrc
|
354020079723 4.2 | XDG_CONFIG_HOME/hg/hgrc .
| |
mesa | 87ab26b2ab | XDG_CACHE_HOME/mesa
| ||
milkytracker | ~/.milkytracker_config
|
eb487c55 | [23] | |
mintty | ~/.minttyrc
|
cff1bd8f v2.3.7. | [24] | |
mpd | ~/.mpdconf
|
87b73284 | ||
mpv | ~/.mpv
|
cb250d490 | [25] | |
mutt | ~/.mutt
|
42fee7585f | [26] | |
mypaint | ~/.mypaint
|
cf723b74cd | ||
ncmpcpp | ~/.ncmpcpp
|
38d9f811 27cd86e0 | [27] [28] | ncmpcpp_directory should be set to avoid an error.log file in ~/.ncmpcpp .
|
neovim | ~/.nvim
|
1ca5646bb | [29] [30] | |
newsbeuter | ~/.newsbeuter
|
3c57824c5 | [31] | It is required to create both directories [32]:
|
OfflineIMAP | ~/.offlineimaprc
|
5150de5 | [33] | |
opentyrian | ~/.opentyrian
|
8d45ff2 | [34] | |
pcsx2 | ~/.pcsx2
|
87f1e8f77 a9020c606 | [35] [36] | |
pip | ~/.pip
|
6.0 | [37] | |
ppsspp | ~/.ppsspp
|
132fe47c7d | [38] | |
procps-ng | ~/.toprc
|
af53e170b9 | [39] [40] | |
orbment | ||||
pacman | ~/.makepkg.conf
|
80eca94c8 | [41] | |
Panda3D | ~/.panda3d
|
2b537d2 | ||
PulseAudio | ~/.pulse
|
59a8618dcd9 87ae8307057 | [42] | |
pyroom | ||||
qutebrowser | ||||
qtile | fd8686e 66d704b | [43] | Some optional bar widgets can create files and directories in non-compliant paths, but most often these are still configurable. | |
rclone | ~/.rclone.conf
|
9d362589 | [44] | |
retroarch | ||||
rr | ~/.rr
|
02e7d41e | [45] | |
Snes9x | ~/.snes9x
|
19864677 | [46] | By default configuration is blank, is intended that the user fill it at they will (throw the gui or manually) before launch a rom |
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
|
3e4591d8 bd8c427d | ||
sway | ~/.sway/config
|
614393c09 | [47] | |
systemd | ||||
termite | ||||
tmuxinator | ~/.tmuxinator
|
2636923 | [48] | |
transmission | ~/.transmission
|
5517 | [49] | |
util-linux | 570b32100 | |||
uzbl | c6fd63a | [50] | ||
vimb | ||||
VirtualBox | ~/.VirtualBox
|
4.3 | [51] | |
vis | ~/.vis
|
[52] | 68a25c75 | |
VLC media player | ~/.vlcrc
|
16f32e15 | [53] | |
warsow | ~/.warsow-2.x
|
98ece3f | [54] | |
wireshark | ~/.wireshark
|
b0b53fa5 | ||
xsettingsd | ~/.xsettingsd
|
4ecd7be | ||
xmonad | ~/.xmonad
|
40fc10b6 | [55] [56] | Alternatively the environments XMONAD_CONFIG_HOME , XMONAD_DATA_HOME , and XMONAD_CACHE_HOME are also available.
|
xsel | ~/.xsel.log
|
ee7b4811 | [57] |
Partial
Application | Legacy Path | Supported Since | Discussion | Notes |
---|---|---|---|---|
abook | ~/.abook
|
$ abook --config "$XDG_CONFIG_HOME"/abook/abookrc \
| ||
Anki | ~/Anki
|
[58] [59] | $ anki -b "$XDG_DATA_HOME"/Anki
| |
aspell | ~/.aspell.conf
|
|||
Atom | ~/.atom
|
[60] | $ export ATOM_HOME="$XDG_DATA_HOME"/atom
| |
cargo | ~/.cargo
|
[61] [62] [63] | $ export CARGO_HOME="$XDG_DATA_HOME"/cargo
| |
ccache | ~/.ccache
|
$ export CCACHE_DIR="$XDG_CACHE_HOME"/ccache
| ||
ChezScheme | ~/.chezscheme_history
|
$ petite --eehistory "$XDG_DATA_HOME"/chezscheme/history
| ||
conky | ~/.conkyrc
|
00481ee | [64] | $ conky --config="$XDG_CONFIG_HOME"/conky/conkyrc
|
coreutils | ~/.dircolors
|
$ source "$(dircolors "$XDG_CONFIG_HOME"/dircolors)"
| ||
crawl | ~/.crawl
|
The trailing slash is required:
| ||
dict | ~/.dictrc
|
$ dict -c "$XDG_CONFIG_HOME"/dict/dictrc
| ||
ELinks | ~/.elinks
|
$ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks
| ||
emscripten | ~/.emscripten
|
3624 | $ export EM_CONFIG="$XDG_CONFIG_HOME"/emscripten/config
| |
gdb | ~/.gdbinit
|
$ gdb -nh -x "$XDG_CONFIG_HOME"/gdb/init
| ||
get_iplayer | ~/.get_iplayer
|
$ export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer
| ||
gliv | ~/.glivrc
|
$ gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc
| ||
GnuPG | ~/.gnupg
|
[65] [66] | $ export GNUPGHOME="$XDG_CONFIG_HOME"/gnupg
| |
Google Earth | ~/.googleearth
|
Some paths can be changed with the KMLPath and CachePath options in ~/.config/Google/GoogleEarthPlus.conf
| ||
GQ LDAP client | ~/.gq
|
1.51 | $ export GQRC="$XDG_CONFIG_HOME"/gqrc
| |
gradle | ~/.gradle
|
[67] | $ export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
| |
gtk | ~/.gtkrc
|
$ export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc
| ||
gtk2 | ~/.gtkrc-2.0
|
$ export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
| ||
httpie | ~/.httpie
|
[68] | $ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie
| |
ipython/jupyter | ~/.ipython
|
$ export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter
| ||
irssi | ~/.irssi
|
[69] | $ irssi --config="$XDG_CONFIG_HOME"/irssi/config \
| |
isync | ~/.mbsyncrc
|
$ mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc
| ||
less | ~/.lesshst
|
$ mkdir -p "$XDG_CACHE_HOME"/less
| ||
libdvdcss | ~/.dvdcss
|
[70] | $ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss
| |
libice | ~/.ICEauthority
|
[71] | $ export ICEAUTHORITY="$XDG_RUNTIME_DIR"/ICEauthority
| |
libx11 | ~/.XCompose
|
$ export XCOMPOSEFILE="$XDG_CONFIG_HOME"/X11/xcompose
| ||
ltrace | ~/.ltrace.conf
|
$ ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf
| ||
maven | ~/.m2
|
$ 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
| ||
MPlayer | ~/.mplayer
|
$ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer
| ||
msmtp | ~/.msmtprc
|
$ msmtp -C "$XDG_CONFIG_HOME"/msmtp/msmtprc
| ||
ncurses | ~/.terminfo
|
Precludes system path searching:
| ||
ncmpc | ~/.ncmpc
|
ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config
| ||
Netbeans | ~/.netbeans
|
[72] | $ netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans
| |
notmuch | ~/.notmuch-config
|
[73] | $ export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc
| |
npm | ~/.npm
|
[74] | $ 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
| |
NVIDIA, CUDA | ~/.nv
|
$ export __GL_SHADER_DISK_CACHE_PATH="$XDG_CACHE_HOME"/nv
| ||
nvidia-settings | ~/.nvidia-settings-rc
|
$ nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings
| ||
nvmAUR | ~/.nvm
|
$ export NVM_DIR="$XDG_DATA_HOME"/nvm
| ||
openscad | ~/.OpenSCAD
|
7c3077b0f | [75] | Does not fully honour XDG Base Directory Specification, see [76]
Currently it hard-codes |
OpenSSL | ~/.rnd
|
Seeding file .rnd's location can be set with RANDFILE environment variable per FAQ. | ||
pass | ~/.password-store
|
$ export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
| ||
pidgin | ~/.purple
|
$ pidgin --config="$XDG_DATA_HOME"/purple
| ||
postgresql | ~/.psqlrc
|
9.2 | [77] | $ export PSQLRC="$XDG_CONFIG_HOME/pg/psqlrc"
It is required to create both directories |
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-setuptools | ~/.python-eggs
|
$ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs
| ||
readline | ~/.inputrc
|
$ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc
| ||
rlwrap | ~/.*_history
|
[79] | $ export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap
| |
sbt | ~/.sbt
|
$ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt
| ||
screen | ~/.screenrc
|
$ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc
| ||
stack | ~/.stack
|
[80] | $ export STACK_ROOT="$XDG_DATA_HOME"/stack
| |
subversion | ~/.subversion
|
[81] [82][83] | $ svn --config-dir "$XDG_CONFIG_HOME"/subversion
| |
task | ~/.task
|
$ export TASKDATA="$XDG_DATA_HOME"/task
| ||
tig | ~/.tigrc
|
$ export TIGRC_USER="$XDG_CONFIG_HOME"/tig/tigrc
| ||
tiptop | ~/.tiptoprc
|
This will still expect the .tiptoprc file.
| ||
tmux | ~/.tmux.conf
|
[84] [85] | $ tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf
| |
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
| ||
WeeChat | ~/.weechat
|
[86] | $ export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat
| |
wget | ~/.wgetrc
|
$ export WGETRC="$XDG_CONFIG_HOME/wgetrc"
| ||
wine | ~/.wine
|
[87] | Winetricks uses XDG-alike location below for WINEPREFIX management:
| |
xorg-xauth | ~/.Xauthority
|
$ export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
| ||
xorg-xinit | ~/.xinitrc
|
$ export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc
Note that these variables are respected by xinit, but not by startx. | ||
xorg-xrdb | ~/.Xresources
|
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 .
|
Hardcoded
Application | Legacy Path | Discussion | Notes |
---|---|---|---|
adb | ~/.android
|
[88] | $ export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android
|
AMule | ~/.aMule
|
||
Android Studio | ~/.AndroidStudio2.3
|
||
anthy | ~/.anthy
|
[89] | |
Apache Directory Studio | ~/.ApacheDirectoryStudio
|
||
Audacity | ~/.audacity-data
|
||
Avidemux | ~/.avidemux6
|
||
bash | ~/.bashrc
|
[90]won't | A specified bashrc can be sourced from /etc/bashrc
|
bazaar | ~/.bazaar
|
||
cabal | ~/.cabal
|
[91] | See discussion for potential workarounds. It is not very easy or straightforward but may be possible to emulate Base Directory compliance. |
calibre | ~/Calibre Library
|
||
CUPS | ~/.cups
|
[92]won't | |
darcs | ~/.darcs
|
[93] | |
dbus | ~/.dbus
|
[94] | This should be avoidable with kdbus [citation needed]. |
Dia | ~/.dia
|
||
eclipse | ~/.eclipse
|
[95] | 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
|
[96] | 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
|
[97] | |
Flatpak | ~/.var/
|
[98] [99] | |
GHC | ~/.ghc
|
[100] | |
GNU parallel | ~/.parallel
|
||
gtk-recordMyDesktop | ~/.gtk-recordmydesktop
|
||
idris | ~/.idris
|
[101] | |
julia | ~/.juliarc.jl
|
[102] [103] | |
Linux PAM | ~/.pam_environment
|
[104] | Hardcoded in modules/pam_env/pam_env.c |
lldb | ~/.lldb
|
||
mathomatic | ~/.mathomaticrc
|
History can be moved by using rlwrap mathomatic -r with the RLWRAP_HOME environment set appropriately.
| |
milkytracker | ~/.milkytracker_config
|
[105] | |
Minecraft | ~/.minecraft
|
[106] | |
mongodb | ~/.mongorc.js
|
[107] | This Stack Overflow thread suggests a partial workaround using command-line switch --norc .
|
~/.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.
| ||
nano | ~/.nano/ ~/.nanorc
|
[108] | |
NSS | ~/.pki
|
[109] | |
OpenSSH | ~/.ssh
|
[110] | Assumed to be present by many ssh daemons and clients such as DropBear and OpenSSH. |
palemoon | ~/.moonchild productions
|
[111] | |
perf | ~/.debug
|
Hardcoded in tools/perf/util/config.c:18. | |
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
|
||
Quod Libet | ~/.quodlibet
|
[112] | |
racket | ~/.racketrc
|
||
RedNotebook | ~/.rednotebook
|
||
Remarkable | ~/.remarkable
|
||
Scribus | ~/.scribus
|
||
SeaMonkey | ~/.mozilla
|
[113] | |
Skype < 5.0 | ~/.Skype
|
[114] | |
Solfege | ~/.solfege
|
[115] | |
SpamAssassin | ~/.spamassassin
|
||
spectrwm | ~/.spectrwm
|
||
SQLite | ~/.sqlite_history
|
[116][117] | $ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc
|
Steam | ~/.steam
|
[118] | |
TeamSpeak | ~/.ts3client
|
||
TeXmacs | ~/.TeXmacs
|
||
Thunderbird | ~/.thunderbird
|
[119] | |
tllocalmgr | ~/.texlive
|
||
vim | ~/.vim
|
Since 7.3.1178 vim will search for ~/.vim/vimrc if ~/.vimrc is not found.
"$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 ~/.profile export VIMINIT=":source $XDG_CONFIG_HOME"/vim/vimrc | |
vimperator | ~/.vimperatorrc
|
[120] | $ export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"
|
wpa_cli | ~/.wpa_cli_history
|
||
xdg-utils | ~/.gnome
|
For some reason the script xdg-desktop-menu hard-codes gnome_user_dir="$HOME/.gnome/apps" . This is used by chromium amoung others.
| |
xombrero | ~/.xombrero
|
[121] | |
yarn | ~/.yarnrc
|
[122] | |
zsh | ~/.zshrc
|
[123] | 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.
|
Library and language support
- Haskell
- Officially in directory since 1.2.3.0 ab9d0810ce.
- xdg-basedir
- Python
- pyxdg
- Ruby
- rubyworks/xdg
- Vala
- Builtin support via GLib.Environment.
- See
get_user_cache_dir
,get_user_data_dir
,get_user_config_dir
, etc.
See also
- GNOME Goal: XDG Base Directory Specification Usage
- Rob Pike: "Dotfiles" being hidden is a UNIXv2 mistake.
- systemd-path(1)
- file-hierarchy(7)
- Grawity's notes on dotfiles.
- Grawity's notes on environment variables.
- ploum.net: Modify Your Application to use XDG Folders.