跳至內容

XDG 基本目錄

出自 Arch Linux 中文维基


此文章在#規範中總結了 XDG 基本目錄規範,並在#支持中跟進軟體支持情況。

規範

請閱讀完整規範。本節將嘗試分解其試圖實現的核心內容。

默認情況下,只有 $XDG_RUNTIME_DIR 會由 pam_systemd(8) 自動設置,其他變量用戶可根據規範自行定義。更改 XDG_RUNTIME_DIR 可能會導致 PipeWire 和 Chromium 上的屏幕共享出現問題

有關變量如何定義,請參見環境變量#全局

用戶目錄

  • $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
    • 單個目錄,用於存放運行時用戶文件或其他文件對象(如 sockets、命名管道等)。
    • 不需要提供默認值;如果未設置且沒有其他等效配置,則應發出警告。
    • 必須由用戶擁有,訪問模式為 0700
    • 文件系統符合 OS 標準。
    • 必須位於本地文件系統上。
    • 可能會定期清理。
    • 設置粘滯位或每 6 小時修改一次防止被清理。
    • 只能在用戶登錄期間存在。
    • 可能掛載為 tmpfs,故不應用於存儲大文件。
    • pam_systemd 將其設置為 /run/user/$UID
  • $HOME/.local/bin
    • 普遍用於存放用戶可執行文件。
注意:
  • 沒有 $XDG_BIN_HOME 目錄。
    • $HOME/.local 應類似 /usr/local 使用。
  • $HOME 可能在不同架構的系統間共享,造成問題:將已編譯的二進制文件安裝到 $HOME/.local/bin 目錄後,不能在架構不同的系統上使用。雖然這通常沒有什麼關係,但需謹記:若將編譯好的二進制文件存放在 $HOME 中,該目錄便部分地架構相關。

系統目錄

  • $XDG_DATA_DIRS
    • : 分隔的目錄列表,按優先級排列(類似 $PATH),用於搜索數據文件。
    • 默認應為/usr/local/share:/usr/share
  • $XDG_CONFIG_DIRS
    • : 分隔的目錄列表,按優先級排列(類似 $PATH),用於搜索配置文件。
    • 默認應為/etc/xdg

支持

本文或本節內容已經過時。

原因: 硬編碼/部分支持分類中的一些軟體現已支持規範,需要檢查。 (在en:Talk:XDG Base Directory討論)

這篇文章的某些內容需要擴充。

原因:目前的完整支持/部分支持/硬編碼分割不夠詳細且可能具有誤導性。表格可以合併成一個(增加程序如何與規範工作的欄位)或使用不同名稱的類別。 (在 en:Talk:XDG Base Directory#Add description of support categories 中討論)

此節旨在記錄日益增長的使用 XDG 基本目錄規範(於 2003 年提出)的軟體,通過列出常見的 dotfiles 及其支持狀態來展示此規範的可用性。 對於那些目前不支持 XDG 基本目錄規範的軟體,此處給出可模擬該規範的變通方案。

變通方案僅限於那些不涉及修改原始碼、在環境變量中執行代碼或修改編譯時選項的方法。不修改編譯時選項是因為配置應該能夠在系統之間移植,而編譯時選項會妨礙這一點。

希望這能作為識別 dotfiles 到底是幹什麼的、是來自哪個軟體的信息源。

貢獻

貢獻時,請確保章節分類正確。

任何變通方案都不應需要修改原始碼、在環境變量中執行代碼或修改編譯時選項,任何需要這些方法才能獲得支持的軟體都必須分類為「硬編碼」。 此外,如果過程容易出錯或困難,也應分類為「硬編碼」。

  • 「應用程式」列應該使用指向本 wiki 條目的連結、模板:Pkg模板:AUR
  • 「舊路徑」列是項目曾經擁有的所有遺留文件和目錄(每行一個),即使這些文件或目錄不再被讀取,也應保留以便查找。
  • 儘量找到項目採用 XDG 基本目錄規範的首個 commit 或版本以及任何相關的公開討論,分別收入「採用規範自」列和「討論」列(每行兩個)。
  • 「注釋」列應包括適當的變通方案或解決方案。請確認提供的方案正確且可行。

完整支持

應用程式 舊路徑 採用規範自 討論 注釋
act ~/.actrc 1656 2195 [1]

XDG_CONFIG_HOME/act/actrc

如果 ~/.actrc 存在則會與XDG規範路徑下的配置文件合併。

aerc fff1664 XDG_CONFIG_HOME/aerc/aerc.conf
ALSA ~/.asoundrc 577df36 1.2.3 [2] XDG_CONFIG_HOME/alsa/asoundrc
anacondaAUR ~/.conda/.condarc
~/.conda/condarc
~/.conda/condarc.d/
~/.condarc
4.11.0 [3] [4]
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

Google 的配置文件位置概述中沒有提到XDG⸺路徑有可能是硬編碼的,儘管這種情況不太可能發生,因為 Android Studio 所基於的 Intellij IDEA 正確實現了本規範。

Anki英語Anki ~/Anki
~/Documents/Anki
[5] [6]
[7]
如果舊路徑不存在,默認使用 $XDG_DATA_HOME/Anki2,也可使用 anki -b anki_dir 修改。
antimicrox ~/.antimicro
~/.antimicrox
edba864 [8]
apvlvAUR ~/.apvlvrc [9] [10] 現在使用 $XDG_CONFIG_HOME/apvlv/apvlvrc(如果存在)。
aria2 ~/.aria2 8bc1d37 [11] $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 ⓘ] [12][失效連結 2021-05-17 ⓘ] 使用 $XDG_CONFIG_HOME/asunder/asunder 代替原 ~/.asunder$XDG_CACHE_HOME/asunder/asunder_album_...代替其他 3 個文件。遷移後原文件需要手動刪除。
atuin ~/.config/atuin
~/.local/share/atuin
156893d $XDG_CONFIG_HOME/atuin/config.toml
$XDG_DATA_HOME/atuin/history.db
audacity ~/.audacity-data/ 3.2.0 [13] 如果舊路徑不存在,則使用以下新路徑:

$XDG_CONFIG_HOME/audacity
$XDG_DATA_HOME/audacity

binwalk ~/.binwalk 2051757 [14] $XDG_CONFIG_HOME/binwalk
bitwarden-cli ~/.config/Bitwarden CLI 1.7.1 [15] $XDG_CONFIG_HOME/Bitwarden CLI

優先遵循 $BITWARDENCLI_APPDATA_DIR 環境變量。

該目錄包含一個存放所有保險庫數據的 data.json 文件,理應存放到 $XDG_DATA_HOME 目錄。

Blender ~/.blender 4293f47 [16]
borgmatic英語borgmatic ~/.borgmatic/ 1.9.0 [17]
btop b5e709d $XDG_CONFIG_HOME/btop
byobu ~/.byobu 4.17 [18] $XDG_CONFIG_HOME/byobu

如果舊路徑存在或者 $XDG_CONFIG_HOME 環境變量未設置,則優先使用舊路徑。

cabal ~/.cabal/ 9f7dc55 v3.10.1.0 [19]
calcurse ~/.calcurse 04162d [20] [21] $XDG_CONFIG_HOME/calcurse
$XDG_DATA_HOME/calcurse

如果舊路徑 ~/.calcurse 存在,優先使用。

calibre
catfish ~/.config/catfish af65ed25 [22]
ccache ~/.ccache 4.0 [23] $XDG_CACHE_HOME/ccache
$XDG_CONFIG_HOME/ccache/ccache.conf
celestiaAUR ~/.celestiarc [24] $XDG_CONFIG_HOME/celestia/celestiarc
clangd-binAUR ~/.clangd ad38f4b3 11.0.0 [25] $XDG_CONFIG_HOME/clangd/config.yml
$XDG_CACHE_HOME/clangd

可以在 proj/.clangd 中指定項目配置。 在合理的情況下,會組合配置。如果發生衝突,則用戶配置具有最高優先級,其次是內部項目,最後是外部項目。

clifmAUR ~/.config/clifm/ 9d6e482 $XDG_CONFIG_HOME/clifm/
Composer英語Composer ~/.composer 1.0.0-beta1 [26]
crossnote ~/.mume d714a82 0.8.13 [27] $XDG_CONFIG_HOME/mume

如果舊路徑存在,優先使用。

cryptomatorAUR ~/.Cryptomator 39f9da1 [28] $XDG_CONFIG_HOME/Cryptomator
ctags (universal-ctags) ~/.ctagsrc
~/.ctags.d/
68da03a 8fb0b04 Issue 89
Pull request 2384
在啟動時,Universal-ctags 會加載 $XDG_CONFIG_HOME/ctags 目錄中文件擴展名為「.ctags」的文件。

請參閱 Option Files — Universal Ctags 0.3.0 Documentation

CUPS ~/.cups/ 23b1be6 [29]
cURL ~/.curlrc 7.73.0 [30] $XDG_CONFIG_HOME/.curlrc
dconf
Dolphin 模擬器 ~/.dolphin-emu a498c68 [31]
dr14_t.meter-gitAUR 7e777ca [32] $XDG_CONFIG_HOME/dr14tmeter/
dunst 78b6e2b [33] $XDG_CONFIG_HOME/dunst/
Emacs ~/.emacs
~/.emacs.d/init.el
[34]

27.1

$XDG_CONFIG_HOME/emacs/init.el

舊路徑優先於 XDG 路徑。Emacs 不會自行創建 $XDG_CONFIG_HOME/emacs/。 26.3 或更早版本的繞過方法:可以更改HOME,但它可能會產生意想不到的副作用。

Firefox ~/.mozilla/ 147 [35] $XDG_CONFIG_HOME/mozilla/

如果舊路徑 ~/.mozilla/firefox 存在,優先使用。截至 Firefox 152.0.5 使用 XDG 路徑存在一個 bug:

fish $XDG_CONFIG_HOME/fish/
freesweep ~/.sweeprc [36]
fltk ~/.fltk/ 7308bcd [37] [38]
fontconfig ~/.fontconfig
~/.fonts
8c255fb [39] 配置位於 $XDG_CONFIG_HOME/fontconfig/fonts.conf$XDG_CONFIG_HOME/fontconfig/conf.d/,字體存儲在 $XDG_DATA_HOME/fonts/
fontforge ~/.FontForge ~/.PfaEdit e4c2cc7 [40] [41]
freecad ~/.FreeCAD e7e2994ba

