XDG Base Directory

提供: ArchWiki
2021年9月12日 (日) 23:24時点におけるK9i (トーク | 投稿記録)による版 (→‎ユーザーディレクトリ: XDG_RUNTIME_DIRのpam_systemdを追加(英語版に追従))
ナビゲーションに移動 検索に移動
この記事あるいはセクションは翻訳の途中です。
ノート: ソフトウェア一覧の内容は古くなっている場合があります (議論: トーク:XDG Base Directory#)

関連記事

この記事は、XDG Base Directory specification の仕様を #仕様 に、ソフトウェアのサポートを #サポート にまとめています。

仕様

フルスペック を読んでください。このセクションでは概要だけを抽出しています。

デフォルトでは pam_systemd によって XDG_RUNTIME_DIR だけが設定されます。既存のディレクトリの絶対パスを使って明示的に他の変数を定義するかどうかはユーザー次第です。

変数の定義に関する情報は 環境変数#グローバル を参照してください。

ユーザーディレクトリ

  • XDG_CONFIG_HOME
    • ユーザー個別の設定が書き込まれるディレクトリ (/etc と類似)。
    • デフォルトは $HOME/.config です。
  • XDG_CACHE_HOME
    • ユーザー個別の重要でない (キャッシュ) データが書き込まれるディレクトリ (/var/cache と類似)。
    • デフォルトは $HOME/.cache です。
  • XDG_DATA_HOME
    • ユーザー個別のデータファイルが書き込まれるディレクトリ (/usr/share と類似)。
    • デフォルトは $HOME/.local/share です。
  • XDG_STATE_HOME
    • ユーザー個別の状態ファイルをが書き込まれるディレクトリ (/var/lib と類似).
    • デフォルトは $HOME/.local/state.
  • XDG_RUNTIME_DIR
    • ソケットや名前付きパイプなどのような必須でないユーザー個別のデータファイルに使われます。
    • デフォルト値は必ずしも設定する必要はありません。設定されていない場合は警告が表示されます。
    • ディレクトリの所有者がユーザーでアクセスモードが 0700 である必要があります。
    • OS の標準機能だけで動作するファイルシステムを使用します。
    • ローカルファイルシステム上に存在する必要があります。
    • 定期的にファイルが消去される可能性があります。
    • 永続的に保持したい場合は6時間毎に変更を加えるかスティッキービットを設定します。
    • ユーザーがログインしている値だけ存在します。
    • tmpfs でマウントされることもあるので巨大なファイルは保存できません。
    • pam_systemd はこれを /run/user/$UID に設定します。

システムディレクトリ

  • XDG_DATA_DIRS
    • : でディレクトリを区切ります (PATH と類似)。
    • デフォルトは /usr/local/share:/usr/share です。
  • XDG_CONFIG_DIRS
    • : でディレクトリを区切ります (PATH と類似)。
    • デフォルトは /etc/xdg です。

サポート

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.

貢献

ソフトウェアを追加するときは適切なセクションを使ってください。

コードの評価 (vimVIMINIT など)、パッチやコンパイルオプションが必要な方法、あるいはハードコードと考えられる方法は載せるべきではありません。また、Haskell の cabalEclipse など難しい方法もハードコードとして扱います。

  • 1番目のカラムはプロジェクト名です。できればコマンド名にしてください。ソフトウェアのウェブサイトか適切な wiki の記事にリンクさせます。
  • 2番目のカラムはプロジェクトが使用するレガシーなファイルやディレクトリです。もはや読み込まれない場合でも確認できるように記述してください。
  • 3番目のカラムは XDG Base Directory に切り替わったプロジェクトのコミットあるいはバージョンです。4番目のカラムにはその議論がある場合にリンクを載せてください。
  • 最後のカラムにはサポートしていないプロジェクトのための適切な対処方法を記載します。簡潔に書いてください。曖昧な部分がある場合は自由に追記してください。

サポートしているソフトウェア

アプリケーション 旧パス 対応開始 議論 ノート
aerc-gitAUR
ALSA ~/.asoundrc 577df36

1.2.3

[1] XDG_CONFIG_HOME/alsa/asoundrc
Android Studio ~/.AndroidStudioX.X Android Studio 4.1
XDG_CONFIG_HOME/Google/AndroidStudioX.X
XDG_DATA_HOME/Google/AndroidStudioX.X
XDG_CACHE_HOME/Google/AndroidStudioX.X

Location overview by Google doesn't mention XDG - paths could be hardcoded instead of using the proper variable, though that is unlikely as Intellij IDEA, which Android Studio is based on, implements it properly as well

antimicroAUR[リンク切れ: package not found] ~/.antimicro edba864 [2] Package moved to antimicroxAUR - this entry needs to be migrated
aria2 ~/.aria2 8bc1d37 [3]
XDG_CONFIG_HOME/aria2/
XDG_CACHE_HOME/aria2/
asunder ~/.asunder ~/.asunder_album_artist ~/.asunder_album_genre ~/.asunder_album_title 2.9.0[リンク切れ 2021-05-17] [4][リンク切れ 2021-05-17] ~/.asunder としてXDG_CONFIG_HOME/asunder/asunder を、他の3つのファイルとして XDG_CACHE_HOME/asunder/asunder_album_... を使います。移行後も古いパスは削除されないため、手動で削除する必要があります。
binwalk ~/.binwalk 2051757 [5] XDG_CONFIG_HOME/binwalk
Blender ~/.blender 4293f47 [6]
byobu ~/.byobu 4.17 [7]

XDG_CONFIG_HOME/byobu

Legacy path takes precedence if present, or if XDG_CONFIG_HOME is not set.

calcurse ~/.calcurse 04162d [8] [9]
XDG_CONFIG_HOME/calcurse
XDG_DATA_HOME/calcurse

レガシーパス ~/.calcurse が存在する場合は、それが優先されます。

calibre
ccache ~/.ccache 4.0 [10]
XDG_CACHE_HOME/ccache
XDG_CONFIG_HOME/ccache/ccache.conf
citra-gitAUR ~/.citra-emu f7c3193 [11]
clangd ~/.clangd fdf7dcc [12] XDG_CONFIG_HOME/clangd/config.yml

XDG_CACHE_HOME/clangd

Project specific configuration can be specified in proj/.clangd. Configuration is combined when this is sensible. In case of conflicts, user config has the highest precedence, then inner project, then outer project.

Composer ~/.composer 1.0.0-beta1 [13]
d-feet ~/.d-feet 7f6104b
dconf
Dolphin エミュレータ ~/.dolphin-emu a498c68 [14]
dr14_tmeterAUR 7e777ca [15] XDG_CONFIG_HOME/dr14tmeter/
dunst 78b6e2b [16]
dwb
fish
fontconfig ~/.fontconfig ~/.fonts 8c255fb, [17] フォントの保存には XDG_DATA_HOME/fonts を使ってください。
fontforge ~/.FontForge ~/.PfaEdit e4c2cc7

[18] [19]

freerdp ~/.freerdp edf6e72
Emacs ~/.emacs ~/.emacs.d/init.el [20]

27.1

XDG_CONFIG_HOME/emacs/init.el

レガシーパスは XDG パスよりも優先されます。 Emacsは XDG_CONFIG_HOME/emacs/ を作成しません。 26.3 またはそれ以前での回避策: HOMEを設定することは可能ですが、予期せぬ副作用があります。

Gajim ~/.gajim 3e777ea [21]
gconfAUR ~/.gconf fc28caa [22]
GIMP ~/.gimp-x.y ~/.thumbnails

60e0cfe 483505f

[23] [24]

Git ~/.gitconfig 0d94427 XDG_CONFIG_HOME/git/config
gops 71c4255
GStreamer ~/.gstreamer-0.10 4e36f93 [25]
Godot Engine ~/.godot 73049d1

3.0-stable

[26]
GTK 3
helm ~/.helm 3.0.0
htop ~/.htoprc 93233a6
httpie ~/.httpie 5af0874 [27]
i3 ~/.i3 7c130fb
i3status ~/.i3status.conf c3f7fc4
imagemagick
Inkscape ~/.inkscape 0.47 [28]
iwd / iwctl ~/.iwctl_history d3e00d7f
intellij-idea-community-edition / intellij-idea-ultimate-editionAUR ~/.IntelliJIdeaXXXX.X 2020.1 [29]
XDG_CONFIG_HOME/JetBrains/IntelliJIdeaXXXX.X
XDG_DATA_HOME/JetBrains/IntelliJIdeaXXXX.X
XDG_CACHE_HOME/JetBrains/IntelliJIdeaXXXX.X
josm ~/.josm 11162 [30]
Kakoune
less ~/.lesshst, ~/.lesskey 590 [31] 環境変数 XDG_CONFIG_HOMEXDG_DATA_HOME の設定は 必須 です。
latexmk (in texlive-core) ~/.latexmkrc

XDG_CONFIG_HOME/latexmk/latexmkrc

lftp ~/.lftp 21dc400 [32]
lgogdownloaderAUR ~/.gogdownloader d430af6 [33]
LibreOffice

a6f56f7 25bd2ee

[34]
luarocks ~/.luarocks cd16cdd [35]
XDG_CONFIG_HOME/luarocks
XDG_CACHE_HOME/luarocks

If the legacy path ~/.luarocks is present, it will take precedence.

NSS ~/.pki 3.42 [36]
Streamlink ~/.livestreamerrc ea80591 [37]
llpp 3ab86f0 現在 llpp はディレクトリを作成する代わりに XDG_CONFIG_HOME の直下に設定を保存します。
mc ~/.mc

1b99570 0b71156 ce401d7

[38]
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 [39]
mozc ~/.mozc 91cc1e1 [40]
mpd ~/.mpdconf 87b7328
mpv ~/.mpv cb250d4 [41]
mutt ~/.mutt b17cd67 [42]
mypaint ~/.mypaint cf723b7
nano ~/.nano/ ~/.nanorc c16e79b [43]
ncmpcpp ~/.ncmpcpp

38d9f81 27cd86e

[44] [45]

ncmpcpp_directory を設定しないと error.log ファイルが ~/.ncmpcpp に保存されます。
Neovim ~/.nvim ~/.nvimlog ~/.nviminfo 1ca5646

[46] [47]

newsbeuter ~/.newsbeuter 3c57824 [48] 両方のディレクトリを作成する必要があります [49]:

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

node-gyp ~/.node-gyp 2b5ce52a [50] Only available on master as of 2018-12-04.
np2kai-gitAUR ~/.config/np2kai ~/.config/xnp2kai 56a1cc2 [51]
nteract-binAUR 4593e72 [52] [53] does not recognize workarounds for ipython/jupyter
OfflineIMAP ~/.offlineimaprc 5150de5 [54]
opentyrianAUR ~/.opentyrian 39559c3 [55]
pandoc ~/.pandoc/ 0bed0ab [56]
PCManFM ~/.thumbnails 1.3.2
pcsx2 ~/.pcsx2

87f1e8f a9020c6 3b22f0f 0a012ae

[57] [58]
Pry ~/.pryrc ~/.pry_history

a0be0cc7 15e1fc92 e9d1be0e

[59]
python-pip ~/.pip 6.0 [60]
powershellAUR 6.0
ppsspp ~/.ppsspp 132fe47 [61]
procps-ng ~/.toprc af53e17

[62] [63]

pacman ~/.makepkg.conf 80eca94 [64]
panda3dAUR ~/.panda3d 2b537d2
poezioAUR
PulseAudio ~/.pulse ~/.pulse-cookie

59a8618 87ae830 9ab510a 4c195bc

[65]
pyroomAUR
quodlibet ~/.quodlibet 3.10.0 [66]
qutebrowser
qtile

fd8686e 66d704b 51cff01

[67] 非準拠のパスにファイルやディレクトリを作成するバーウィジェットも存在しますが、大抵の場合は設定で変更できます。
rclone ~/.rclone.conf 9d36258 [68]
retroarch
rrAUR ~/.rr 02e7d41 [69]
RSpec ~/.rspec 5e395e2 [70]
rTorrent ~/.rtorrent.rc 6a8d332
RuboCop ~/.rubocop.yml 6fe5956 [71]
scummvm ~/.scummvmrc ~/.scummvm/ 7d014be [72] It is required to migrate data by hand.

mkdir "$XDG_CONFIG_HOME"/scummvm/ "$XDG_DATA_HOME"/scummvm mv ~/.scummvmrc "$XDG_CONFIG_HOME"/scummvm/scummvm.ini mv ~/.scummvm "$XDG_DATA_HOME"/scummvm/saves

sdcv ~/.stardict/ ~/.sdcv_history 958ec35 [73]
skypeforlinux-stable-binAUR ~/.Skype 8.0
snes9x ~/.snes9x 93b5f11 [74] デフォルトでは、設定ファイルはユーザーが自分で(GUIや手動で)入力することを意図して空になっています。
spectrwm ~/.spectrwm a30bbb [75]
sublime-text-devAUR キャッシュは XDG_CACHE_HOME/sublime-text-3 ではなく XDG_CONFIG_HOME/sublime-text-3/Cache に保存されます。
surfraw ~/.surfraw.conf ~/.surfraw.bookmarks

3e4591d bd8c427 f57fc71

sway ~/.sway/config 614393c [76]
systemd
teeworlds ~/.teeworlds [77]
termite
tig ~/.tigrc, ~/.tig_history 2.2 [78] ~/.local/share/tigディレクトリが存在しなければならず、そうでなければ~/.tig_historyに書き込まれます。
tmux ~/.tmux.conf 3.1 [79] 3.1 で ~/.config/tmux/tmux.conf が導入され、3.2 では XDG_CONFIG_HOME/tmux/tmux.conf が追加されました。
tmuxp ~/.tmuxp 1.5.0 [80] Fixed in 1.5.2
tmuxinatorAUR ~/.tmuxinator 2636923 [81]
Transmission ~/.transmission b71a298
util-linux 570b321
Uzbl c6fd63a [82]
vimb
VirtualBox ~/.VirtualBox 4.3 [83]
vis ~/.vis

68a25c7 d138908

[84]
VLC ~/.vlcrc 16f32e1 [85]
warsow ~/.warsow-2.x 98ece3f [86]
WeeChat ~/.weechat [87]

3.2

[88] [89]
XDG_CONFIG_HOME/weechat
XDG_CACHE_HOME/weechat
XDG_DATA_HOME/weechat
Wireshark ~/.wireshark b0b53fa
Xsettingsd ~/.xsettingsd b4999f5
xmobar ~/.xmobarrc 7b0d6bf

9fc6b37 eaccf70

[90]

[91]

XDG_CONFIG_HOME/xmobar/xmobarrc
xmonad ~/.xmonad/ 40fc10b

[92] [93]

これらはすべて存在する必要があり、存在しない場合はあきらめて ~/.xmonad/ にそれぞれフォールバックします。
XDG_CACHE_HOME/xmonad
XDG_CONFIG_HOME/xmonad
XDG_DATA_HOME/xmonad

代わりに、XMONAD_CACHE_DIR, XMONAD_CONFIG_DIRXMONAD_DATA_DIR も常に有効です。

xournalpp ~/.xournalpp

20db937f 1.1.0

[94] [95]

xsel ~/.xsel.log ee7b481 [96]

部分的にサポートしているソフトウェア

アプリケーション 旧パス 対応開始 議論 ノート
abookAUR ~/.abook abook --config "$XDG_CONFIG_HOME"/abook/abookrc --datafile "$XDG_DATA_HOME"/abook/addressbook
anacondaAUR ~/.conda/.condarc, ~/.conda/condarc, ~/.conda/condarc.d/, ~/.condarc [97] export CONDARC="$XDG_CONFIG_HOME/conda/condarc"
ack ~/.ackrc [98] export ACKRC="$XDG_CONFIG_HOME/ack/ackrc"
Anki ~/Anki, ~/Documents/Anki [99] [100] anki -b "$XDG_DATA_HOME"/Anki
aspell ~/.aspell.conf [101] 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 [102] export ATOM_HOME="$XDG_DATA_HOME"/atom
aws-cli ~/.aws 1.7.45 [103] 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 [104] 上流のバグレポートでは bazaar が ~/.config/bazaar を使うようにする議論があります。ただしログファイルは ~/.bzr.log に書き込まれます。
btpd-gitAUR ~/.btpd/ [105] btpd -d "$XDG_DATA_HOME"/.btpd

HOME="$XDG_DATA_HOME" btcli

buchhaltung-gitAUR ~/.buchhaltung [106] export BUCHHALTUNG="$XDG_CONFIG_HOME"/buchhaltung
Ruby#Bundler ~/.bundle 2.1.0 [107] [108] [109]
 export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle
 export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
 export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle

Is considered as fixed by the environment variables.

cabal ~/.cabal/ [110]
export CABAL_CONFIG="$XDG_CONFIG_HOME"/cabal/config
export CABAL_DIR="$XDG_CACHE_HOME"/cabal

See documentation on environment variables.

CABAL_DIR may be put into DATA if you consider downloaded files as such.

Rust#Cargo ~/.cargo [111] [112] [113] [114] export CARGO_HOME="$XDG_DATA_HOME"/cargo
chez-schemeAUR ~/.chezscheme_history petite --eehistory "$XDG_DATA_HOME"/chezscheme/history
Chromium ~/.chromium, ~/.pki 23057

[115] [116] [117]

cinelerra ~/.bcast5 [118] export CIN_CONFIG="$XDG_CONFIG_HOME"/bcast5
conky ~/.conkyrc 00481ee [119] conky --config="$XDG_CONFIG_HOME"/conky/conkyrc
claws-mail ~/.claws-mail [120] claws-mail --alternate-config-dir "$XDG_DATA_HOME"/claws-mail
coreutils ~/.dircolors eval $(dircolors "$XDG_CONFIG_HOME"/dircolors)
crawl ~/.crawl 末尾の '/' は必須です:

export CRAWL_DIR="$XDG_DATA_HOME"/crawl/

clusterssh ~/.clusterssh/ alias cssh="cssh --config-file '$XDG_CONFIG_HOME/clusterssh/config'"
$XDG_CONFIG_HOME/clusterssh/config
extra_cluster_file=$HOME/.config/clusterssh/clusters
extra_tag_file=$HOME/.config/clusterssh/tags

Despite this, clusterssh will still create ~/.clusterssh/.

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 [121] dosbox -conf "$XDG_CONFIG_HOME"/dosbox/dosbox.conf
Electrum Bitcoin Wallet ~/.electrum c121230 export ELECTRUMDIR="$XDG_DATA_HOME/electrum"
ELinks ~/.elinks export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks
elixir ~/.mix afaf889 [122] [123] ElixirはXDGの仕様に完全には準拠しておらず、環境変数が存在する場合にのみXDGを使用し、そうでない場合はデフォルトでレガシーパスを使用します。
Elm ~/.elm export ELM_HOME="$XDG_CONFIG_HOME"/elm
FFmpeg ~/.ffmpeg export FFMPEG_DATADIR="$XDG_CONFIG_HOME"/ffmpeg
flutterAUR ~/.flutter, ~/.flutter_settings, ~/.flutter_tool_state [124]
emscripten ~/.emscripten, ~/.emscripten_sanity, ~/.emscripten_ports, ~/.emscripten_cache__last_clear [125] 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
freecad ~/.FreeCAD [126] freecad -u "$XDG_CONFIG_HOME"/FreeCAD/user.cfg -s "$XDG_CONFIG_HOME"/FreeCAD/system.cfg

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

GDB ~/.gdbinit, ~/.gdb_history export GDBHISTFILE="$XDG_DATA_HOME"/gdb/history, 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
gnuradio ~/.gnuradio [127]
GnuPG ~/.gnupg [128] [129] export GNUPGHOME="$XDG_DATA_HOME"/gnupg, gpg2 --homedir "$XDG_DATA_HOME"/gnupg

Note that this currently does not work out-of-the-box using systemd user units and socket-based activation, since the socket directory changes based on the hash of $GNUPGHOME. You can get the new socket directory using gpgconf --dry-run --create-socketdir and have to modify the systemd user units to listen on the correct sockets accordingly.

Go ~/go [130] export GOPATH="$XDG_DATA_HOME"/go
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
gpodder ~/gPodder GPODDER_DOWNLOAD_DIR sets the download folder. GPODDER_HOME - where config and database files are stored, downloads also if GPODDER_DOWNLOAD_DIR is not set.
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 [131] 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 [132] export LEDGER_FILE="$XDG_DATA_HOME"/hledger.journal
imapfilterAUR ~/.imapfilter export IMAPFILTER_HOME="$XDG_CONFIG_HOME/imapfilter"
IPFS ~/.ipfs export IPFS_PATH="$XDG_DATA_HOME"/ipfs
ipython/jupyter ~/.ipython won't fix,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 [133] irssi --config="$XDG_CONFIG_HOME"/irssi/config --home="$XDG_DATA_HOME"/irssi
isync ~/.mbsyncrc [134] mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc
Java#OpenJDK ~/.java/.userPrefs [135] export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
k9s ~/.k9s 0.20.4 [136] export K9SCONFIG="$XDG_CONFIG_HOME"/k9s
KDE ~/.kde, ~/.kde4 [137] export KDEHOME="$XDG_CONFIG_HOME"/kde
keychain ~/.keychain [138] [139] keychain --absolute --dir "$XDG_RUNTIME_DIR"/keychain
kscriptAUR ~/.kscript [140] export KSCRIPT_CACHE_DIR="$XDG_CACHE_HOME"/kscript
ledger ~/.ledgerrc, ~/.pricedb [141] ledger --init-file "$XDG_CONFIG_HOME"/ledgerrc
Leiningen ~/.lein, ~/.m2 export LEIN_HOME="$XDG_DATA_HOME"/lein

to change the m2 repo location used by leiningen look here: Leiningen#m2_repo_location

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

Xorgの実行ユーザが事前に XDG_CACHE_HOME に書き込みアクセス権を持っていることを確認してください。

ログインに利用可能になるためXDG_RUNTIME_DIRは使わないでください。さもなければ、Xorgを起動するディスプレイマネージャー(GDMのような)は何度も失敗します。

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
maptool-binAUR ~/.maptool-rptools [144]
/opt/maptool/lib/app/MapTool.cfg
[JavaOptions]
-DMAPTOOL_DATADIR=.local/share/maptool-rptools

However, no way to change the location of this configuration file.

maven ~/.m2 [145] mvn -gs "$XDG_CONFIG_HOME"/maven/settings.xml and set <localRepository> as appropriate in settings.xml
Mathematica ~/.Mathematica export MATHEMATICA_USERBASE="$XDG_CONFIG_HOME"/mathematica
maxima ~/.maxima export MAXIMA_USERDIR="$XDG_CONFIG_HOME"/maxima
mednafen ~/.mednafen export MEDNAFEN_HOME="$XDG_CONFIG_HOME"/mednafen
minikube ~/.minikube [146] export MINIKUBE_HOME="$XDG_DATA_HOME"/minikube

Creates a further .minikube directory in MINIKUBE_HOME for whatever reason.

mitmproxy ~/.mitmproxy alias mitmproxy="mitmproxy --set confdir=$XDG_CONFIG_HOME/mitmproxy", alias mitmweb="mitmweb --set confdir=$XDG_CONFIG_HOME/mitmproxy"
MOC ~/.moc mocp -M "$XDG_CONFIG_HOME"/moc, mocp -O MOCDir="$XDG_CONFIG_HOME"/moc
monero ~/.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, ~/.my.cnf , ~/.mylogin.cnf export MYSQL_HISTFILE="$XDG_DATA_HOME"/mysql_history

~/.my.cnf only supported for mysql-server, not mysql-client [147]

~/.mylogin.cnf unsupported

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 [148] netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans
Node.js ~/.node_repl_history export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history [149]
notmuch ~/.notmuch-config [150] export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc, export NMBGIT="$XDG_DATA_HOME"/notmuch/nmbug
npm ~/.npm, ~/.npmrc [151] 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

Node.js を nvmAUR でインストールした場合 prefix は必要ありません (サポートされません)。

If you want to configure this system-wide, the file to edit is /usr/etc/npmrc, not /etc/npmrc. You can confirm that the config is loaded by running npm config list

opam ~/.opam [152] export OPAMROOT="$XDG_DATA_HOME/opam"

Both configuration and state data are stored in OPAMROOT, so this solution is not fully compliant.

pnpmAUR ~/.pnpm-store Add the line store-dir=${XDG_DATA_HOME}/pnpm-store to your npmrc.
nuget ~/.nuget/packages [153] export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
NVIDIA ~/.nv 設定されている場合はXDG_CACHE_HOMEを使用し、設定されていない場合は~/.cacheの代わりに~/.nvに不適切にフォールバックします。
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;

local_list オプションは絶対パスで指定する必要があります。

openscad ~/.OpenSCAD 7c3077b0f [154] XDG Base Directory Specification に完全には準拠していません。[155] を参照。

現在 ~/.local/shareハードコード されています。

OpenSSL ~/.rnd シードファイル .rnd の場所は RANDFILE 環境変数で設定できます。FAQ を参照。
parallel ~/.parallel 20170422 export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel
pass ~/.password-store export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
Pidgin ~/.purple [156] pidgin --config="$XDG_DATA_HOME"/purple
PostgreSQL ~/.psqlrc, ~/.psql_history, ~/.pgpass, ~/.pg_service.conf 9.2 [157] [158] 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"

両方のディレクトリを作成する必要があります: $ mkdir "$XDG_CONFIG_HOME/pg" && mkdir "$XDG_CACHE_HOME/pg"

PulseAudio ~/.esd_auth module-esound-protocol-unix.so モジュールによって生成されます。別の場所を使用するように設定することもできますが /etc/pulse/default.pa"$XDG_CONFIG_HOME"/pulse/default.pa でモジュールをコメントアウトしてしまう方が簡単です。
python-azure-cliAUR ~/.azure export AZURE_CONFIG_DIR=$XDG_DATA_HOME/azure
python-gripAUR ~/.grip export GRIPHOME="$XDG_CONFIG_HOME/grip"
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 [159] export PLTUSERHOME="$XDG_DATA_HOME"/racket
readline ~/.inputrc export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc
recoll ~/.recoll export RECOLL_CONFDIR="$XDG_CONFIG_HOME/recoll"
redis ~/.rediscli_history, ~/.redisclirc export REDISCLI_HISTFILE="$XDG_DATA_HOME"/redis/rediscli_history, export REDISCLI_RCFILE="$XDG_CONFIG_HOME"/redis/redisclirc
rlwrap ~/.*_history [160] 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 [161] export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
sbt ~/.sbt

~/.ivy2

[162] sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt (beware [163])
SageMath ~/.sage export DOT_SAGE="$XDG_CONFIG_HOME"/sage
GNU Screen ~/.screenrc export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc
simplescreenrecorder ~/.ssr/ 0.4.3 [164]

[165]

既に作成されている場合に限り$XDG_CONFIG_HOME/simplescreenrecorder/を使用します。それ以外はデフォルトの~/.ssr

mv ~/.ssr "$XDG_CONFIG_HOME"/simplescreenrecorder

spacemacs[リンク切れ 2021-05-17] ~/.spacemacs, ~/.spacemacs.d [166] [167] Move the ~/.spacemacs file.

export SPACEMACSDIR="$XDG_CONFIG_HOME"/spacemacs, mv ~/.spacemacs "$SPACEMACSDIR"/init.el

Other files need to be configured like Emacs.

Haskell#Stack ~/.stack [168] export STACK_ROOT="$XDG_DATA_HOME"/stack
subversion ~/.subversion [169] [170][171] svn --config-dir "$XDG_CONFIG_HOME"/subversion
sudo ~/.sudo_as_admin_successful 1.9.6 [172] [173] Only present when activated at compile-time (default none). An admin_flag parameter can be used in /etc/sudoers since 1.9.6.
task ~/.task, ~/.taskrc Fully supported in version 2.6
Local TeX Live TeXmf tree, TeXmf caches and config ~/texmf, ~/.texlive/texmf-var, ~/.texlive/texmf-config export TEXMFHOME=$XDG_DATA_HOME/texmf, export TEXMFVAR=$XDG_CACHE_HOME/texlive/texmf-var, export TEXMFCONFIG=$XDG_CONFIG_HOME/texlive/texmf-config
tiptopAUR ~/.tiptoprc .tiptoprc ファイルを必要とします。

tiptop -W "$XDG_CONFIG_HOME"/tiptop

uncrustify ~/.uncrustify.cfg export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg
Unison ~/.unison export UNISON="$XDG_DATA_HOME"/unison
units ~/.units_history units --history "$XDG_CACHE_HOME"/units_history
urxvtd ~/.urxvt/urxvtd-hostname export RXVT_SOCKET="$XDG_RUNTIME_DIR"/urxvtd
Vagrant ~/.vagrant.d, ~/.vagrant.d/aliases [174] export VAGRANT_HOME="$XDG_DATA_HOME"/vagrant, export VAGRANT_ALIAS_FILE="$XDG_DATA_HOME"/vagrant/aliases
virtualenv ~/.virtualenvs export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
Visual Studio Code ~/.vscode-oss/ [175] You can use export VSCODE_PORTABLE="$XDG_DATA_HOME"/vscode, which is not documented and might break unexpectedly.

Setting this makes the editor look for the contents of .config/Code - OSS in $VSCODE_PORTABLE/user-data.

WakaTime ~/.wakatime.cfg, ~/.wakatime.data, ~/.wakatime.db, ~/.wakatime.log export WAKATIME_HOME="$XDG_CONFIG_HOME/wakatime"

以下のディレクトリは手動で作成する必要があります

mkdir "$XDG_CONFIG_HOME/wakatime"

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 [176] WinetricksWINEPREFIX の管理に XDG のような場所を使用します:

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

Note that LightDM does not allow you to change this variable. If you change it nonetheless, you will not be able to login. Use startx instead or configure LightDM. According to [177] SLiM has ~/.Xauthority hardcoded.

xinit ~/.xinitrc, ~/.xserverrc [178] export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc, export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc

上記の変数は xinit には反映されますが、startx には反映されません。代わりに引数としてファイル名を指定してください:

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

xorg-xrdb ~/.Xresources, ~/.Xdefaults xrdb -load ~/.config/X11/xresources のようにパスを指定して xrdb でリソースがロードされるように Xresources使用 することができます。
Xorg ~/.xsession, ~/.xsessionrc, ~/.Xsession, ~/.xsession-errors These can be added as part of your Xorg init script (~/.xinitrc) or Xsession start script (which will often be based on /etc/X11/Xsession).

Depending on where you have configured your $XDG_CACHE_HOME, you made need to expand the paths yourself.

# xsession start script
USERXSESSION="$XDG_CACHE_HOME/X11/xsession"
USERXSESSIONRC="$XDG_CACHE_HOME/X11/xsessionrc"
ALTUSERXSESSION="$XDG_CACHE_HOME/X11/Xsession"
ERRFILE="$XDG_CACHE_HOME/X11/xsession-errors"

Unlike most other examples in this table, actual X11 init scripts will vary a lot between installations.

z ~/.z [179] export _Z_DATA="$XDG_DATA_HOME/z"
yarn ~/.yarnrc, ~/.yarn/, ~/.yarncache/, ~/.yarn-config/ 2d454b5 [180] [181] alias yarn='yarn --use-yarnrc "$XDG_CONFIG_HOME/yarn/config"'

ハードコードされているソフトウェア

アプリケーション 旧パス 議論 ノート
adb & Android Studio ~/.android/ Despite appearances otherwise, adb will always generate ~/.android/adbkeys, though it will try keys in ADB_VENDOR_KEYS as well.
aegisub ~/.aegisub/ [182]
alpine ~/.pinerc, ~/.addressbook, ~/.pine-debug[1-4], ~/.newsrc, ~/.mailcap, ~/.mime.types, ~/.pine-interrupted-mail alias alpine="alpine -p $XDG_CONFIG_HOME/alpine/pinerc"

In the above config file, some locations can be customized using options like newsrc-path= and address-book=.

Ansible ~/.ansible [183] [184]
AMule ~/.aMule
anthy ~/.anthy [185]
Apache Directory Studio ~/.ApacheDirectoryStudio
ARandR ~/.screenlayout
Arduino ~/.arduino15, ~/.jssc won't fix [186]
arduino-cli ~.arduino15/ [187] mv ~/.arduino15 $XDG_CONFIG_HOME/arduino15

Specify the new directories used by Arduino CLI in arduino-cli.yaml as mentioned in the documentation here. alias arduino-cli='arduino-cli --config-file $XDG_CONFIG_HOME/arduino15/arduino-cli.yaml'


Audacity ~/.audacity-data/ [188]
Avidemux ~/.avidemux6 [189]
Bash ~/.bashrc, ~/.bash_history, ~/.bash_profile, ~/.bash_login, ~/.bash_logout won't fix mkdir -p "$XDG_STATE_HOME"/bash

export HISTFILE="$XDG_STATE_HOME"/bash/history

bashrc/etc/bash.bashrcの中で別の場所からsourceすることができます。 インタラクティブシェルでは ~/.bashrc の代わりに --init-file <file> で指定。

Berkshelf ~/.berkshelf/
chattyAUR ~/.chatty/ [190]
cmake ~/.cmake/ Used for the user package registry ~/.cmake/packages/<package>, detailed in cmake-packages(7) § User Package Registry and the Package registry wiki page. Looks like it's hardcoded, for example in cmFindPackageCommand.cxx.
Cinnamon ~/.cinnamon/ [191]
conanAUR ~/.conan/ [192] export CONAN_USER_HOME="$XDG_CONFIG_HOME" will set the directory in which .conan/ is created. It was designed to simplify CI, but can be used here too.
cryptomatorAUR ~/.Cryptomator [193]
CUPS ~/.cups/ won't fix
darcs ~/.darcs/ [194]
dart ~/.dart, ~/.dartServer [195]
dbus ~/.dbus/ [196] Consider using dbus-broker, as it does not create or use this directory.
devede ~/.devedeng Hardcoded here
Dia ~/.dia/
dotnet-sdk ~/.dotnet/ [197]
dropbox ~/.dropbox/
Eclipse ~/.eclipse/ [198] -Dosgi.configuration.area=@user.home/.config/.. オプションで上書きできますがコマンドラインで指定するのではなく "$ECLIPSE_HOME"/eclipse.ini" に追加する必要があり $ECLIPSE_HOME の書き込み権限が要ります (Arch Linux では $ECLIPSE_HOME/usr/bin/eclipse に決め打ちされています)。
Fetchmail ~/.fetchmailrc
Firefox ~/.mozilla/ [199] [200]
Flatpak ~/.var/ [201] [202] won't fix
fltk ~/.fltk/ [203]
freesweep ~/.sweeprc [204]
gftp ~/.gftp/ [205] Following the XDG spec is planned for gftp.
GHC ~/.ghc [206]
ghidra [207]
GoldenDict ~/.goldendict/ [208]
gramps ~/.gramps/ [209]
groovy ~/.groovy/
grsync ~/.grsync/ [210]
google-cloud-sdkAUR ~/.gsutil/ [211]
gtk-recordMyDesktop ~/.gtk-recordmydesktop
hplip ~/.hplip/ [212]
idris ~/.idris [213]
Java OpenJDK ~/.java/fonts [214] export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
Java OpenJFX ~/.java/webview
jgmenu ~/.jgmenu-lockfile [215] [216]
julia ~/.juliarc.jl, ~/.julia_history, ~/.julia [217] [218] The trailing :$JULIA_DEPOT_PATH is necessary. See [219]

export JULIA_DEPOT_PATH="$XDG_DATA_HOME/julia:$JULIA_DEPOT_PATH"

kiteAUR ~/.kite/ [220]
kotlin ~/.kotlinc_history
Kubernetes ~/.kube/ [221][222]
librewolfAUR ~/.mozilla

~/.librewolf

Linux PAM ~/.pam_environment [223] modules/pam_env/pam_env.cにハードコードされています
lldb ~/.lldb, ~/.lldbinit
LMMS ~/.lmmsrc.xml [224]
mathomatic ~/.mathomaticrc, ~/.matho_history rlwrap mathomatic -r を使って RLWRAP_HOME 環境変数を適切に設定することで履歴を移動できます。
Minecraft ~/.minecraft/ won't fix
Minetest ~/.minetest/ won't fix [225]
minicom ~/.minirc.dfl アップストリームでは、~/.config/minicom以下の設定ファイルをサポートするためのTODOエントリがあります。[226]
Mono ~/.mono/
mongodb ~/.mongorc.js, ~/.dbshell [227] この Stack Overflow のスレッド ではコマンドラインスイッチの --norc を使う部分的な回避策を提案しています。
Nestopia UE ~/.nestopia/ won't fix
~/.netrc ~/.ssh のように、多数のプログラムがこの場所であることを想定しています。curl (CURLOPT_NETRC_FILE), ftp (NETRC), s-nail (NETRC) のようなプロジェクトも含まれます。別の場所を設定できるプログラムも存在しますが w3m, wget, lftp など大抵のプログラムは設定が不可能です。
nmcli ~/.nmcli-history Hardcoded to g_get_home_dir()[228] [229]
Networkmanager-openvpn ~/.cert/nm-openvpn [230]
OpenSSH ~/.ssh won't fix DropBear や OpenSSH など多数の ssh デーモンやクライアントが使用します。
palemoon ~/.moonchild productions [231]
parsec-binAUR ~/.parsec
pcsxrAUR ~/.pcsxr A -cfg flag exists, but can only be set relative to ~/.pcsxr.
perf ~/.debug tools/perf/util/config.c:29 でハードコードされています。
perl ~/.cpan Perl5's CPAN expects ~/.cpan.
portfolio-performance-binAUR ~/.PortfolioPerformance/ [232]
様々なシェルディスプレイマネージャ ~/.profile
PuTTY ~/.putty/ [233]
python ~/.python_history [234] [235] バージョン 3.4 からインタラクティブセッションの履歴は全てデフォルトで ~/.python_history に保存されます。古いバージョンと同じ方法でカスタムパスを設定できます ([236] を参照)。これには カスタムパスの使用履歴保存の無効化 も含みます。
python-poetry ~/.poetry [237] POETRY_HOME can be used but it does not separate data and config.
python-tensorflow ~/.keras [238] The issues is for tf.keras module
qmmp ~/.qmmp [239]
Qt Designer ~/.designer [240]
RedNotebook ~/.rednotebook
Remarkable ~/.remarkable
renderdocAUR ~/.renderdoc won't fix
Ren'Py ~/.renpy won't fix
repo ~/.repoconfig [241]
SANE ~/.sane/ scanimage によって .cal ファイルが作成されます。
sbcl ~/.sbclrc
/etc/sbclrc
(require :asdf)
(setf sb-ext:*userinit-pathname-function*
      (lambda () (uiop:xdg-config-home #P"sbcl/sbclrc")))

これにはroot権限が必要であり、すべてのユーザに対して~/.sbclrcの場所が変更されることに注意してください。これは、{lambdaフォーム内に既存の~/.sbclrcがあるかどうかをチェックすることで緩和できます。

scribus ~/.scribus
SeaMonkey ~/.mozilla/seamonkey [242]
Snap ~/snap/ [243]
Solfege ~/.solfege, ~/.solfegerc, ~/lessonfiles [244]
SpamAssassin ~/.spamassassin
SQLite ~/.sqlite_history, ~/.sqliterc [245] export SQLITE_HISTORY=$XDG_DATA_HOME/sqlite_history, sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc
Steam ~/.steam, ~/.steampath, ~/.steampid [246] 大抵のゲームエンジン (Unity 3D, Unreal) は仕様に準拠していますが、一部のゲームパブリッシャはパスを Steam Auto-Cloud にハードコードしているため、ゲームのセーブデータが間違ったディレクトリで同期されることがあります。
TeamSpeak ~/.ts3client export TS3_CONFIG_DIR="$XDG_CONFIG_HOME/ts3client"
terraform ~/.terraform.d/ [247]
texinfo ~/.infokey info --init-file "$XDG_CONFIG_HOME/infokey"
TeXmacs ~/.TeXmacs
Thunderbird ~/.thunderbird/ [248]
TigerVNC ~/.vnc [249]
tllocalmgr ~/.texlive
valeAUR ~/.vale.ini won't fix vale --config "$XDG_CONFIG_HOME/vale/config.ini"
vim ~/.vim, ~/.vimrc, ~/.viminfo [250] 7.3.1178 から vim は ~/.vimrc が存在しない場合に ~/.vim/vimrc を検索します。
"$XDG_CONFIG_HOME"/vim/vimrc
set runtimepath^=$XDG_CONFIG_HOME/vim
set runtimepath+=$XDG_DATA_HOME/vim
set runtimepath+=$XDG_CONFIG_HOME/vim/after

set packpath^=$XDG_DATA_HOME/vim,$XDG_CONFIG_HOME/vim
set packpath+=$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/after

let g:netrw_home = $XDG_DATA_HOME."/vim"
call mkdir($XDG_DATA_HOME."/vim/spell", 'p')
set viewdir=$XDG_DATA_HOME/vim/view | call mkdir(&viewdir, 'p')

set backupdir=$XDG_CACHE_HOME/vim/backup | call mkdir(&backupdir, 'p')
set directory=$XDG_CACHE_HOME/vim/swap   | call mkdir(&directory, 'p')
set undodir=$XDG_CACHE_HOME/vim/undo     | call mkdir(&undodir,   'p')

if !has('nvim') | set viminfofile=$XDG_CACHE_HOME/vim/viminfo | endif
~/.profile
export VIMINIT='let $MYVIMRC="$XDG_CONFIG_HOME/vim/vimrc" | source $MYVIMRC'

VIMINIT environment variable will also affect Neovim. If separate configs for Vim and Neovim are desired then the following will be a better choice:

export VIMINIT='let $MYVIMRC = !has("nvim") ? "$XDG_CONFIG_HOME/vim/vimrc" : "$XDG_CONFIG_HOME/nvim/init.vim" | so $MYVIMRC'
vimperator ~/.vimperatorrc [251] export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"

export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator

visidataAUR ~/.visidata [252]
w3m ~/.w3m [253] [254]
wpa_cli ~/.wpa_cli_history
x2goclient ~/.x2goclient alias x2goclient="x2goclient --home=$HOME/.config"
xdg-utils ~/.gnome [255] [256] [257] 何らかの理由で xdg-desktop-menu スクリプトは gnome_user_dir="$HOME/.gnome/apps" をハードコードしており、chromium などによって使われています。バグの議論は gitlab に移動され修正するPRが存在しますが、まだマージされていません。
xombrero ~/.xombrero [258][リンク切れ 2021-05-17]
xpdf ~/.xpdfrc
YARD ~/.yard [259] 誰か実装したい人がいれば、プルリクエストを受け付けます。
zenmap nmap ~/.zenmap [260] [261]
zoomAUR ~/.zoom export SSB_HOME="$XDG_DATA_HOME"/zoom
zoteroAUR ~/.zotero ~/Zotero [262]
zsh ~/.zshrc, ~/.zprofile, ~/.zshenv, ~/.zlogin, ~/.zlogout, ~/.histfile, ~/.zcompdump, ~/.zcompcache [263] ~/.zshenvZDOTDIR=$HOME/.config/zsh を export してください (ブートストラップ問題のためにハードコードされています)。/etc/zsh/zshenv にも追加することで HOME にドットファイルが必要なくなります。ただし root 権限が必要で設定はシステム全体に適用されます。

export HISTFILE="$XDG_STATE_HOME"/zsh/history

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

zstyle ':completion:*' cache-path $XDG_CACHE_HOME/zsh/zcompcache

ライブラリ

C
libXDGdirs
C99: Cloudef のシンプルな実装
C++
xdg-utils-cxx
xdgpp
Go
go-appdir
Haskell
1.2.3.0 から directory で公式に対応 ab9d0810ce
xdg-basedir
JVM
Java, Kotlin, Clojure, Scala, ...
directories-jvm
Perl
File-BaseDir
Python
pyxdg
Ruby
rubyworks/xdg
Rust
directories-rs
rust-xdg
Vala
GLib.Environment によるサポート。
get_user_cache_dir, get_user_data_dir, get_user_config_dir などを参照。

参照