XDG Base Directory

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

この記事では2003年に導入された XDG Base Directory Specification を使用しているソフトウェアを整理しています。ここでは一般的に使われているドットファイルと対応状態を並べて仕様がどれだけ使われているか示します。Base Directory Specification に対応していないソフトウェアについては、擬似的に対応させる方法を説明します。

ただし環境変数やコンパイルオプションに保存されているコードを実行したり、ソースにパッチを適用したりする方法は除外します。設定はあくまでシステム間で相互運用できるべきでありコンパイルオプションを使ってしまうと使用が制限されるためです。

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_RUNTIME_DIR
    • ソケットや名前付きパイプなどのような必須でないユーザー個別のデータファイルに使われます。
    • デフォルト値は必ずしも設定する必要はありません。設定されていない場合は警告が表示されます。
    • ディレクトリの所有者がユーザーでアクセスモードが 0700 である必要があります。
    • OS の標準機能だけで動作するファイルシステムを使用します。
    • ローカルファイルシステム上に存在する必要があります。
    • 定期的にファイルが消去される可能性があります。
    • 永続的に保持したい場合は6時間毎に変更を加えるかスティッキービットを設定します。
    • ユーザーがログインしている値だけ存在します。
    • tmpfs でマウントされることもあるので巨大なファイルは保存できません。

システムディレクトリ

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

貢献

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

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

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

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

アプリケーション 旧パス 対応開始 議論 ノート
aerc
antimicro ~/.antimicro edba864 [1]
aria2 ~/.aria2 8bc1d37 [2]
Asunder ~/.asunder

~/.asunder_album_artist

~/.asunder_album_genre

~/.asunder_album_title

2.9.0 [3] ~/.asunderXDG_CONFIG_HOME/asunder/asunder を、他の3つのファイルは XDG_CACHE_HOME/asunder/asunder_album_... を使います。移行後も古いパスは削除されないため、手動で削除する必要があります。
blender ~/.blender 4293f473 [4]
burp f2388e9
chromium ~/.chromium 23057 [5] [6]
citra ~/.citra-emu f7c3193fec [7]
composer ~/.composer 1.0.0-beta1 [8]
cower 8b70805
d-feet ~/.d-feet 7f6104b
dconf
dolphin-emu ~/.dolphin-emu a498c68 [9]
dr14-meter 7e777ca64 [10] ハードコード: $HOME/.config/dr14meter
dunst 78b6e2b1 [11]
dwb
fish
fontconfig ~/.fontconfig ~/.fonts 8c255fb1 フォントの保存には "$XDG_DATA_HOME"/fonts を使ってください。
fontforge ~/.FontForge ~/.PfaEdit e4c2cc7432 [12] [13]
freerdp ~/.freerdp edf6e7258d
Gajim ~/.gajim 3e777ea [14]
gconf ~/.gconf fc28caa7 [15]
GIMP ~/.gimp-x.y

~/.thumbnails