0.20.0

[42] 默認使用

$XDG_CONFIG_HOME/FreeCAD
$XDG_DATA_HOME/FreeCAD
$XDG_CACHE_HOME/FreeCAD

舊路徑可通過 FreeCAD --keep-deprecated-paths使用

freerdp ~/.freerdp edf6e72
Gajim英語Gajim ~/.gajim 3e777ea [43]
gconfAUR ~/.gconf fc28caa [44]
ghc ~/.ghci 763d285 9.4.1
ghidra ~/.ghidra/ 3b0aac9 [45]
GIMP ~/.gimp-x.y ~/.thumbnails 60e0cfe 483505f [46] [47]
Git ~/.gitconfig
~/.gitignore
~/.gitattributes
~/.git-credentials
~/.gitk
0d94427 dc79687
684e40f
Git Config Git Attributes
Git Credentials gitk
$XDG_CONFIG_HOME/git/config
$XDG_CONFIG_HOME/git/ignore
$XDG_CONFIG_HOME/git/attributes
$XDG_CONFIG_HOME/git/credentials
$XDG_CONFIG_HOME/git/gitk
gnuplot ~/.gnuplot_history a5562b1 [48]
Godot Engine ~/.godot 73049d1 3.0-stable [49]
GoldenDict ~/.goldendict/ [50] $XDG_CONFIG_HOME/goldendict/.goldendict/
goobookAUR ~/.goobookrc 3.5 [51] $XDG_CONFIG_HOME/goobookrc
gops 71c4255
GStreamer ~/.gstreamer-0.10 4e36f93 [52]
GTK 3
Haskell#Stack英語Haskell#Stack ~/.stack 2.9.3 [53] 默認使用舊目錄。使用 export STACK_XDG=1 使其符合規範。

舊方法 export STACK_ROOT="$XDG_DATA_HOME"/stack 仍然有效且優先級更高[54]

helm ~/.helm 3.0.0
htop ~/.htoprc 93233a6 $XDG_CONFIG_HOME/htop/htoprc
httpie ~/.httpie 5af0874 [55]
i3 ~/.i3 7c130fb
i3blocks i3blocks-gitAUR [56]
i3status ~/.i3status.conf c3f7fc4
i3status-rust
IdeaVim ~/.ideavimrc 0.54.1-EAP [57] $XDG_CONFIG_HOME/ideavim/ideavimrc
imagemagick
Inkscape ~/.inkscape 0.47 [58]
intellij-idea-community-edition intellij-idea-ultimate-editionAUR ~/.IntelliJIdeaXXXX.X 2020.1 [59] $XDG_CONFIG_HOME/JetBrains/IntelliJIdeaXXXX.X
$XDG_DATA_HOME/JetBrains/IntelliJIdeaXXXX.X
$XDG_CACHE_HOME/JetBrains/IntelliJIdeaXXXX.X
iotop-c ~/.config/iotop [60] [61]
ipython ~/.ipython 8.0.0 [62] $XDG_CONFIG_HOME/ipython(或當 $XDG_CONFIG_HOME 未設置或為空時默認使用的 ~/.config/ipython)不存在時使用舊路徑。
iwctl (iwd) ~/.iwctl_history d3e00d7f
josm ~/.josm 11162 [63]
jupyter ~/.jupyter 在 5.0 中可選使用 XDG 路徑,在 6.0 中可選使用舊路徑,在 7.0 中強制使用 XDG 路徑(更新日誌 $XDG_CONFIG_HOME/jupyter
Kakoune英語Kakoune
keynavAUR ~/.keynavrc $XDG_CONFIG_HOME/keynav/keynavrc
latexmk (texlive-binextra) ~/.latexmkrc $XDG_CONFIG_HOME/latexmk/latexmkrc
less ~/.lesshst
~/.lesskey
590

完整支持:598

[64] $XDG_STATE_HOME/lesshst(或當 $XDG_STATE_HOME 未設置或為空時默認使用的 ~/.local/state/lesshst),不存在則回退到 $XDG_DATA_HOME/lesshst
$XDG_CONFIG_HOME/lesskey

在 590 版本中必須設置環境變量 $XDG_CONFIG_HOME$XDG_DATA_HOME。598 及以後版本不再需要。

lftp ~/.lftp 21dc400 [65]
lgogdownloaderAUR ~/.gogdownloader d430af6 [66]
librewolfAUR ~/.librewolf 587de52 [67] 如果舊路徑 ~/.librewolf 存在,優先使用。
luarocks ~/.luarocks cd16cdd [68] $XDG_CONFIG_HOME/luarocks
$XDG_CACHE_HOME/luarocks

如果舊路徑 ~/.luarocks 存在,優先使用。

mangohud 65b90fc [69] $XDG_CONFIG_HOME/MangoHud
mc ~/.mc 1b99570 0b71156
ce401d7
[70]
Mercurial英語Mercurial ~/.hgrc 3540200 4.2 $XDG_CONFIG_HOME/hg/hgrc
mesa 87ab26b $XDG_CACHE_HOME/mesa
milkytracker ~/.milkytracker_config eb487c5 [71]
mlterm ~/.mlterm/ 71df071 [72] $XDG_CONFIG_HOME/mlterm/
mozc英語mozc ~/.mozc 91cc1e1 [73]
mpd ~/.mpdconf 87b7328
mpv ~/.mpv cb250d4 [74]
msmtp英語msmtp ~/.msmtprc af2f409 v1.6.7 $XDG_CONFIG_HOME/msmtp/config
mutt ~/.mutt b17cd67 [75]
mypaint ~/.mypaint cf723b7
nano ~/.nano/ ~/.nanorc c16e79b [76]
Neovim ~/.nvim ~/.nvimlog ~/.nviminfo 1ca5646bb [77] [78]
Nestopia UE (nestopiaAUR) ~/.nestopia/ 610c008 1.51.0 [79]
Networkmanager-openvpn ~/.cert/nm-openvpn 1.12.1 [80]
newsboat英語newsboat ~/.newsboat 3c57824 [81] $XDG_CONFIG_HOME/newsboat
$XDG_DATA_HOME/newsboat

默認使用舊目錄,若 $XDG_CONFIG_HOME/newsboat 存在則使用 XDG 目錄。舊目錄下的文件/目錄需要手動分離(參見 newsboat(1) § FILES)。

node-gyp ~/.node-gyp 2b5ce52a [82]
np2kai-gitAUR ~/.config/np2kai ~/.config/xnp2kai 56a1cc2 [83]
notmuch ~/.notmuch-config [84] mkdir -p $XDG_CONFIG_HOME/notmuch/default; mv ~/.notmuch-config $XDG_CONFIG_HOME/notmuch/default/config
NSS ~/.pki 3.42 (da45424) [85] 參閱 Chromium 了解現有問題。
nteract-binAUR 4593e72 [86] [87] 無法識別 ipython/jupyter 的繞過方法
ocaml-utopAUR ~/.utop-history

~/.utoprc

2.13.0 9729963 [88] $XDG_STATE_HOME/utop/utop-history
$XDG_CONFIG_HOME/utop/utoprc
OfflineIMAP英語OfflineIMAP ~/.offlineimaprc 5150de5 [89] $XDG_CONFIG_HOME/offlineimap/config
openal ~/.alsoftrc 3c90ed9 $XDG_CONFIG_HOME/alsoft.conf
opentyrianAUR ~/.opentyrian 39559c3 [90]
oscAUR ~/.oscrc
~/.osc_cookiejar
6bc2d3f ebcf3de [91] [92] $XDG_CONFIG_HOME/osc/oscrc
$XDG_STATE_HOME/osc/cookiejar

如果舊路徑存在,優先使用。

pacman ~/.makepkg.conf 80eca94 [93]
pam-u2f ~/.config/Yubico/u2f_keys ad52dd8 [94] $XDG_CONFIG_HOME/Yubico/u2f_keys
panda3dAUR ~/.panda3d 2b537d2
pandoc-cli ~/.pandoc/ 0bed0ab [95]
PCManFM ~/.thumbnails 1.3.2
pcsx2AUR ~/.pcsx2 87f1e8f a9020c6
3b22f0f 0a012ae
[96] [97]
pnpm ~/.pnpm-store [98] [99] [100]
poezioAUR
powershellAUR 6.0
ppsspp ~/.ppsspp 132fe47 [101]
procps-ng ~/.toprc af53e17 [102] [103]
Pry (ruby-pry) ~/.pryrc
~/.pry_history
a0be0cc7 15e1fc92
e9d1be0e
[104]
PulseAudio ~/.pulse ~/.pulse-cookie 59a8618 87ae830
9ab510a 4c195bc
[105] $XDG_CONFIG_DIR/pulse
$XDG_CONFIG_DIR/pulse/cookie
pyroomAUR
python-autoimportAUR ~/.config/autoimport/config.toml 1.2.0 [106] $XDG_CONFIG_HOME/autoimport/config.toml
python-black ~/.config/black 21.4b0 [107] $XDG_CONFIG_HOME/black
$XDG_CACHE_HOME/black/版本號/
python-pip ~/.pip 6.0 [108]
python-pipx ~/.local/pipx c3d8de9 [109] 如果舊路徑 ~/.local/pipx 存在,優先使用。使用 python-platformdirs 實現。
python-poetry ~/.poetry [110] [111]
quodlibet ~/.quodlibet 3.10.0 [112]
qutebrowser英語qutebrowser
qtile fd8686e 66d704b
51cff01
[113] 一些可選的欄小部件可以在不符合規範的路徑中創建文件或目錄,但大多數情況下仍然可配置。
rclone ~/.rclone.conf 9d36258 [114]
retroarch
ripgrep-all ~/.cache/rga 963524b v0.10.3 [115] [116]
[117]
rrAUR ~/.rr 02e7d41 [118]
RSpec (ruby-rspec) ~/.rspec 5e395e2 [119]
rTorrent ~/.rtorrent.rc 6a8d332
rubocop ~/.rubocop.yml 6fe5956 [120]
Ruby#RubyGems ~/.gem 3.0.0 (5c6269c) [121] $XDG_CONFIG_HOME/gem/gemrc
$XDG_CONFIG_HOME/irb
$XDG_DATA_HOME/gem
$XDG_DATA_HOME/rdoc
sandboxd ~/.sandboxrc [122] [123] $XDG_CONFIG_HOME/sandboxd/sandboxrc
scribus ~/.scribus 1.5.3
scummvm ~/.scummvmrc ~/.scummvm/ 7d014be [124] 需要手動遷移數據。
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 [125]
shellcheck ~/.shellcheckrc 581bcc3 $XDG_CONFIG_HOME/shellcheckrc

有關更多信息,請參閱 shellcheck(1) § RC FILES

snes9x ~/.snes9x 93b5f11 [126] 默認情況下,配置文件留空,以便用戶填寫(通過 GUI 或手動)。
spectrwm英語spectrwm ~/.spectrwm a30bbb [127]
sublime-text-devAUR build 4105 在版本 4105 之前,緩存被放置在 $XDG_CONFIG_HOME/sublime-text-3/Cache 中。
surfraw ~/.surfraw.conf ~/.surfraw.bookmarks 3e4591d bd8c427
f57fc71
sway ~/.sway/config 614393c [128] $XDG_CONFIG_HOME/sway/config
sxhkd
systemd
teeworlds ~/.teeworlds [129]
termite英語termite
tig ~/.tigrc
~/.tig_history
2.2 [130] $XDG_DATA_HOME/tig(或默認的 ~/.local/share/tig 目錄)必須存在否則將會寫入 ~/.tig_history
TigerVNC ~/.vnc 1.14.0 [131]
tmux ~/.tmux.conf 3.1 3.2 [132] 3.1 引入了 ~/.config/tmux/tmux.conf 並在 3.2 添加了 $XDG_CONFIG_HOME/tmux/tmux.conf 支持。
tmuxinatorAUR ~/.tmuxinator 2636923 [133]
tmuxp英語tmuxp ~/.tmuxp 1.5.0 1.5.2 [134]
tmuxinatorAUR ~/.tmuxinator 2636923 [135]
Transmission ~/.transmission b71a298
圖標主題規範(Icon Theme Specification) ~/.icons/
~/.themes/
0.7 $XDG_DATA_HOME/icons
$XDG_DATA_HOME/themes

為了使 X11 Qt、GTK 程序或 Wayland Qt 程序使用 $XDG_DATA_HOME/icons 中的光標,需要配置 $XCURSOR_PATH 環境變量。

util-linux 570b321
Uzbl英語Uzbl c6fd63a [136]
vale ~/.vale.ini 3.0.0
vim ~/.vim
~/.vimrc
~/.viminfo
./.文件名.swp
./.文件名.un~
./文件名~
c9df1fb 4f04efb [137] [138] $XDG_CONFIG_HOME/vim/(原 ~/.vim 下的配置文件)
$XDG_CONFIG_HOME/vim/vimrc

默認僅使用以上 XDG 目錄/文件,其他需創建 $XDG_CONFIG_HOME/vim/ 目錄後運行 $VIMRUNTIME/xdg.vim 啟用。(見 :h xdg-base-dir) 以下文件/目錄需要運行 $VIMRUNTIME/xdg.vim 啟用:

$XDG_STATE_HOME/vim/viminfo

以下目錄需要在 $VIMRUNTIME/xdg.vim 中取消注釋部分行再運行啟用:

$XDG_DATA_HOME/vim/undo/
$XDG_DATA_HOME/vim/(原 ~/.vim/pack/~/.vim/ 目錄下的 Netrw 數據)
$XDG_DATA_HOME/vim/view/(原 ~/.vim/view/
$XDG_DATA_HOME/vim/spell/(原 ~/.vim/spell/
$XDG_STATE_HOME/vim/swap/
$XDG_STATE_HOME/vim/backup/

vimb
VirtualBox ~/.VirtualBox 4.3 [139] 濫用 $XDG_CONFIG_HOME 目錄,向其中寫入數百 KB 的 *.log*.dat 文件。
vis ~/.vis 68a25c7 d138908 [140]
VLC ~/.vlcrc 16f32e1 [141]
warsow ~/.warsow-2.x 98ece3f [142]
WeeChat英語WeeChat ~/.weechat [143]

3.2

[144] [145] $XDG_CONFIG_HOME/weechat
$XDG_CACHE_HOME/weechat
$XDG_DATA_HOME/weechat
$XDG_RUNTIME_DIR/weechat
Wireshark ~/.wireshark b0b53fa v2.1.0
wxWidgets [146]
XKB ~/.xkb $XDG_CONFIG_HOME/xkb

僅支持 Wayland [147]

Xsettingsd ~/.xsettingsd b4999f5
xmobar英語xmobar ~/.xmobarrc 7b0d6bf 9fc6b37
eaccf70
[148] [149] $XDG_CONFIG_HOME/xmobar/xmobarrc
xmonad ~/.xmonad/ 40fc10b

[150] [151]

以下所有目錄必須都存在,否則回退到 ~/.xmonad/

$XDG_CACHE_HOME/xmonad/
$XDG_CONFIG_HOME/xmonad/
$XDG_DATA_HOME/xmonad/

也可以使用更高優先級的 $XMONAD_CACHE_DIR$XMONAD_CONFIG_DIR$XMONAD_DATA_DIR 環境變量。

xonsh ~/.xonshrc [152] $XDG_CONFIG_HOME/xonsh/rc.xsh
xournalpp ~/.xournalpp 20db937f 1.1.0 [153] [154]
xsel ~/.xsel.log ee7b481 [155]
Xsettingsd ~/.xsettingsd b4999f5
yapf a0b51d2 [156] $XDG_CONFIG_HOME/yapf/style
Zim e42b8b0 $XDG_CONFIG_HOME/zim/preferences.conf
$XDG_CONFIG_HOME/zim/notebooks.list
zoxide ~/.zo 0.3.0 [157]

部分支持

應用程式 舊路徑 採用規範自 討論 注釋
abookAUR ~/.abook abook --config "$XDG_CONFIG_HOME"/abook/abookrc --datafile "$XDG_DATA_HOME"/abook/addressbook
ack ~/.ackrc [158] export ACKRC="$XDG_CONFIG_HOME/ack/ackrc"
Ansible英語Ansible ~/.ansible 2.14 [159] [160]
[161]
export ANSIBLE_HOME="${XDG_CONFIG_HOME}/ansible"
export ANSIBLE_GALAXY_CACHE_DIR="${XDG_CACHE_HOME}/ansible/galaxy_cache"
export ANSIBLE_LOCAL_TEMP="${XDG_CACHE_HOME}/ansible/tmp"
export ANSIBLE_SSH_CONTROL_PATH_DIR="${XDG_CACHE_HOME}/ansible/cp"
export ANSIBLE_ASYNC_DIR="${XDG_CACHE_HOME}/ansible_async"
asdf-vmAUR ~/.asdfrc
~/.asdf/
[162]
export ASDF_CONFIG_FILE="${XDG_CONFIG_HOME}/asdf/asdfrc"
export ASDF_DATA_DIR="${XDG_DATA_HOME}/asdf"
aspell ~/.aspell.conf [163] 非常不完整。以下內容重新定位了 en 詞典,但為了簡潔起見,這裡沒有指定其他可能的詞典。
export ASPELL_CONF="per-conf $XDG_CONFIG_HOME/aspell/aspell.conf; personal $XDG_DATA_HOME/aspell/en.pws; repl $XDG_DATA_HOME/aspell/en.prepl"
aws-cli ~/.aws 1.7.45 [164]
export AWS_SHARED_CREDENTIALS_FILE="$XDG_CONFIG_HOME"/aws/credentials
export AWS_CONFIG_FILE="$XDG_CONFIG_HOME"/aws/config
azure-cli ~/.azure export AZURE_CONFIG_DIR=$XDG_DATA_HOME/azure
bash-completion ~/.bash_completion export BASH_COMPLETION_USER_FILE="$XDG_CONFIG_HOME"/bash-completion/bash_completion
bashdbAUR ~/.bashdbinit
~/.bashdb_hist
就像 [165] 中所述,您可以指定一個文件來運行命令。因此,將 init 文件移動到 $XDG_CONFIG_HOME/bashdb/bashdbinit 並創建一個別名 alias bashdb='bashdb -x ${XDG_CONFIG_HOME:-$HOME/.config}/bashdb/bashdbinit'。不幸的是,歷史文件是硬編碼的 [166]
bazaar ~/.bazaar
~/.bzr.log
2.3.0 [167] 上游 bug 討論指出,如果存在 ~/.config/bazaar,bazaar 將使用它。日誌文件 ~/.bzr.log 可能仍會被寫入。
bitwarden ~/.bitwarden-ssh-agent.sock [168] export BITWARDEN_SSH_AUTH_SOCK="$XDG_RUNTIME_DIR"
bogofilter-db ~/.bogofilter 0.7.5 [169] export BOGOFILTER_DIR="$XDG_DATA_HOME"/bogofilter
btpd-gitAUR ~/.btpd/ [170] btpd -d "$XDG_DATA_HOME"/.btpd

HOME="$XDG_DATA_HOME" btcli

bunAUR ~/.bun/ [171] 當明確設置了 $XDG_CONFIG_HOME$XDG_CACHE_HOME 和/或 $XDG_DATA_HOME 時,Bun 將優先使用它們。或者,可以使用 export BUN_INSTALL="$XDG_DATA_HOME"/bun 來設置 bun 目錄的主位置。
bup ~/.bup/ export BUP_DIR="$XDG_DATA_HOME"/bup[並把 ~/.bup(如果存在)移動過去]

即使未設置 $BUP_DIR,也能正確使用 $XDG_CACHE_HOME 作為緩存目錄。

calc ~/.calc_history
export CALCHISTFILE="$XDG_CACHE_HOME"/calc_history
Rust#Cargo ~/.cargo [172] [173]
[174] [175]
export CARGO_HOME="$XDG_DATA_HOME"/cargo
cataclysm-dda ~/.cataclysm-dda 0.D-1 [176] 由於需要編譯時選項,屬於部分支持。
cd-bookmark ~/.cdbookmark [177] export CD_BOOKMARK_FILE=$XDG_CONFIG_HOME/cd-bookmark/bookmarks

或者使用具有原生 XDG 支持的 fork:[178]

cgdb ~/.cgdb 0.8.0 [179] [180] 設置 export CGDB_DIR=$XDG_CONFIG_HOME/cgdb 並將配置文件移動到 XDG_CONFIG_HOME/cgdb/cgdbrc
chez-schemeAUR ~/.chezscheme_history petite --eehistory "$XDG_DATA_HOME"/chezscheme/history
chktex (texlive-binextra) ~/.chktexrc 將配置文件移動到 $XDG_CONFIG_HOME/chktex/.chktexrc(注意前導點)和 export CHKTEXRC=$XDG_CONFIG_HOME/chktex
Chromium ~/.chromium
~/.pki
23057 [181] [182]
[183]
故意(根據這些來源)破壞 ~/.config,向其中寫入數百兆字節的緩存數據,非常不支持。

儘管 NSS 本身現在允許使用 XDG 規範,由於 Chromium 未正確設置 NSS,創建了 .pki。這導致其下游也無法正常工作(Qt WebEngine 尤其影響了許多情況,例如 KMail 等)

cinelerra ~/.bcast5 [184] export CIN_CONFIG="$XDG_CONFIG_HOME"/bcast5
claude-codeAUR ~/.claude
~/.claude.json
[185] export CLAUDE_CONFIG_DIR="$XDG_CONFIG_HOME"/claude
claws-mail ~/.claws-mail [186] claws-mail --alternate-config-dir "$XDG_DATA_HOME"/claws-mail
clustersshAUR ~/.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

即使使用以上方案,clusterssh 仍會創建 ~/.clusterssh/

conky ~/.conkyrc 00481ee [187] conky --config="$XDG_CONFIG_HOME"/conky/conkyrc
claws-mail ~/.claws-mail [188] 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

儘管如此,clusterssh 仍然會創建 ~/.clusterssh/

CUDA ~/.nv export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv
dict英語dict ~/.dictrc dict -c "$XDG_CONFIG_HOME"/dict/dictrc
discord ${XDG_CONFIG_HOME}/discord 自 0.0.27 版起:

文檔未記錄,但常用: export DISCORD_USER_DATA_DIR="${XDG_DATA_HOME}"

來源:<discord_system_package_root>/resources/app.asar

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 [189] dosbox -conf "$XDG_CONFIG_HOME"/dosbox/dosbox.conf
dub ~/.dub v1.30.0-beta.1 Dub 使用 ~/.dub 目錄進行用戶設置和緩存下載的軟體包。該目錄只能整體移動,方法是使用 export DUB_HOME="path/to/new/dub"
Electrum Bitcoin Wallet ~/.electrum c121230 export ELECTRUMDIR="$XDG_DATA_HOME/electrum"
ELinks英語ELinks ~/.elinks export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks
elixir ~/.mix
~/.hex
afaf889 [190] [191] Elixir 並不完全符合 XDG 規範,只有當 MIX_XDG 變量設置為特殊值時,它才會使用 XDG,否則它將默認使用舊路徑。

export MIX_XDG="true"

Elm ~/.elm export ELM_HOME="$XDG_CONFIG_HOME"/elm
emscripten ~/.emscripten
~/.emscripten_sanity
~/.emscripten_ports
~/.emscripten_cache__last_clear
[192] 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
erlang ~/.erlang.cookie [193] [194] Erlang 不完全支持 XDG 規範,最後才會在 $XDG_CONFIG_HOME 目錄查找文件。

mkdir "$XDG_CONFIG_HOME"/erlang mv ~/.erlang.cookie "$XDG_CONFIG_HOME"/erlang

factorioAUR ~/.factorio/ [195] [196] Factorio 支持使用配置文件手動指定數據路徑:[197]
__Game_Install_directory/config-path.cfg
use-system-read-write-data-directories=true
__Game_Install_directory/config/config.ini
[path]
read-data=__PATH__executable__/../../data
write-data=.local/share/factorio
fceux ~/.fceux/ [198] export FCEUX_HOME="$XDG_CONFIG_HOME"/fceux。Fceux 將在 $FCEUX_HOME 內創建 .fceux 目錄。
FFmpeg ~/.ffmpeg export FFMPEG_DATADIR="$XDG_CONFIG_HOME"/ffmpeg
flutterAUR ~/.flutter
~/.flutter_settings
~/.flutter_tool_state~/.pub-cache
[199]
fzf-gitAUR ~/.fzf.bash~/.fzf.zsh [200] 如果使用 --xdg 調用安裝腳本,則 shell init 文件將安裝到 XDG_CONFIG_HOME/fzf,例如 /usr/local/opt/fzf/install --xdg
GDB ~/.gdbinit
~/.gdb_history
11.1 $XDG_CONFIG_HOME/gdb/gdbinit

export GDBHISTFILE="$XDG_DATA_HOME"/gdb/history

gemini-cli ~/.gemini/ 0.25.0 [201] export GEMINI_CLI_HOME="$XDG_CONFIG_HOME"/gemini
get_iplayerAUR ~/.get_iplayer export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer
getmail英語getmail ~/.getmail/getmailrc getmail --rcfile="$XDG_CONFIG_HOME/getmail/getmailrc" --getmaildir="$XDG_DATA_HOME/getmail"
ghcup-hs-binAUR ~/.ghcup [202] [203] export GHCUP_USE_XDG_DIRS=true

環境變量 GHCUP_USE_XDG_DIRS 可以設置為任何非空值。請參閱 [204]

github-copilot-cliAUR ~/.copilot [205] export COPILOT_HOME="$XDG_CONFIG_HOME"/copilot
gitsign ~/.sigstore/root [206] export TUF_ROOT="$XDG_DATA_HOME"/sigstore/root
glivAUR ~/.glivrc gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc
GNU Screen ~/.screenrc
~/.screen/
export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc
export SCREENDIR="${XDG_RUNTIME_DIR}/screen"
GnuPG ~/.gnupg [207] [208] export GNUPGHOME="$XDG_DATA_HOME"/gnupggpg2 --homedir "$XDG_DATA_HOME"/gnupg

請注意,目前使用 systemd 用戶單元和基於 socket 的激活無法開箱即用,因為 socket 目錄會根據 $GNUPGHOME 的哈希值發生變化。您可以使用 gpgconf --list-dirs socketdir 獲取新的 socket 目錄,並必須修改 systemd 用戶單元以相應地監聽正確的 socket。還必須使用以下 gpg-agent.service 插入文件(或以其他方式將 GNUPGHOME 環境變量傳遞給在 systemd 中運行的代理),否則您可能會遇到「丟失」私鑰的問題:

[Service]
Environment="GNUPGHOME=%h/.local/share/gnupg"

如果您使用 GPG 作為您的 SSH 代理,請將 SSH_AUTH_SOCK 設置為 gpgconf --list-dirs agent-ssh-socket 的輸出,而不是某些硬編碼值。

gnuradio ~/.gnuradio [209] GNU Radio:

export GR_PREFS_PATH="$XDG_CONFIG_HOME"/gnuradio GNU Radio Companion: export GRC_PREFS_PATH="$XDG_CONFIG_HOME"/gnuradio/grc.conf

Go ~/go [210] export GOPATH="$XDG_DATA_HOME"/goexport GOMODCACHE="$XDG_CACHE_HOME"/go/mod

如果未設置 GOMODCACHE,則默認為 $GOPATH/pkg/mod(參見 [211])。 支持 GOCACHE,默認為 $XDG_CACHE_HOME/go-build(參見 [212])。

Google Earth ~/.googleearth 可以使用 ~/.config/Google/GoogleEarthPro.conf 中的 KMLPathCachePath 選項更改某些路徑。
gopass ~/.password-store 覆蓋 ~/.config/gopass/config.yml 中的設置:
~/.config/gopass/config.yml
root:
path: gpgcli-gitcli-fs+file:///home/<userid>/.config/password-store

$PASSWORD_STORE_DIR 僅在初始化時支持。

gpodder ~/gPodder GPODDER_DOWNLOAD_DIR 用於設置下載文件夾。GPODDER_HOME 用於指定配置和資料庫文件的存儲位置,同時如果未設置 GPODDER_DOWNLOAD_DIR,下載的文件也會保存在此目錄中。
GQ LDAP client ~/.gq
~/.gq-state
1.51 export GQRC="$XDG_CONFIG_HOME"/gqrcexport GQSTATE="$XDG_DATA_HOME"/gq/gq-statemkdir -p "$(dirname "$GQSTATE")"
Gradle英語Gradle ~/.gradle [213]

[214]

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":"$XDG_CONFIG_HOME/gtk-2.0/gtkrc.mine"

如果使用了 Lxappearance~/.gtkrc-2.0 可能會不斷被創建,因為點擊「應用」時的定製設置會寫入到這個文件。該路徑在 Lxappearance 中是硬編碼的,但作為一個輸出文件,這些設置可以被反覆移動到該位置。

要阻止 KDE Plasma 創建此文件,請禁用「GNOME/GTK 設置同步」後台服務。

hledger ~/.hledger.journal [215] export LEDGER_FILE="$XDG_DATA_HOME"/hledger.journal
Houdini ~/houdiniMAJOR.MINOR) [216]

[217]

export HOUDINI_USER_PREF_DIR="$XDG_CACHE_HOME"/houdini__HVER__

這個變量的值必須包含子字符串 __HVER__,它將在運行時被替換成當前的 MAJOR.MINOR 版本號。

imapfilterAUR ~/.imapfilter export IMAPFILTER_HOME="$XDG_CONFIG_HOME/imapfilter"
IPFS英語IPFS ~/.ipfs export IPFS_PATH="$XDG_DATA_HOME"/ipfs
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 [218] irssi --config="$XDG_CONFIG_HOME"/irssi/config --home="$XDG_DATA_HOME"/irssi
isync英語isync ~/.mbsyncrc [219] mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc
Java#OpenJDK ~/.java/.userPrefs [220] export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
jupyter ~/.jupyter 5.0.0rc0 [221] [222] python-jupyter-core < v5.0.0:

export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter

v5.0.0 <= python-jupyter-core < v6.0.0:

export JUPYTER_PLATFORM_DIRS="1" (see [223])

python-jupyter-core >= v6.0.0:完整支持(通過python-platformdirs),默認開啟

k9s ~/.k9s 0.20.4 [224] export K9SCONFIG="$XDG_CONFIG_HOME"/k9s
KDE 4 ~/.kde
~/.kde4
[225] export KDEHOME="$XDG_CONFIG_HOME"/kde

KDE 4 使用 $KDEHOME不建議在更新的版本上使用此變量。

keychain ~/.keychain [226] [227] keychain --absolute --dir "$XDG_RUNTIME_DIR"/keychain
kodi ~/.kodi [228] [229] KODI_DATA=$XDG_DATA_HOME/kodi
kscriptAUR ~/.kscript [230] export KSCRIPT_CACHE_DIR="$XDG_CACHE_HOME"/kscript
ledger ~/.ledgerrc
~/.pricedb
[231] ledger --init-file "$XDG_CONFIG_HOME"/ledgerrc
Leiningen英語Leiningen ~/.lein
~/.m2
[232] export LEIN_HOME="$XDG_DATA_HOME"/lein

要更改 Leiningen 使用的 m2 倉庫位置,請參閱:Leiningen#m2 倉庫位置英語Leiningen#m2 repo location

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

確保提前設置 XDG_CACHE_HOME,使其指向運行 Xorg 的用戶有寫權限的目錄。

不要使用 XDG_RUNTIME_DIR,因為它是在登錄之後才可用的。否則啟動 Xorg 的顯示管理器(如 GDM)將會反覆失敗。

LibreOffice [235] LibreOffice 將所有數據存儲在 $XDG_CONFIG_HOME/libreoffice/4/user/ 目錄下,包括運行時文件、用戶數據、緩存和擴展。其中一些路徑可以在工具(T) > 選項(O)⋯ > LibreOffice > 路徑中進行更改。
libx11 ~/.XCompose
~/.compose-cache
export XCOMPOSEFILE="$XDG_CONFIG_HOME"/X11/xcomposeexport XCOMPOSECACHE="$XDG_CACHE_HOME"/X11/xcompose
ltrace ~/.ltrace.conf ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf
Luanti ~/.minetest/ [236] export MINETEST_USER_PATH="$XDG_DATA_HOME"/luanti
lynx /etc/lynx.cfg export LYNX_CFG="$XDG_CONFIG_HOME"/lynx.cfg
m17n-db ~/.m17n.d [237]
MAME ~/.mame 如果使用 Arch 的 mame 軟體包,/usr/bin/mame 將是一個包裝腳本,它會自動創建並強制使用 ~/.mame。請先運行一次 /usr/bin/mame 以生成該目錄,隨後可將其移動至 $XDG_DATA_HOME/mame。編輯 mame.ini,將其中所有的 $HOME/.mame 替換掉,之後便可通過 /usr/lib/mame/mame -inipath $XDG_DATA_HOME/mame 啟動 MAME。
maptool-binAUR ~/.maptool-rptools [238]
/opt/maptool/lib/app/MapTool.cfg
[JavaOptions]
-DMAPTOOL_DATADIR=.local/share/maptool-rptools

但是,沒有辦法改變這個配置文件的位置。

Mathematica ~/.Wolfram export WOLFRAM_USERBASE="$XDG_CONFIG_HOME"/Wolfram

曾為 $MATHEMATICA_USERBASE,參見 從 Mathematica 升級到 Wolfram

maven ~/.m2 [239] export MAVEN_OPTS=-Dmaven.repo.local="$XDG_DATA_HOME"/maven/repository
export MAVEN_ARGS="--settings $XDG_CONFIG_HOME/maven/settings.xml"
mvn -gs "$XDG_CONFIG_HOME"/maven/settings.xml並在 settings.xml 中根據需要設置 <localRepository>
maxima ~/.maxima export MAXIMA_USERDIR="$XDG_CONFIG_HOME"/maxima
mednafen ~/.mednafen export MEDNAFEN_HOME="$XDG_CONFIG_HOME"/mednafen
minikube ~/.minikube [240] export MINIKUBE_HOME="$XDG_DATA_HOME"/minikube

無論出於什麼原因,這會在 MINIKUBE_HOME 中創建一個額外的 .minikube 目錄。

minio-client ~/.mc [241] export MC_CONFIG_DIR="$XDG_CONFIG_HOME"/minio-client
mitmproxy ~/.mitmproxy alias mitmproxy="mitmproxy --set confdir=$XDG_CONFIG_HOME/mitmproxy"
alias mitmweb="mitmweb --set confdir=$XDG_CONFIG_HOME/mitmproxy"
MOC英語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
mtpaint ~/.mtpaint [242]
/etc/mtpaint/mtpaintrc
userINI = ~/.config/mtpaint
mypy ~/.config/mypy/config
~/.mypy.ini
~/.mypy_cache
v0.670 [243] [244] $XDG_CONFIG_HOME/mypy/config
export MYPY_CACHE_DIR="$XDG_CACHE_HOME"/mypy
MySQL ~/.mysql_history
~/.my.cnf
~/.mylogin.cnf
1=export MYSQL_HISTFILE="$XDG_DATA_HOME"/mysql_history

~/.my.cnf 僅支持 mysql-server,不支持 mysql-client [245]

~/.mylogin.cnf 不支持。

mysql-workbench ~/.mysql/workbench 可以使用 --configdir 標誌運行 MySQL Workbench,例如 mysql-workbench --configdir="$XDG_DATA_HOME/mysql/workbench"。該目錄需要手動創建,因為 MySQL Workbench 默認位置是 $HOME/.mysql/workbench
n /usr/local/n export N_PREFIX=$XDG_DATA_HOME/n
ncmpc ~/.ncmpc ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config
ncmpcpp ~/.ncmpcpp
~/.lyrics
38d9f81 27cd86e [246] [247]
[248]
應設置 ncmpcpp_directory,以避免在 ~/.ncmpcpp 中生成 error.log 文件;同時可將 lyrics_directory 設置為 ~/.cache/ncmpcpp-lyrics,以避免使用 ~/.lyrics
ncurses ~/.terminfo 排除系統路徑搜索:

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

Netbeans英語Netbeans ~/.netbeans [249] netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans
Node.js ~/.node_repl_history [250] export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history
nodenvAUR ~/.nodenv export NODENV_ROOT="$XDG_DATA_HOME"/nodenv
npm ~/.npm
~/.npmrc
[251] export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc
npmrc
prefix=${XDG_DATA_HOME}/npm
cache=${XDG_CACHE_HOME}/npm
init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js
logs-dir=${XDG_STATE_HOME}/npm/logs

如果 Node.js 是通過 nvmAUR 安裝的,則 prefix 是不必要的(且不受支持)。

nuget ~/.nuget/packages [252] export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
NVIDIA ~/.nv 如果設置則使用 XDG_CACHE_HOME,否則不正確地回退到 ~/.nv 而不是 ~/.cache
nvidia-settings ~/.nvidia-settings-rc [253] nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings
nvm ~/.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 選項必須給出絕對路徑。

omnisharp-roslyn-binAUR ~/.omnisharp/ [254] [255] export OMNISHARPHOME="$XDG_CONFIG_HOME/omnisharp"
opam ~/.opam [256] export OPAMROOT="$XDG_DATA_HOME/opam"

配置和狀態數據都存儲在 $OPAMROOT 中,因此該解決方案不完全兼容。

openai-codex ~/.codex/ 5fc9fc3 [257] export CODEX_HOME="$XDG_CONFIG_HOME"/codex
openscad ~/.OpenSCAD 7c3077b0f [258] 不完全遵守 XDG 基本目錄規範,請參閱 [259]

目前它硬編碼 ~/.local/share

packettracerAUR ~/.packettracer
~/pt
具有 GUI 配置來更改 PT 安裝目錄,~/pt選項 > 首選項 > 管理 > 用戶文件夾)。此路徑寫入文件 ~/.packettracer

除非手動重新創建 .packettracer 文件,否則無論此設置如何,日誌文件仍可能被寫入 ~/pt/logs

parallel ~/.parallel 20170422 export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel
pass ~/.password-store export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
pdfsamAUR ~/.openjfx export _JAVA_OPTIONS=-Djavafx.cachedir="$XDG_CACHE_HOME"/openjfx
Phive ~/.phive [260]

以及 [261][262]

從 0.14.5 開始,可以移動整個數據目錄。

export PHIVE_HOME="$XDG_DATA_HOME/phive"

PHP ~/.php_history PHP 8.4 [263] export PHP_HISTFILE="$XDG_STATE_HOME"/php/history
Pidgin ~/.purple [264] pidgin --config="$XDG_DATA_HOME"/purple
pklAUR ~/.pkl/ CLI flags --settings="$XDG_CONFIG_HOME"/pkl/settings.pkl --cache-dir="$XDG_CACHE_HOME"/pkl can be used, but must appear after the command (e.g. pkl eval --settings(...))
platformio-core ~/.platformio [265] export PLATFORMIO_CORE_DIR="$XDG_DATA_HOME"/platformio
PostgreSQL ~/.psqlrc
~/.psql_history
~/.pgpass
~/.pg_service.conf
9.2 [266] [267] export PSQLRC="$XDG_CONFIG_HOME/pg/psqlrc"export PSQL_HISTORY="$XDG_STATE_HOME/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_STATE_HOME"

Project Zomboid ~/Zomboid 可以使用 -cachedir="${XDG_DATA_HOME}"/Zomboid/ 參數更改遊戲文件的存儲位置。

projectzomboid.sh 腳本也通過 GAMEDIR="${HOME}/Zomboid" 定義了自己的遊戲數據目錄。如果你使用 Steam,該腳本會在遊戲更新時被重置,因此不能直接手動修改。不過,你可以創建一個自定義腳本,在主腳本被 Steam 還原後自動對其進行修補:

start.sh
#!/usr/bin/env bash

SCRIPT="$(dirname "$0")/projectzomboid.sh"
sed 's|GAMEDIR|"${HOME}/Zomboid"|GAMEDIR="${XDG_DATA_HOME}/Zomboid"|' -i "$SCRIPT"
exec "$SCRIPT" -cachedir="${XDG_DATA_HOME}"/Zomboid/ "$@"

將其命名為 start.sh,並放在 projectzomboid.sh 所在的目錄中。然後使用 ./start.sh # %command%",讓 Steam 執行 ./start.sh 而不是主腳本。請注意,這也會使遊戲在不使用 Steam Linux Runtime 的情況下啟動。

PulseAudio ~/.esd_auth 很可能是由 module-esound-protocol-unix.so 模塊生成的。可以將其配置為使用不同的位置,但更有意義的是,在 /etc/pulse/default.pa"$XDG_CONFIG_HOME"/pulse/default.pa 中注釋掉此模塊。
PuTTY英語PuTTY ~/.putty/ [268] 如果已存在,將使用 $XDG_CONFIG_HOME/putty。如果不存在,則創建 ~/.putty。如果兩者都存在,則優先使用 $XDG_CONFIG_HOME/putty。已在 0.74 中測試。
pyenv ~/.pyenv [269] [270] export PYENV_ROOT=$XDG_DATA_HOME/pyenv
azure-cli ~/.azure export AZURE_CONFIG_DIR=$XDG_DATA_HOME/azure
python ~/.python_history v3.13 [271] [272]
[273]
版本 3.4 起,所有交互式會話的歷史記錄默認保存到 ~/.python_history,自 3.13 起,保存到 PYTHON_HISTORY。對於歷史記錄文件,Python 不會自動創建缺失的目錄,只有在文件所在目錄已存在的情況下,才會向該文件寫入內容。您仍可以像在舊版本中一樣自定義此功能(請參閱此示例),包括使用自定義路徑禁用歷史記錄保存

PYTHON_HISTORYexport PYTHON_HISTORY=$XDG_STATE_HOME/python_history PYTHONPYCACHEPREFIXexport PYTHONPYCACHEPREFIX=$XDG_CACHE_HOME/python PYTHONUSERBASEexport PYTHONUSERBASE=$XDG_DATA_HOME/python

python-easyocrAUR ~/.EasyOCR export EASYOCR_MODULE_PATH="$XDG_CONFIG_HOME/EasyOCR"
python-gripAUR ~/.grip export GRIPHOME="$XDG_CONFIG_HOME/grip"
python-kivy ~/.kivy export KIVY_HOME="$XDG_DATA_HOME/kivy"
python-pylint ~/.pylint.d 2.10 [274] 自 2.10 版本起,數據目錄已遵循 $XDG_CACHE_HOME。配置查找優先級為:$PYLINTRC > ~/.pylintrc > ~/.config/pylintrc > /etc/pylintrc。由於 ~/.config/pylintrc/etc/pylintrc 均為硬編碼路徑,它會忽略 $XDG_CONFIG_HOME$XDG_CONFIG_DIRS。變通方案:export PYLINTRC="$XDG_CONFIG_HOME"/pylint/pylintrc(若該文件存在,將直接跳過家目錄查找)。
python-setuptools ~/.python-eggs export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs
racket ~/.racketrc
~/.racket
[275] export PLTUSERHOME="$XDG_DATA_HOME"/racket
rbenv ~/.rbenv [276] [277] export RBENV_ROOT="$XDG_DATA_HOME"/rbenv
readline ~/.inputrc export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc
recoll ~/.recoll export RECOLL_CONFDIR="$XDG_CONFIG_HOME/recoll"
redisAUR ~/.rediscli_history
~/.redisclirc
export REDISCLI_HISTFILE="$XDG_DATA_HOME"/redis/rediscli_historyexport REDISCLI_RCFILE="$XDG_CONFIG_HOME"/redis/redisclirc
Ren'Py ~/.renpy 7.5 [278] 存檔文件存儲在 $RENPY_PATH_TO_SAVES 中。跨多個遊戲共享的數據(例如允許導入前作存檔的續作)則存儲在 RENPY_MULTIPERSISTENT 中。
export RENPY_PATH_TO_SAVES="$XDG_DATA_HOME/renpy"
export RENPY_MULTIPERSISTENT="$XDG_DATA_HOME/renpy_shared"
ripgrep [279] export RIPGREP_CONFIG_PATH=$XDG_CONFIG_HOME/ripgrep/config
rlwrap ~/.*_history [280] export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap
ruby-bundler ~/.bundle 4a120d8 拉取請求 3545
export BUNDLE_USER_CACHE=$XDG_CACHE_HOME/bundle
export BUNDLE_USER_CONFIG=$XDG_CONFIG_HOME/bundle/config
export BUNDLE_USER_PLUGIN=$XDG_DATA_HOME/bundle

有關更多信息,請參閱 Bundler: bundle config

ruby-solargraphAUR ~/.solargraph/cache/ [281] export SOLARGRAPH_CACHE=$XDG_CACHE_HOME/solargraph
ruby-travisAUR ~/.travis/ [282] export TRAVIS_CONFIG_PATH=$XDG_CONFIG_HOME/travis
ruff .ruff_cache [283] export RUFF_CACHE_DIR=$XDG_CACHE_HOME/ruff
Rust#rustup ~/.rustup [284] export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
SageMath ~/.sage export DOT_SAGE="$XDG_CONFIG_HOME"/sage
sbt ~/.sbt

~/.ivy2

[285] sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt(注意 [286]
sdkman-binAUR ~/.sdkman/ [287] export SDKMAN_DIR="$XDG_DATA_HOME/sdkman"

配置和數據文件均存儲在 $SDKMAN_DIR 中,因此該方案並不完全符合 XDG 基礎目錄規範。

simplescreenrecorderAUR ~/.ssr/ 0.4.3 [288] [289] 僅當已創建時才會使用 $XDG_CONFIG_HOME/simplescreenrecorder/,否則默認為 ~/.ssr

mv ~/.ssr "$XDG_CONFIG_HOME"/simplescreenrecorder

singularity-ceAUR ~/.singularity 3.11.4 export SINGULARITY_CONFIGDIR="$XDG_CONFIG_HOME/singularity"export SINGULARITY_CACHEDIR="$XDG_CACHE_HOME/singularity"
spacemacs ~/.spacemacs
~/.spacemacs.d
[290] [291] 移動 ~/.spacemacs 文件。

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

其他文件需要像 Emacs 一樣進行配置。

spotdlAUR ~/.spotdl [292] ([293]) [294] mkdir "$XDG_DATA_HOME"/spotdl
SQLite ~/.sqliterc
~/.sqlite_history
配置文件:3.44.0
歷史記錄仍在舊路徑。
XDG_CONFIG_HOME/sqlite3/sqliterc
export SQLITE_HISTORY=$XDG_STATE_HOME/sqlite_history
starship ~/.config/starship
~/.cache/starship
[295] (v0.2.0),[296] (v0.45.0) [297] export STARSHIP_CONFIG="$XDG_CONFIG_HOME"/starship.tomlexport STARSHIP_CACHE="$XDG_CACHE_HOME"/starship
subversion ~/.subversion [298] [299][300] alias svn="svn --config-dir \"$XDG_CONFIG_HOME\"/subversion"
sudo ~/.sudo_as_admin_successful 1.9.6 [301] [302][失效連結 2025-08-16 ⓘ] 僅在編譯時激活時存在(默認無)。自 1.9.6 起,可以在 /etc/sudoers 中使用 admin_flag 參數。
task ~/.task
~/.taskrc
export TASKDATA="$XDG_DATA_HOME"/taskexport TASKRC="$XDG_CONFIG_HOME"/task/taskrc}},在 2.6 版中完全支持(請注意,$XDG_CONFIG_HOME/task/taskrc 必須存在,否則即使設置了 $XDG_CONFIG_HOME,taskwarrior 也會在舊的 $HOME/.taskrc 位置創建示例配置 [303][304]
本地 TeX Live TeXmf 樹、TeXmf 緩存和配置 ~/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}}
TeXmacs ~/.TeXmacs export TEXMACS_HOME_PATH=$XDG_STATE_HOME/texmacs
Thunderbird ~/.thunderbird/ [305] 系統會創建 ~/.cache/thunderbird 目錄,其中包含以配置文件名稱命名的子目錄,以及 cache2startupCache 等子目錄。該緩存目錄也可以通過 about:config 中的 browser.cache.disk.parent_directory 鍵進行設置 [306]
tiptopAUR ~/.tiptoprc 這仍然需要 .tiptoprc 文件。