60e0cfe 483505f [16] [17]
git ~/.gitconfig 0d94427e
gstreamer ~/.gstreamer-0.10 4e36f93924cf [18]
gtk3
htop ~/.htoprc 93233a67
i3 ~/.i3 7c130fb54
i3status ~/.i3status.conf c3f7fc4994
imagemagick
inkscape ~/.inkscape 0.47 [19]
latexmk ~/.latexmkrc
lftp ~/.lftp 21dc400 [20]
lgogdownloader ~/.gogdownloader d430af63d000 [21]
LibreOffice a6f56f70 25bd2eec [22]
livestreamer ~/.livestreamerrc ea805917 [23]
llpp 3ab86f0cb 現在 llpp はディレクトリを作成せず XDG_CONFIG_HOME の直下に設定を保存します。
mc ~/.mc 1b9957058 0b7115647 ce401d797 [24]
Mercurial ~/.hgrc 354020079723 4.2 XDG_CONFIG_HOME/hg/hgrc
mesa 87ab26b2ab XDG_CACHE_HOME/mesa
milkytracker ~/.milkytracker_config eb487c55 [25]
mintty ~/.minttyrc cff1bd8f v2.3.7 [26]
mpd ~/.mpdconf 87b73284
mpv ~/.mpv cb250d490 [27]
mutt ~/.mutt 42fee7585f [28]
mypaint ~/.mypaint cf723b74cd
nano ~/.nano/ ~/.nanorc 036fc403 [29]
ncmpcpp ~/.ncmpcpp 38d9f811 27cd86e0 [30] [31] ncmpcpp_directory を設定しないと error.log ファイルが ~/.ncmpcpp に保存されます。
neovim ~/.nvim ~/.nvimlog ~/.nviminfo 1ca5646bb [32] [33]
newsbeuter ~/.newsbeuter 3c57824c5 [34] "$XDG_DATA_HOME"/newsbeuter"$XDG_CONFIG_HOME"/newsbeuter を作成する必要があります [35]
NVIDIA ~/.nv
OfflineIMAP ~/.offlineimaprc 5150de5 [36]
opentyrian ~/.opentyrian 8d45ff2 [37]
pcsx2 ~/.pcsx2 87f1e8f77 a9020c606 3b22f0fb0 0a012aec2 [38] [39]
pip ~/.pip 6.0 [40]
ppsspp ~/.ppsspp 132fe47c7d [41]
procps-ng ~/.toprc af53e170b9 [42] [43]
orbment
pacman ~/.makepkg.conf 80eca94c8 [44]
Panda3D ~/.panda3d 2b537d2
PulseAudio ~/.pulse ~/.pulse-cookie 59a8618dcd9 87ae8307057 9ab510a6921 4c195bcc9d5 [45]
pyroom
qutebrowser
qtile fd8686e 66d704b 51cff01 [46] 仕様と異なるファイルやディレクトリを作成するバーウィジェットも存在しますが、大抵の場合は設定で変更できます。
rclone ~/.rclone.conf 9d362589 [47]
retroarch
rr ~/.rr 02e7d41e [48]
rTorrent ~/.rtorrent.rc 6a8d332b
Skype ~/.Skype 8.0
Snes9x ~/.snes9x 19864677 [49] デフォルトの設定は空です。ROM を起動する前にユーザーが GUI や手動で設定するようになっています。
sublime-text-devAUR キャッシュは $XDG_CACHE_HOME/sublime-text-3 ではなく $XDG_CONFIG_HOME/sublime-text-3/Cache に保存されます。
surfraw ~/.surfraw.conf ~/.surfraw.bookmarks 3e4591d8 bd8c427d f57fc718
sway ~/.sway/config 614393c09 [50]
systemd
termite
tmuxinator ~/.tmuxinator 2636923 [51]
transmission ~/.transmission 5517 [52]
util-linux 570b32100
uzbl c6fd63a [53]
vimb
VirtualBox ~/.VirtualBox 4.3 [54]
vis ~/.vis [55] 68a25c75

d138908c

VLC media player ~/.vlcrc 16f32e15 [56]
warsow ~/.warsow-2.x 98ece3f [57]
wireshark ~/.wireshark b0b53fa5
xsettingsd ~/.xsettingsd 4ecd7be
xmonad ~/.xmonad 40fc10b6 [58] [59] XMONAD_CONFIG_HOME, XMONAD_DATA_HOME, XMONAD_CACHE_HOME 環境変数が使えます。
xsel ~/.xsel.log ee7b4811 [60]

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

アプリケーション 旧パス 対応開始 議論 ノート
abook ~/.abook $ abook --config "$XDG_CONFIG_HOME"/abook/abookrc --datafile "$XDG_CACHE_HOME"/abook/addressbook
Anki ~/Anki ~/Documents/Anki [61] [62] $ 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 [63] $ export ATOM_HOME="$XDG_DATA_HOME"/atom
aws-cli ~/.aws 1.7.45 [64] $ 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 [65] 上流のバグレポートでは bazaar が ~/.config/bazaar を使うようにする議論があります。ただしログファイルは ~/.bzr.log に書き込まれます。
Bundler ~/.bundle [66] [67] $ export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
cargo ~/.cargo [68] [69] [70] [71] $ 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 [72] $ conky --config="$XDG_CONFIG_HOME"/conky/conkyrc
coreutils ~/.dircolors $ source "$(dircolors "$XDG_CONFIG_HOME"/dircolors)"
crawl ~/.crawl 末尾の '/' は必須です: $ 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
ELinks ~/.elinks $ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks
emscripten ~/.emscripten ~/.emscripten_sanity ~/.emscripten_ports ~/.emscripten_cache__last_clear [73] $ 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 [74] $ freecad -u "$XDG_CONFIG_HOME"/FreeCAD/user.cfg -s "$XDG_CONFIG_HOME"/FreeCAD/system.cfg
gdb ~/.gdbinit $ gdb -nh -x "$XDG_CONFIG_HOME"/gdb/init
get_iplayer ~/.get_iplayer $ export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer
getmail ~/.getmail/getmailrc $ getmail --rcfile="$XDG_CONFIG_HOME/getmail/getmailrc" --getmaildir="$XDG_DATA_HOME/getmail"
gliv ~/.glivrc $ gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc
gpg ~/.gnupg [75] [76] $ export GNUPGHOME="$XDG_CONFIG_HOME"/gnupg