tiptop -W "$XDG_CONFIG_HOME"/tiptop

uncrustify ~/.uncrustify.cfg export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg
unityhubAUR ~/Unity
~/Unity user templates
這兩個位置均可在 UnityHub 設置中指定。相關的路徑首選項分別存儲在 XDG_DATA_HOME/unityhub/secondaryInstallPath.jsonXDG_DATA_HOME/unityhub/templatesSettings.json 中。
Unison ~/.unison export UNISON="$XDG_DATA_HOME"/unison
unitsAUR ~/.units_history units --history "$XDG_CACHE_HOME"/units_history
urxvtd英語rxvt-unicode/Tips and tricks#Daemon-client ~/.urxvt/urxvtd-hostname export RXVT_SOCKET="$XDG_RUNTIME_DIR"/urxvtd
Vagrant ~/.vagrant.d
~/.vagrant.d/aliases
[307] export VAGRANT_HOME="$XDG_DATA_HOME"/vagrantexport VAGRANT_ALIAS_FILE="$XDG_DATA_HOME"/vagrant/aliases
vint ~/.vintrc.yaml
.vintrc.yml
.vintrc
0f741ac2c [308] 文檔未記錄,但代碼顯示 $XDG_CONFIG_HOME/.vintrc.yaml 應該可以工作
virtualenv英語virtualenv ~/.virtualenvs export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
Visual Studio Code ~/.vscode-oss/ [309] 您可以使用 export VSCODE_PORTABLE="$XDG_DATA_HOME"/vscode,但該方法未記錄在文檔中,可能會意外中斷。

設置此項會使編輯器在 $VSCODE_PORTABLE/user-data 中查找 .config/Code - OSS 的內容。

您還可以使用 --extensions-dir 標誌運行 Visual Studio,例如 code --extensions-dir "$XDG_DATA_HOME/vscode"。這已記錄在文檔中並有其他用例,不大可能意外中斷。

VMware ~/.vmware/ ~/.vmware/preferences 文件中的 refvmx.defaultVMPath 鍵可用於設置虛擬機的默認存儲位置。
VSCodiumAUR ~/.vscode-oss/ [310] [311] 可以使用 --extensions-dir 標誌運行 VSCodium,例如 vscodium --extensions-dir "$XDG_DATA_HOME/vscode"。但這不會阻止創建 ~/.vscode-oss/ 目錄。

也可以修改 product.json 文件中 dataFolderName 的值,將其設為 .local/share/codium 或你指定的路徑。不過,每次更新該軟體包後都需要重新進行此操作;為此,你可以安裝 vscodium-xdg-dir-patchAUR,讓系統自動完成這一過程。

w3m ~/.w3m 26284ff [312] [313] export W3M_DIR="$XDG_STATE_HOME/w3m"
wakatimeAUR ~/.wakatime/
~/.wakatime.cfg
export WAKATIME_HOME="$XDG_CONFIG_HOME/wakatime"