$ gpg2 --homedir "$XDG_CONFIG_HOME"/gnupg

Google Earth ~/.googleearth ~/.config/Google/GoogleEarthPlus.confKMLPathCachePath オプションで一部のパスは変更できます。
GQ LDAP クライアント ~/.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 [77] $ 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 [78] $ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie
ipython/jupyter ~/.ipython $ export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter

$ export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter

irssi ~/.irssi [79] 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 $ export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
less ~/.lesshst $ export LESSHISTFILE="$XDG_CACHE_HOME"/less/history ("$XDG_CACHE_HOME"/less ディレクトリを手動で作成する必要があります)。

$ export LESSHISTFILE=- を使うことで機能を無効化できます。

$ export LESSKEY="$XDG_CONFIG_HOME"/less/lesskey

libdvdcss ~/.dvdcss [80] $ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss
libice ~/.ICEauthority [81] $ export ICEAUTHORITY="$XDG_RUNTIME_DIR"/ICEauthority

パーミッションには注意してください。例えば gdm からユーザーの ICEauthority ファイルにアクセスする必要があります。

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 $ 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

most ~/.mostrc $ export MOST_INITFILE="$XDG_CONFIG_HOME"/mostrc
MPlayer ~/.mplayer $ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer
msmtp ~/.msmtprc $ msmtp -C "$XDG_CONFIG_HOME"/msmtp/msmtprc
MySQL ~/.mysql_history $ export MYSQL_HISTFILE="$XDG_DATA_HOME"/mysql_history
ncurses ~/.terminfo $ export TERMINFO="$XDG_DATA_HOME"/terminfo # Precludes system path searching.

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

ncmpc ~/.ncmpc ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config
Netbeans ~/.netbeans [82] $ netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans
Node.js ~/.node_repl_history $ export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history [83]
notmuch ~/.notmuch-config [84] $ export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc

$ export NMBGIT="$XDG_DATA_HOME"/notmuch/nmbug

npm ~/.npm ~/.npmrc [85] $ 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 は必要ありません (サポートされません)。

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 [86] XDG Base Directory Specification に完全には準拠していません。[87] を参照。

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

OpenSSL ~/.rnd .rnd ファイルの場所は RANDFILE 環境変数で設定できます。FAQ を参照。
pass ~/.password-store $ export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
pidgin ~/.purple [88] $ pidgin --config="$XDG_DATA_HOME"/purple
postgresql ~/.psqlrc

~/.psql_history

~/.pgpass

~/.pg_service.conf

9.2 [89]

[90]

$ 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 でモジュールをコメントアウトしてしまう方が簡単です。
pylint ~/.pylint.d [91] $ export PYLINTHOME="$XDG_CACHE_HOME"/pylint
python-setuptools ~/.python-eggs $ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs
readline ~/.inputrc $ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc
rlwrap ~/.*_history [92] $ export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap
RubyGems ~/.gem $ export GEM_HOME="$XDG_DATA_HOME"/gem

$ export GEM_SPEC_CACHE="$XDG_CACHE_HOME"/gem

rustup ~/.rustup [93] $ export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
sbt ~/.sbt

~/.ivy2