該目錄需要手動創建

mkdir "$XDG_CONFIG_HOME/wakatime"

wget ~/.wgetrc
~/.wget-hsts
export WGETRC="$XDG_STATE_HOME/wgetrc" 並將以下內容添加為 wget 的別名:wget --hsts-file="$XDG_CACHE_HOME/wget-hsts",或者使用絕對路徑設置 hsts-file 變量,因為 wgetrc 不支持環境變量:echo hsts-file \= "$XDG_STATE_HOME"/wget-hsts >> "$XDG_CONFIG_HOME/wgetrc"
wine ~/.wine [314] Winetricks 使用以下類似 XDG 的位置進行 WINEPREFIX 管理:

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

x3270AUR ~/.x3270pro
~/.c3270pro
~/.x3270connect
export X3270PRO="$XDG_CONFIG_HOME"/x3270/configexport C3270PRO="$XDG_CONFIG_HOME"/c3270/config

~/.x3270connect 目前不支持使用 XDG。

xbindkeys英語xbindkeys ~/.xbindkeysrc xbindkeys -f "$XDG_CONFIG_HOME"/xbindkeys/config
xinit ~/.xinitrc
~/.xserverrc
[315] export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrcexport XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc
Xorg ~/.xsession
~/.xsessionrc
~/.Xsession
~/.xsession-errors
這些可以作為 Xorg 初始化腳本 (~/.xinitrc) 或 Xsession 啟動腳本 (通常基於 /etc/X11/Xsession) 的一部分添加。