[94] $ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt ([95])
screen ~/.screenrc $ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc
stack ~/.stack [96] $ export STACK_ROOT="$XDG_DATA_HOME"/stack
subversion ~/.subversion [97][98][99] $ svn --config-dir "$XDG_CONFIG_HOME"/subversion
task ~/.task ~/.taskrc $ export TASKDATA="$XDG_DATA_HOME"/task $ export TASKRC="$XDG_CONFIG_HOME"/task/taskrc
TeX Live ~/.texliveYYYY (YYYY は年度) $ export TEXMFCNF="${XDG_CONFIG_HOME}/texmf/web2c:$(kpsewhich --var-value='TEXMFCNF')"
$XDG_CONFIG_HOME/texmf/web2c/texmf.cnf
TEXMFHOME=$XDG_DATA_HOME/texmf
TEXMFCONFIG=$XDG_CONFIG_HOME/texmf
TEXMFVAR=$XDG_CACHE_HOME/texmf
tig ~/.tigrc $ export TIGRC_USER="$XDG_CONFIG_HOME"/tig/tigrc
tiptop ~/.tiptoprc .tiptoprc ファイルを必要とします: $ tiptop -W "$XDG_CONFIG_HOME"/tiptop
tmux ~/.tmux.conf [100] [101] $ 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
WeeChat ~/.weechat [102] $ export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat

$ weechat -d "$XDG_CONFIG_HOME"/weechat

wget ~/.wgetrc ~/.wget-hsts $ export WGETRC="$XDG_CONFIG_HOME/wgetrc"

$ wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"

wine ~/.wine [103] WinetricksWINEPREFIX の管理に XDG のような場所を使用します:

$ mkdir -p "$XDG_DATA_HOME"/wineprefixes

$ export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default

xorg-xauth ~/.Xauthority $ export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
xinit ~/.xinitrc ~/.xserverrc $ export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc $ export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc

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

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

xorg-xrdb ~/.Xresources ~/.Xdefaults xrdb -load ~/.config/X11/xresources のようにパスを指定して xrdb でリソースがロードされるように Xresources使用 することができます。

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

アプリケーション 旧パス 議論 ノート
adb ~/.android [104] $ export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android
AMule ~/.aMule
Android Studio ~/.AndroidStudio2.3

~/.android

~/.java

anthy ~/.anthy [105]
Apache Directory Studio ~/.ApacheDirectoryStudio
Arduino ~/.arduino15

~/.jssc

[106]
arandr ~/.screenlayout
Audacity ~/.audacity-data
Avidemux ~/.avidemux6
bash ~/.bashrc ~/.bash_history ~/.bash_profile ~/.bash_login ~/.bash_logout [107]
  • 指定された bashrc/etc/bashrc から読み込まれます。
  • export HISTFILE="$XDG_DATA_HOME"/bash/history
  • インタラクティブシェルでは ~/.bashrc の代わりに --init-file <file> で指定。
cabal ~/.cabal [108] 対処方法は議論を見てください。簡単な方法ではありませんが Base Directory 準拠をエミュレートできます。
calibre ~/Calibre Library
CUPS ~/.cups [109]
darcs ~/.darcs [110]
dbus ~/.dbus [111] kdbus を使うことで回避できます。
Dia ~/.dia
docker ~/.docker [112] [113]
eclipse ~/.eclipse [114] -Dosgi.configuration.area=@user.home/.config/.. オプションで上書きできますがコマンドラインで指定するのではなく "$ECLIPSE_HOME"/eclipse.ini" に追加する必要があり $ECLIPSE_HOME の書き込み権限が要ります (Arch Linux では $ECLIPSE_HOME/usr/bin/eclipse に決め打ちされています)。
emacs ~/.emacs ~/.emacs.d [115] HOME を設定することができますが、予期せぬ副作用を生みます。他の Emacs 環境変数を修正してロードパスを変更して手動で init ファイルをロードする site ファイルを作成するのが確実ですが、ロードプロセスが大幅に変わってしまいます。
Fetchmail ~/.fetchmailrc
firefox ~/.mozilla [116]
Flatpak ~/.var/ [117] [118]
GHC ~/.ghc [119]
GNU parallel ~/.parallel
gtk-recordMyDesktop ~/.gtk-recordmydesktop
idris ~/.idris [120]
Java (OpenJDK) ~/.java/fonts ~/.java/webview (JavaFX) [121] (RedHat)
julia ~/.juliarc.jl ~/.julia_history [122] [123]
Linux PAM ~/.pam_environment [124] ハードコード: modules/pam_env/pam_env.c
lldb ~/.lldb ~/.lldbinit
mathomatic ~/.mathomaticrc ~/.matho_history rlwrap mathomatic -r を使って RLWRAP_HOME 変数を適切に設定することで履歴を移動できます。
Minecraft ~/.minecraft [125]
mongodb ~/.mongorc.js ~/.dbshell [126] Stack Overflow のスレッド ではコマンドラインスイッチの --norc を使うことを提案しています。
~/.netrc ~/.ssh などの多数のプログラムが使っています。curl (CURLOPT_NETRC_FILE), ftp (NETRC), s-nail (NETRC) なども使用しています。別の場所を設定できるプログラムも存在しますが w3m, wget, lftp など大抵のプログラムは設定が不可能です。
node-gyp ~/.node-gyp [127] [128] [129] 今後、部分的サポートが追加される予定です。
NSS ~/.pki [130]
OpenSSH ~/.ssh [131] DropBear や OpenSSH など多数の ssh デーモンやクライアントが使用します。
palemoon ~/.moonchild productions [132]
perf ~/.debug tools/perf/util/config.c:29 でハードコードされています。
~/.profile 様々なシェルディスプレイマネージャが使用しています。
python ~/.python_history バージョン 3.4 からインタラクティブセッションの履歴は全てデフォルトで ~/.python_history に保存されますが、古いバージョンと同じ方法でカスタムパスを設定できます ([133] を参照)。
Qt Designer ~/.designer
Quod Libet ~/.quodlibet [134]
racket ~/.racketrc
RedNotebook ~/.rednotebook
Remarkable ~/.remarkable
Ren'Py ~/.renpy [135]
SANE ~/.sane/ scanimage によって .cal ファイルが作成されます。
Scribus ~/.scribus
SeaMonkey ~/.mozilla [136]
Solfege ~/.solfege ~/.solfegerc ~/lessonfiles [137]
SpamAssassin ~/.spamassassin
spectrwm ~/.spectrwm
SQLite ~/.sqlite_history ~/.sqliterc [138][139] $ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc
Steam ~/.steam ~/.steampath ~/.steampid [140] 大抵のゲームエンジン (Unity 3D, Unreal) は仕様に準拠していますが、一部のゲームパブリッシャはパスを Steam Auto-Cloud にハードコードしているため、ゲームのセーブデータが間違ったディレクトリで同期されることがあります。
TeamSpeak ~/.ts3client
TeXmacs ~/.TeXmacs
Thunderbird ~/.thunderbird [141]
tllocalmgr ~/.texlive
vim ~/.vim ~/.vimrc ~/.viminfo 7.3.1178 から vim は ~/.vimrc が存在しない場合に ~/.vim/vimrc を検索します。
"$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,$VIMRUNTIME,$XDG_CONFIG_HOME/vim/after
~/.profile
export VIMINIT=":source $XDG_CONFIG_HOME"/vim/vimrc

https://tlvince.com/vim-respect-xdg も参照。

vimperator ~/.vimperatorrc [142] $ export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"

$ export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator

w3m ~/.w3m [143]
wpa_cli ~/.wpa_cli_history
xdg-utils ~/.gnome [144] 何らかの理由で xdg-desktop-menu スクリプトは gnome_user_dir="$HOME/.gnome/apps" をハードコードしており、chromium などによって使われています。
xombrero ~/.xombrero [145]
yarn ~/.yarnrc

~/.yarn/

~/.yarncache/

~/.yarn-config/

[146]
zenmap (nmap) ~/.zenmap [147] [148]
zsh ~/.zshrc ~/.zprofile ~/.zshenv ~/.zlogin ~/.zlogout ~/.histfile [149] ~/.zshenvZDOTDIR=$HOME/.config/zsh を export してください (ブートストラップ問題のためにハードコードされています)。/etc/zsh/zshenv にも追加することで HOME にドットファイルが必要なくなります。ただし root 権限が必要で設定はシステム全体に適用されます。

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

ライブラリと言語のサポート

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

参照