根據您配置 $XDG_CACHE_HOME 的位置,您可能需要自行擴展路徑。

# 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"

與此表中的大多數其他示例不同,實際的 X11 啟動腳本在安裝之間會有很大差異。

xorg-xauth ~/.Xauthority export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority

請注意,LightDM 不允許更改此變量。如果強行更改,將無法登錄。請改用 startx配置 LightDM。根據 [316] 的信息,SLiM~/.Xauthority 路徑硬編碼在了程序中。 SDDM 的 Xauthority 路徑可以通過其配置文件進行更改(如下所示)。遺憾的是,該路徑是相對於用戶主目錄的。

/etc/sddm.conf.d/xauth-path.conf
[X11]
UserAuthFile=.Xauthority

在 Wayland 環境下,覆蓋此設置可能會導致 Xorg 程序無法連接到 Xwayland 伺服器。例如,kwinmutter 均使用隨機生成的文件名,因此無法將其設置為固定值。

xorg-xrdb ~/.Xresources
~/.Xdefaults
最終,你應該使用 Xresources;由於這些資源是通過 xrdb 加載的,你可以指定相應的路徑,例如 xrdb -load ~/.config/X11/xresources
yarn ~/.yarnrc
~/.yarn/
~/.yarncache/
~/.yarn-config/
2d454b5 [317] [318] alias yarn='yarn --use-yarnrc "$XDG_CONFIG_HOME/yarn/config"'
z ~/.z [319] export _Z_DATA="$XDG_DATA_HOME/z"
zsh ~/.zshrc
~/.zprofile
~/.zshenv
~/.zlogin
~/.zlogout
~/.histfile
~/.zcompdump
~/.zcompcache
[320] [321] export ZDOTDIR=$HOME/.config/zsh 以避免在主目錄中的大多數 zsh dotfiles
"$XDG_CONFIG_HOME"/zsh/.zshrc
# 把補全文件和歷史記錄文件存放到 XDG 目錄
[ -d "$XDG_STATE_HOME"/zsh ] || mkdir -p "$XDG_STATE_HOME"/zsh
HISTFILE="$XDG_STATE_HOME"/zsh/history
[ -d "$XDG_CACHE_HOME"/zsh ] || mkdir -p "$XDG_CACHE_HOME"/zsh
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME"/zsh/zcompcache
compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-$ZSH_VERSION

最後,如果您使用 zsh 作為登錄 shell,並選擇依賴啟動文件 ~/.zshenv ~/.zprofile ~/.zlogin 來設置重要的環境變量(例如 ZDOTDIR)進行引導,則無法繞過將設置 ZDOTDIR 的一個文件放在默認位置。對於上下文,一個例外是,如果您的更廣泛的系統配置在此之前設置了 ZDOTDIR 環境變量。

硬編碼

應用程式 舊路徑 討論 注釋
adb & Android Studio ~/.android/ 儘管看起來並非如此,adb 將始終生成 ~/.android/adbkeys,儘管它也會嘗試 ADB_VENDOR_KEYS 中的密鑰。
aegisub ~/.aegisub/ [322]
alpine英語alpine ~/.pinerc
~/.addressbook
~/.pine-debug[1-4]
~/.newsrc
~/.mailcap
~/.mime.types
~/.pine-interrupted-mail
alias alpine="alpine -p $XDG_CONFIG_HOME/alpine/pinerc"

在上面的配置文件中,可以使用 newsrc-path=address-book= 等選項定製一些位置。

aMule ~/.aMule [323] [324] [325]
Apache Directory Studio ~/.ApacheDirectoryStudio
ARandR ~/.screenlayout [326]
Arduino ~/.arduino15
~/.jssc
不會修復
arduino-cli ~.arduino15/ [327] mv ~/.arduino15 $XDG_CONFIG_HOME/arduino15

在 arduino-cli.yaml 中指定 Arduino CLI 使用的新目錄,如文檔此處所述。 alias arduino-cli='arduino-cli --config-file $XDG_CONFIG_HOME/arduino15/arduino-cli.yaml'

ASP.NET Core ~/.aspnet [328]
Avidemux ~/.avidemux6 [329]
azote ~/.azotebg [330]
Barony ~/.barony [331]
Bash ~/.bashrc
~/.bash_history
~/.bash_profile
~/.bash_login
~/.bash_logout
[332] [333] mkdir -p "$XDG_STATE_HOME"/bash

export HISTFILE="$XDG_STATE_HOME"/bash/history

bashrc 可從 /etc/bash.bashrc 中的不同位置獲取。 對於交互式 shell,請指定 --init-file <file> 作為 ~/.bashrc 的替代。

Berkshelf英語Chef ~/.berkshelf/
chatty ~/.chatty/ [334]
chirp-nextAUR ~/.chirp/ [335] 開發者最新回應
cmake ~/.cmake/ [336] 用於用戶包註冊表 ~/.cmake/packages/<package>,詳見 cmake-packages(7) § User Package RegistryPackage registry wiki 頁面。看起來像是硬編碼的,例如在 cmFindPackageCommand.cxx
cmus ~/.config/cmus [337] [338]
Cinnamon ~/.cinnamon/ [339]
conanAUR ~/.conan/ [340] export CONAN_USER_HOME="$XDG_CONFIG_HOME" 將設置創建 .conan/ 的目錄。它是 旨在簡化 CI,但也可以在這裡使用。
Continue ~/.continue/ [341] [342] [343]
darcs英語darcs ~/.darcs/ [344]
dart ~/.dart
~/.dart-tool
~/.dartServer
[345]
dbus ~/.dbus/ [346] 考慮使用 dbus-broker,因為它不會創建或使用該目錄。
devede ~/.devedeng 此處硬編碼
Dia ~/.dia/
dig ~/.digrc
dotnet-sdk ~/.dotnet/
~/.templateengine
[347]
dropbox ~/.dropbox/ [348]
Eclipse ~/.eclipse/ [349] 選項 -Dosgi.configuration.area=@user.home/.config/.. 可覆蓋,但必須添加到 "$ECLIPSE_HOME"/eclipse.ini" 而不是命令行,這意味著您必須具有對 $ECLIPSE_HOME 的寫權限。(Arch Linux 在 /usr/bin/eclipse 中對 $ECLIPSE_HOME 進行硬編碼。)
emacs-slime ~/.slime/ [350]

[351]

equalxAUR ~/.equalx/ [352]
feh ~/.fehbg [353]
Fetchmail ~/.fetchmailrc
Flatpak ~/.var/ [354] [355] 不會修復
gitkrakenAUR ~/.gitkraken/ [356]
google-cloud-cliAUR ~/.gsutil/ [357]
gphoto2 ~/.gphoto [358]
gramps ~/.gramps/ [359] 2022 支持 XDG 基礎目錄規範(針對下一版本 Gramps 5.2)⸺補丁 https://github.com/gramps-project/gramps/pull/1368
groovy ~/.groovy/
grsync ~/.grsync/ [360]
gtk-recordMyDesktop ~/.gtk-recordmydesktop
hplip ~/.hplip/ [361]
hstrAUR ~/.hstr_blacklist
~/.hstr_favorites
[362] 最近的這個 PR 可以修復這個問題。
hunspell ~/.hunspell_default [363]
hydrogen ~/.hydrogen/ [364]
idris ~/.idris [365]
itch-setup-binAUR ~/.itch 不會修復 應用程式設置中可以移動遊戲安裝位置。
Java OpenJDK ~/.java/fonts [366] [367] export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
Java OpenJFX ~/.java/webview
jgmenu ~/.jgmenu-lockfile [368] [369]
jitsi-meetAUR ~/Downloads libjitsi#518 下載目錄硬編碼為 ~/Downloads 而不是 XDG_DOWNLOAD_DIR (來自 XDG 用戶目錄)。
Jmol ~/.jmol/ [370]
jsignpdfAUR ~/.JSignPdf [371]
julia ~/.juliarc.jl
~/.julia_history
~/.julia
[372] [373] 尾隨的 :$JULIA_DEPOT_PATH 是必需的。請參閱 [374]
export JULIA_DEPOT_PATH="$XDG_DATA_HOME/julia:$JULIA_DEPOT_PATH"
export JULIAUP_DEPOT_PATH="$XDG_DATA_HOME/julia"
kotlin ~/.kotlinc_history 相關 Konan 問題:[375]
Kubernetes ~/.kube/ [376] [377]
[378]
export KUBECONFIG="$XDG_CONFIG_HOME/kube"
export KUBECACHEDIR="$XDG_CACHE_HOME/kube"
lbdbAUR ~/.lbdbrc
~/.lbdb/
[379]
LightDM ~/.dmrc [380] 通常由 greeter 在設定會話時創建。可依照 LightDM#啟用自動登錄修改 lightdm.conf 文件啟用自動登錄,不使用 greeter。
lldb ~/.lldb
~/.lldbinit
~/.lldb/lldb-widehistory
[381]
llpp英語llpp ~/.config/llpp.conf [382][失效連結 2022-09-23 ⓘ](存儲庫已刪除) 3ab86f0 中添加,但隨後在舊倉庫:e253c9f1/新倉庫:e253c9f1 中恢復
LMMS ~/.lmmsrc.xml [383]
maliit-keyboardAUR ~/.presage Maliit Keyboard 使用了一個名為 Presage 的陳舊且不再維護的庫,該庫會創建 ~/.presage 目錄。2024 年,Maliit Keyboard 移除了對 Presage 的依賴,但截至 2.3.1 版本,這一更改尚未包含在正式發布中。在此期間,請編譯 maliit-keyboardAUR 的 master 分支。
man-db ~/.manpath [384]
mathomatic ~/.mathomaticrc
~/.matho_history
可以使用 rlwrap mathomatic -r 並適當設置 RLWRAP_HOME 環境來移動歷史記錄。
MediaWiki ~/.mweval_history
~/.mwsql_history
(若 $HOME 變量存在)
如果未定義 $HOME:[MediaWiki]/maintenance/.mweval_history[MediaWiki]/maintenance/.mwsql_history

由維護腳本 eval.phpsql.php 生成。

megacmdAUR ~/.megaCmd/ [385]
Minecraft ~/.minecraft/ 不會修復 第三方啟動器 prismlauncher 不使用舊路徑。Minecraft#Minecraft 模組啟動器中的其他啟動器也可能使用不同的路徑。
minicom ~/.minirc.dfl 上游有一個支持在 ~/.config/minicom 下的配置文件的 TODO 條目。[386]
mongodb ~/.mongorc.js
~/.dbshell
[387] Stack Overflow 上的這個帖子建議使用命令行開關 --norc 部分解決該問題。
Mono ~/.mono/ [388]
~/.netrc ~/.ssh 一樣,許多程序都希望此文件在此處。其中包括 curl($CURLOPT_NETRC_FILE)、ftp英語ftp$NETRC)、s-nail英語s-nail$NETRC)等項目。雖然其中一些提供了可配置的替代位置,但許多程序沒有提供,例如 w3m、wget 和 lftp。
nim ~/.nimble [389] [390] Nimble 將在啟動時 嘗試加載 ~/.config/nimble/nimble.ini,在那裡設置 nimbleDir。您還必須在 Nim 編譯器 配置文件 中更改 nimblepath
nyx ~/.nyx 該項目目前不再維護。
oh-my-bash-gitAUR ~/.osh-update
Ollama ~/.ollama [391] 可以使用以下命令設置模型位置 [392]

export OLLAMA_MODELS=$XDG_DATA_HOME/ollama/models

openshotAUR ~/.openshot_qt [393] [394]
OpenSSH ~/.ssh 不會修復 假定許多 ssh 守護進程和客戶端(例如 DropBear 和 OpenSSH)都存在。
palemoon ~/.moonchild productions [395]
parsec-binAUR ~/.parsec
pcsxrAUR ~/.pcsxr 存在 -cfg 標誌,但只能相對於 ~/.pcsxr 進行設置。
perf ~/.debug 硬編碼在 tools/perf/util/config.c。提交:[396]
perl英語perl ~/.cpan
~/perl5
[397] Perl5 的 CPAN 需要 ~/.cpan
phoronix-test-suiteAUR ~/.phoronix-test-suite [398] 部分解決方法:[399]
portfolio-performance-binAUR ~/.PortfolioPerformance/ [400]
various shells and display managers ~/.profile
psensor ~/.psensor [401]
pulumi ~/.pulumi [402]
python-streamlit ~/.streamlit [403]
python-sympy ~/.sympy-history [404]
python-tensorflow ~/.keras [405] 這個問題是關於 tf.keras 模塊的。
quilt ~/.quiltrc 如果 ~/.quiltrc 不存在,則返回 /etc/quilt.quiltrc
Qt Designer ~/.designer [406] 上游已修復,計劃 QT 7 發布(詳見討論連結)。
R英語R ./.Rdata
~/.Rprofile
~/.Renviron
~/.Rhistory
~/.R/
部分解決方案(./.Rdata~/.R/licensed 不變):
export R_PROFILE_USER="${XDG_CONFIG_HOME}/R/.Rprofile"
export R_ENVIRON_USER="${XDG_CONFIG_HOME}/R/.Renviron"
export R_HISTFILE="${XDG_STATE_HOME}/R/history"
export R_MAKEVARS_USER="${XDG_CONFIG_HOME}/R/Makevars"
export R_CHECK_ENVIRON="${XDG_CONFIG_HOME}/R/check.Renviron"
export R_BUILD_ENVIRON="${XDG_CONFIG_HOME}/R/build.Renviron"
export R_REPOSITORIES="${XDG_CONFIG_HOME}/R/repositories"
RedNotebook ~/.rednotebook [407]
Remarkable ~/.remarkable
renderdoc ~/.renderdoc 不會修復
repo ~/.repoconfig [408]
rpm英語rpm ~/.rpmrc
~/.rpmmacros
Backlog 解決方法是使用 --rcfile--macros,但這會產生副作用。
run-mailcapAUR ~/.mailcap export MAILCAPS="$XDG_CONFIG_HOME/mailcap"
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 來緩解此問題。

SeaMonkey ~/.mozilla/seamonkey [409]
Signal Desktop [410] 目前將消息保存在 ~/.config/Signal 中。
Snap ~/snap/ [411]
Solfege ~/.solfege
~/.solfegerc
~/lessonfiles
[412]
SpamAssassin ~/.spamassassin
Steam ~/.steam
~/.steampath
~/.steampid
[413] 許多遊戲引擎(Unity 3D、虛幻)都遵循該規範,但個別遊戲發行商會對 Steam 自動雲中的路徑進行硬編碼,導致遊戲保存同步到錯誤的目錄。[414]
stellarium ~/.stellarium/ [415]
Storybook ~/.storybook/ [416]
stremioAUR ~/.stremio-server/ [417]
sts4 ~/.sts4 [418] 傳遞 JVM 參數 -Dlanguageserver.boot.symbolCacheDir=$XDG_CACHE_HOME/sts4/symbolCache
sweethome3d ~/.eteks/sweethome3d [419]
TeamSpeak英語TeamSpeak ~/.ts3client export TS3_CONFIG_DIR="$XDG_CONFIG_HOME/ts3client"
terraform ~/.terraform.d/ [420]
texinfo ~/.infokey info --init-file "$XDG_CONFIG_HOME/infokey"
tllocalmgr ~/.texlive
urlviewAUR ~/.urlview 改用 fork urlview-xdg-gitAUR,該 fork 使用 $XDG_CONFIG_HOME/urlview/config
viberAUR ~/.ViberPC
vimperator ~/.vimperatorrc [421] export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"

export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator

visidata ~/.visidata [422]
wegoAUR ~/.wegorc [423]
winboat ~/.winboat [424]
wpa_cli ~/.wpa_cli_history alias wpa_cli='HOME=$XDG_STATE_HOME wpa_cli'
x2goclientAUR ~/.x2goclient alias x2goclient="x2goclient --home=$HOME/.config"
xpdf ~/.xpdfrc [425]
xrdpAUR ~/thinclient_drives 對於目錄 ~/thinclient_drives,可以考慮編輯 /etc/xrdp/sesman.ini 並按照示例配置修改 [Chansrv] 部分。
XVim2 ~/.xvimrc [426]
yabridge-binAUR ~/.vst/yabridge/
~/.vst3/yabridge/
~/.clap/yabridge/
不會修復
YARD ~/.yard [427] 如果有人想實現它,將會接受 PR。
zenmap ~/.zenmap [428] [429]
zoomAUR ~/.zoom 不推薦:設置以下變量會移動 .zoom 的內容,但目錄本身始終會創建。此外,它會破壞某些功能,例如無法開始會議。

export SSB_HOME="$XDG_DATA_HOME"/zoom

zotero-binAUR ~/.zotero
~/Zotero
[430] 默認數據存儲位置 ~/Zotero 可以通過 GUI 修改:編輯 -> 設置 -> 高級 -> 數據存儲位置 -> 使用自定義位置

工具

工具 xdg-ninjaAUR 可檢測 $HOME 中可移動到 XDG 基本目錄的不需要的文件/目錄。請參閱 README 了解示例。

工具 boxxy 可用於包裝不遵守 XDG 基本目錄的應用程式並重定向任何不需要的文件。

工具 ephemeral 可用於將通常位於 XDG_CONFIG_HOME 中的 chromium/electron 緩存連結到 XDG_CACHE_HOME 中的位置。

C
libXDGdirs
libxdg-basedir
C99:Cloudef的簡單實現
C#
Xdg.Directories
C++
xdg-utils-cxx
xdgpp
Go
adrg/xdg
go-appdir(棄用,已歸檔)
configdir(棄用,已停止維護)
kyoh86/xdg(棄用,已歸檔)
Haskell
自 1.2.3.0 ab9d0810ce 起正式位於 directory
xdg-basedir
JVM:Java、Kotlin、Clojure、Scala⋯⋯
directories-jvm
Perl
File-BaseDir(0.6 版舊標準)
File-XDG
Python
pyxdg
appdirs(棄用,已停止維護)
platformdirs
Ruby
bkuhlmann/xdg
rubyworks/xdg(棄用,已停止維護)
Rust
directories-rs
rust-xdg
Swift
swift-xdg
Vala
通過 GLib.Environment 提供內置支持。
參見 get_user_cache_dirget_user_data_dirget_user_config_dir 等。

提示與技巧

隱藏不需要的目錄

在某些桌面環境(例如 KDE)下可以隱藏無法改變位置的目錄:

$ echo 路径 >> ~/.hidden

路徑 是文件/目錄的路徑,相對於 .hidden 的父目錄(此處即 ~/)。

參見