XDG Base Directory

出自 ArchWiki

本文总结了 XDG Base Directory 规范,并在 #规范 中进行了 #支持 方面的软件支持跟踪。

规范

请阅读完整规范。本节将尝试分解其试图实现的核心内容。

只有 XDG_RUNTIME_DIR 通过 pam_systemd(8) 默认设置。 其他变量需要用户根据规范显式定义。 更改它可能会导致 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
    • 用于非必要的用户特定数据文件,例如套接字、命名管道等。
    • 不需要具有默认值;如果未设置或未提供等效项,则应发出警告。
    • 必须由用户拥有,访问模式为 0700
    • 文件系统功能齐全,符合操作系统标准。
    • 必须位于本地文件系统上。
    • 可能会定期清理。
    • 如果需要持久性,则每 6 小时修改一次或设置粘滞位。
    • 只能在用户登录期间存在。
    • 不应存储大型文件,因为它可能作为 tmpfs 挂载。
    • pam_systemd 将其设置为 /run/user/$UID

系统目录

  • XDG_DATA_DIRS
    • : 分隔的目录列表(类似于 PATH)。
    • 应默认为 /usr/local/share:/usr/share
  • XDG_CONFIG_DIRS
    • : 分隔的目录列表(类似于 PATH)。
    • 应默认为 /etc/xdg

支持

本文或章节需要扩充。

原因:当前支持/部分支持/硬编码的划分不够详细,可能会产生误导。表格可以合并为一个(添加更多关于程序如何使用规范的字段),或者可以使用不同名称的类别。(在 Talk:XDG Base Directory#添加支持类别描述 中讨论)

本节旨在编目不断增长的软件集,这些软件使用 2003 年引入的 XDG Base Directory 规范。 此处旨在通过列出常见的点文件及其支持状态来证明此规范的可行性。 对于当前不支持 Base Directory 规范的软件,将演示解决方法以模拟它。

解决方法将仅限于不涉及修补源代码、执行存储在环境变量中的代码或编译时选项的任何内容。 这样做的理由是配置应在系统之间可移植,并且具有编译时选项会阻止这种情况发生。

希望这将提供关于特定类型的点文件到底是什么以及它们来自何处的信息来源。

贡献

贡献时,请确保使用正确的部分。

任何内容都不应需要代码评估、补丁或编译时选项才能获得支持,并且任何需要这些操作的内容都必须被视为硬编码。 此外,如果该过程容易出错或困难,也应将其归类为硬编码。

  • 第一列应是指向内部文章的链接、Template:PkgTemplate:AUR
  • 第二列用于项目拥有的任何旧文件和目录(每行一个),这样做是为了让人们即使在不再读取它们的情况下也能找到它们。
  • 在第三列中,尝试找到项目切换到 XDG Base Directory 的提交或版本,或任何公开讨论,并将它们包含在接下来的两列中(每行两个)。
  • 最后一列应包含任何适当的解决方法或解决方案。 请验证您的解决方案是否正确且功能正常。

支持

应用程序 旧路径 支持起始版本 讨论 注释
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, ~/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/
atuin ~/.config/atuin ~/.local/share/atuin 156893d
XDG_CONFIG_HOME/atuin/config.toml
XDG_DATA_HOME/atuin/history.db
asunderAUR ~/.asunder ~/.asunder_album_artist ~/.asunder_album_genre ~/.asunder_album_title 2.9.0[死链接 2021-05-17 ⓘ] [12][死链接 2021-05-17 ⓘ] ~/.asunder 使用 XDG_CONFIG_HOME/asunder/asunder,对其他 3 个文件使用 XDG_CACHE_HOME/asunder/asunder_album_...。 迁移后不会删除旧路径,必须手动删除它们。
audacity ~/.audacity-data/ 3.2.0 [13] 如果旧路径不存在,则使用新位置
XDG_CONFIG_HOME/audacity
XDG_DATA_HOME/audacity
btop b5e709d XDG_CONFIG_HOME/btop
binwalk ~/.binwalk 2051757 [14] XDG_CONFIG_HOME/binwalk
bitwarden-cli ~/.config/Bitwarden CLI 1.7.1 [15]
XDG_CONFIG_HOME/Bitwarden CLI
XDG_DATA_HOME/audacity

BITWARDENCLI_APPDATA_DIR 环境变量优先。

当前包含一个包含所有 vault 数据的 data.json 文件,因此它应该属于 XDG_DATA_HOME

Blender ~/.blender 4293f47 [16]
borgmatic ~/.borgmatic/ 1.9.0 [17]
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
ccache ~/.ccache 4.0 [22]
XDG_CACHE_HOME/ccache
XDG_CONFIG_HOME/ccache/ccache.conf
catfish ~/.config/catfish af65ed25 [23]
clangd ~/.clangd fdf7dcc[死链接 2022-09-23 ⓘ] [24] XDG_CONFIG_HOME/clangd/config.yml

XDG_CACHE_HOME/clangd

项目特定配置可以在 proj/.clangd 中指定。 在合理的情况下,配置会合并。 如果发生冲突,用户配置的优先级最高,然后是内部项目,然后是外部项目。

clifmAUR ~/.config/clifm/ 9d6e482 XDG_CONFIG_HOME/clifm/
Composer ~/.composer 1.0.0-beta1 [25]
crossnote ~/.mume d714a82

0.8.13

[26] $XDG_CONFIG_HOME/mume

如果旧路径存在,它将优先。

ctags (universal-ctags) ~/.ctagsrc, .ctags.d 68da03a

8fb0b04

Issue 89

Pull request 2384

在启动时,Universal-ctags 加载文件扩展名为 `.ctags` 的文件,位于: $XDG_CONFIG_HOME/ctags

参见 Ctags 选项文件

cURL ~/.curlrc 7.73.0 [27] XDG_CONFIG_HOME/.curlrc
CUPS ~/.cups/ 23b1be6 [28]

libcups 在 v3 中添加了 XDG 支持(仍在测试版中)。 官方存储库中的版本仍然硬编码为 ~/.cups

dconf
Dolphin emulator ~/.dolphin-emu a498c68 [29]
dr14_t.meter-gitAUR 7e777ca [30] XDG_CONFIG_HOME/dr14tmeter/
dunst 78b6e2b [31] XDG_CONFIG_HOME/dunst/
Emacs ~/.emacs ~/.emacs.d/init.el [32]

27.1

XDG_CONFIG_HOME/emacs/init.el

旧路径优先于 XDG 路径。 Emacs 永远不会创建 XDG_CONFIG_HOME/emacs/。 针对 26.3 或更早版本的解决方法:可以设置 HOME,但这会产生意外的副作用。

fish
fltk ~/.fltk/ 7308bcd [33] [34] 仅在 1.4.0 版本中支持,该版本尚未发布(截至 2022 年 7 月 9 日)
fontconfig ~/.fontconfig ~/.fonts 8c255fb, [35] 配置位于 XDG_CONFIG_HOME/fontconfig/fonts.confXDG_CONFIG_HOME/fontconfig/conf.d/ 中,字体存储在 XDG_DATA_HOME/fonts/
fontforge ~/.FontForge ~/.PfaEdit e4c2cc7

[36] [37]

freecad ~/.FreeCAD e7e2994ba

0.20.0

[38] 默认为
XDG_CONFIG_HOME/FreeCAD
XDG_DATA_HOME/FreeCAD
XDG_CACHE_HOME/FreeCAD

可以使用 FreeCAD --keep-deprecated-paths 使用旧路径

freerdp ~/.freerdp edf6e72
Gajim ~/.gajim 3e777ea [39]
gconfAUR ~/.gconf fc28caa [40]
GDB ~/.gdbinit, ~/.gdb_history 11.1 XDG_CONFIG_HOME/gdb/gdbinit, export GDBHISTFILE="$XDG_DATA_HOME"/gdb/history
ghidra ~/.ghidra/ 3b0aac9 [41]
GIMP ~/.gimp-x.y ~/.thumbnails

60e0cfe 483505f

[42] [43]

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
gops 71c4255
gnuplot ~/.gnuplot_history a5562b1

[44]

goobookAUR ~/.goobookrc 3.5 [45] XDG_CONFIG_HOME/goobookrc
Godot Engine ~/.godot 73049d1

3.0-stable

[46]
GStreamer ~/.gstreamer-0.10 4e36f93 [47]
GTK 3
Haskell#Stack ~/.stack 2.9.3 [48] 默认为旧版模式。使用 export STACK_XDG=1 使其符合规范。

旧方法 export STACK_ROOT="$XDG_DATA_HOME"/stack 仍然有效并具有更高的优先级 [49][死链 2024-07-30 ⓘ]

helm ~/.helm 3.0.0
htop ~/.htoprc 93233a6 XDG_CONFIG_HOME/htop/htoprc
httpie ~/.httpie 5af0874 [50]
hunspell ~/.hunspell_default. [51]
i3 ~/.i3 7c130fb
i3blocks, i3blocks-gitAUR [52]
i3status ~/.i3status.conf c3f7fc4
i3status-rust
IdeaVim ~/.ideavimrc 0.54.1-EAP [53] XDG_CONFIG_HOME/ideavim/ideavimrc
imagemagick
iotop-c ~/.config/iotop [54] [55]
Inkscape ~/.inkscape 0.47 [56]
ipython ~/.ipython 8.0.0 [57] 检查 $XDG_CONFIG_HOME/ipython (如果 XDG_CONFIG_HOME 未设置,则检查 ~/.config/ipython) 是否存在,否则使用 ~/.ipython
iwd / iwctl ~/.iwctl_history d3e00d7f
intellij-idea-community-edition / intellij-idea-ultimate-editionAUR ~/.IntelliJIdeaXXXX.X 2020.1 [58]
XDG_CONFIG_HOME/JetBrains/IntelliJIdeaXXXX.X
XDG_DATA_HOME/JetBrains/IntelliJIdeaXXXX.X
XDG_CACHE_HOME/JetBrains/IntelliJIdeaXXXX.X
josm ~/.josm 11162 [59]
jupyter ~/.jupyter 在 5.0 中选择启用,在 6.0 中选择禁用,在 7.0 中强制执行 (更新日志) XDG_CONFIG_HOME/jupyter
Kakoune
keynavAUR ~/.keynavrc XDG_CONFIG_HOME/keynav/keynavrc
less ~/.lesskey, ~/.lesshst 590

598 中完全支持

[60] 环境变量 XDG_CONFIG_HOMEXDG_DATA_HOME 在 590 版本中必须设置。在 598 版本中不再需要。

XDG_CONFIG_HOME/lesskey

XDG_STATE_HOME/lesshstXDG_DATA_HOME/lesshst

latexmk (在 texlive-binextra 中) ~/.latexmkrc

XDG_CONFIG_HOME/latexmk/latexmkrc

lftp ~/.lftp 21dc400 [61]
lgogdownloaderAUR ~/.gogdownloader d430af6 [62]
luarocks ~/.luarocks cd16cdd [63]
XDG_CONFIG_HOME/luarocks
XDG_CACHE_HOME/luarocks

如果旧路径 ~/.luarocks 存在,它将优先。

mangohud 65b90fc [64] XDG_CONFIG_HOME/MangoHud
mc ~/.mc

1b99570 0b71156 ce401d7

[65]
Mercurial ~/.hgrc

3540200 4.2

XDG_CONFIG_HOME/hg/hgrc.
mesa 87ab26b XDG_CACHE_HOME/mesa
milkytracker ~/.milkytracker_config eb487c5 [66]
mlterm ~/.mlterm/ 71df071 [67] XDG_CONFIG_HOME/mlterm/
nmcli ~/.nmcli-history 1.52.0 [68] [69] [70] XDG_CACHE_HOME/nmcli-history
mozc ~/.mozc 91cc1e1 [71]
mpd ~/.mpdconf 87b7328
mpv ~/.mpv cb250d4 [72]
msmtp ~/.msmtprc

af2f409 v1.6.7+

XDG_CONFIG_HOME/msmtp/config.
mutt ~/.mutt b17cd67 [73]
mypaint ~/.mypaint cf723b7
nano ~/.nano/ ~/.nanorc c16e79b [74]
ncmpcpp ~/.ncmpcpp ~/.lyrics

38d9f81 27cd86e

[75] [76] [77]

应设置 ncmpcpp_directory 以避免在 ~/.ncmpcpp 中出现 error.log 文件。并且可以将 lyrics_directory 设置为 ~/.cache/ncmpcpp-lyrics 以避免 ~/.lyrics
Neovim ~/.nvim ~/.nvimlog ~/.nviminfo 1ca5646bb

[78] [79]

Nestopia UE ~/.nestopia/ 610c008 1.51.0 [80]
newsboat ~/.newsboat 3c57824 [81] 需要创建两个目录 [82]

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

node-gyp ~/.node-gyp 2b5ce52a [83]
np2kai-gitAUR ~/.config/np2kai ~/.config/xnp2kai 56a1cc2 [84]
notmuch ~/.notmuch-config [85] mkdir -p $XDG_CONFIG_HOME/notmuch/default; mv ~/.notmuch-config $XDG_CONFIG_HOME/notmuch/default/config
NSS ~/.pki 3.42 (da45424) [86] 请参阅 Chromium 以了解现有问题。
nteract-binAUR 4593e72 [87] [88] 无法识别 ipython/jupyter 的解决方法
ocaml-utopAUR ~/.utop-history

~/.utoprc

2.13.0

9729963

[89] XDG_STATE_HOME/utop/utop-history

XDG_CONFIG_HOME/utop/utoprc

OfflineIMAP ~/.offlineimaprc 5150de5 [90] XDG_CONFIG_HOME/offlineimap/config
openal ~/.alsoftrc 3c90ed9 XDG_CONFIG_HOME/alsoft.conf
opentyrianAUR ~/.opentyrian 39559c3 [91]
oscAUR ~/.oscrc ~/.osc_cookiejar 6bc2d3f

ebcf3de

github.com/openSUSE/osc/pull/940

github.com/osc/pull/940

XDG_CONFIG_HOME/osc/oscrc XDG_STATE_HOME/osc/cookiejar

如果旧路径存在,则旧路径优先

pam-u2f ~/.config/Yubico/u2f_keys ad52dd8 [92] XDG_CONFIG_HOME/Yubico/u2f_keys
pandoc-cli ~/.pandoc/ 0bed0ab [93]
PCManFM ~/.thumbnails 1.3.2
pcsx2AUR ~/.pcsx2

87f1e8f a9020c6 3b22f0f 0a012ae

[94] [95]
pdfsamAUR ~/.openjfx export _JAVA_OPTIONS=-Djavafx.cachedir="$XDG_CACHE_HOME"/openjfx
Pry ~/.pryrc ~/.pry_history

a0be0cc7 15e1fc92 e9d1be0e

[96]
python-autoimportAUR ~/.config/autoimport/config.toml 1.2.0 [97] XDG_CONFIG_HOME/autoimport/config.toml
python-black ~/.config/black 21.4b0 [98] XDG_CONFIG_HOME/black, XDG_CACHE_HOME/black/<version>/
python-pylint ~/.pylint.d 2.10 [99][死链 2024-10-12 ⓘ] 以前是 export PYLINTHOME="$XDG_CACHE_HOME"/pylint,全局配置仍然需要: export PYLINTRC="$XDG_CONFIG_HOME"/pylint/pylintrc
python-pip ~/.pip 6.0 [100]
python-pipx ~/.local/pipx c3d8de9 [101] 为了兼容性,如果 ~/.local/pipx 存在,pipx 将恢复到 ~/.local/pipx。使用 python-platformdirs 实现
python-poetry ~/.poetry [102] [103]
powershellAUR 6.0
ppsspp ~/.ppsspp 132fe47 [104]
procps-ng ~/.toprc af53e17

[105] [106]

pacman ~/.makepkg.conf 80eca94 [107]
panda3dAUR ~/.panda3d 2b537d2
pnpm ~/.pnpm-store [108] [109] [110]
poezioAUR
PulseAudio ~/.pulse ~/.pulse-cookie

59a8618 87ae830 9ab510a 4c195bc

[111] Steam 可能仍然会创建 ~/.pulse-cookie。将 cookie-file = ~/.config/pulse/cookie 添加到 /etc/pulse/client.conf 以摆脱它。
pyroomAUR
quodlibet ~/.quodlibet 3.10.0 [112]
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 ~/.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 RC 文件

snes9x ~/.snes9x 93b5f11 [126] 默认情况下,配置文件留空,目的是让用户随意填写(通过 gui 或手动)。
spectrwm ~/.spectrwm a30bbb [127]
sublime-text-devAUR build 4105 在 build 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
tig ~/.tigrc, ~/.tig_history 2.2 [130] ~/.local/share/tig 目录必须存在,否则写入 ~/.tig_history
TigerVNC ~/.vnc 1.14.0 [131]
主题 (桌面) ~/.icons/, ~/.themes/ [132] XDG_DATA_HOME/icons

XDG_DATA_HOME/themes

对于 Qt 程序、Wayland 上的 GTK 或 Qt 程序要使用 XDG_DATA_HOME/icons 中的光标,需要配置 XCURSOR_PATH 环境变量。

tmux ~/.tmux.conf 3.1 [133] 3.1 引入了 ~/.config/tmux/tmux.conf,在 3.2 中添加了 XDG_CONFIG_HOME/tmux/tmux.conf
tmuxp ~/.tmuxp 1.5.0 [134] 1.5.2 中修复
tmuxinatorAUR ~/.tmuxinator 2636923 [135]
Transmission ~/.transmission b71a298
util-linux 570b321
yapf a0b51d2 [136] $XDG_CONFIG_HOME/yapf/style
Uzbl c6fd63a [137]
vale ~/.vale.ini 3.0.0
vim ~/.vim, ~/.vimrc, ~/.viminfo c9df1fb [138] XDG_CONFIG_HOME/vim/vimrc

有关更多详细信息,请参阅 :h xdg-base-dir

viminfo 文件可以使用 :set viminfofile= 设置

vimb
VirtualBox ~/.VirtualBox 4.3 [139]
vis ~/.vis

68a25c7 d138908

[140]
VLC ~/.vlcrc 16f32e1 [141]
warsow ~/.warsow-2.x 98ece3f [142]
WeeChat ~/.weechat [143]

3.2

[144] [145][死链 2023-05-06 ⓘ]
XDG_CONFIG_HOME/weechat
XDG_CACHE_HOME/weechat
XDG_DATA_HOME/weechat
Wireshark ~/.wireshark b0b53fa[死链 2022-09-23 ⓘ]
wxWidgets [146]
XKB ~/.xkb
Xsettingsd ~/.xsettingsd b4999f5
xmobar ~/.xmobarrc 7b0d6bf[死链接 2024-07-30 ⓘ]

9fc6b37[死链接 2024-07-30 ⓘ] eaccf70[死链接 2024-07-30 ⓘ]

[147][死链接 2024-07-30 ⓘ]

[148][死链接 2024-07-30 ⓘ]

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

[149] [150]

All of these must exist, otherwise it gives up and falls back to ~/.xmonad/ for each
XDG_CACHE_HOME/xmonad
XDG_CONFIG_HOME/xmonad
XDG_DATA_HOME/xmonad

Alternatively, it always respects XMONAD_CACHE_DIR, XMONAD_CONFIG_DIR, and XMONAD_DATA_DIR.

xonsh ~/.xonshrc [151] $XDG_CONFIG_HOME/xonsh/rc.xsh
xournalpp ~/.xournalpp 20db937f

1.1.0

[152]

[153]

xsel ~/.xsel.log ee7b481 [154]
Zim e42b8b0
 $XDG_CONFIG_HOME/zim/preferences.conf
 $XDG_CONFIG_HOME/zim/notebooks.list
zoxide ~/.zo 0.3.0 [155]
zutils ~/.zutilsrc 1.12
$XDG_CONFIG_HOME/zutils.conf

Partial

应用程序 旧路径 支持起始版本 讨论 注释
abookAUR ~/.abook abook --config "$XDG_CONFIG_HOME"/abook/abookrc --datafile "$XDG_DATA_HOME"/abook/addressbook
ack ~/.ackrc [156] export ACKRC="$XDG_CONFIG_HOME/ack/ackrc"
Ansible ~/.ansible 2.14 [157] [158] [159]
export ANSIBLE_HOME="${XDG_CONFIG_HOME}/ansible"
export ANSIBLE_CONFIG="${XDG_CONFIG_HOME}/ansible.cfg"
export ANSIBLE_GALAXY_CACHE_DIR="${XDG_CACHE_HOME}/ansible/galaxy_cache"
[160]

The remote's ~/.ansible/tmp can be moved by setting remote_tmp = ${XDG_CONFIG_HOME}/ansible/tmp in an appropriate ansible.cfg. [161] [162]

asdf-vmAUR ~/.asdfrc, ~/.asdf/ [163] export ASDF_CONFIG_FILE="${XDG_CONFIG_HOME}/asdf/asdfrc", export ASDF_DATA_DIR="${XDG_DATA_HOME}/asdf"
aspell ~/.aspell.conf [164] Very incomplete. The following re-locates the en dictionaries, but additional possible dictionaries are not specificed here for brevity. 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 [165] 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
bashdbAUR ~/.bashdbinit, ~/.bashdb_hist Like documented at [166], you can specify a file to run commands from. Thus, move the init file to XDG_CONFIG_HOME/bashdb/bashdbinit and create an alias alias bashdb='bashdb -x ${XDG_CONFIG_HOME:-$HOME/.config}/bashdb/bashdbinit'. Unfortunately the history file is hardcoded [167].
bazaar ~/.bazaar, ~/.bzr.log 2.3.0 [168] Discussion in upstream bug states that bazaar will use ~/.config/bazaar if it exists. The logfile ~/.bzr.log might still be written.
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] Bun will prioritize using $XDG_CONFIG_HOME, $XDG_CACHE_HOME, and/or $XDG_DATA_HOME when these have explicitly been set. As an alternative, export BUN_INSTALL="$XDG_DATA_HOME"/bun can be used to set bun's main location for its directories.
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] partial support due to required compile time option
cd-bookmark ~/.cdbookmark [177] export CD_BOOKMARK_FILE=$XDG_CONFIG_HOME/cd-bookmark/bookmarks

or use the fork that has native XDG support: [178]

cgdb ~/.cgdb [On master branch, but no release yet] [179] [180] Set export CGDB_DIR=$XDG_CONFIG_HOME/cgdb and move the config file to XDG_CONFIG_HOME/cgdb/cgdbrc
chez-schemeAUR ~/.chezscheme_history petite --eehistory "$XDG_DATA_HOME"/chezscheme/history
chktex in texlive-binextra ~/.chktexrc Move the config file to $XDG_CONFIG_HOME/chktex/.chktexrc (mind the leading dot) and export CHKTEXRC=$XDG_CONFIG_HOME/chktex
Chromium ~/.chromium, ~/.pki 23057 [181] [182] [183] Deliberately (according to these sources) clobbers ~/.config by writing hundreds of megabytes of cache data into it. Quite unsupported.
Chromium creates .pki due to not setting up NSS properly even though NSS itself allows using XDG spec now. This results in downstream from it not working as well (Qt WebEngine especially affecting many cases like KMail and etc.)
cinelerra ~/.bcast5 [184] export CIN_CONFIG="$XDG_CONFIG_HOME"/bcast5
conky ~/.conkyrc 00481ee [185] conky --config="$XDG_CONFIG_HOME"/conky/conkyrc
claws-mail ~/.claws-mail [186] claws-mail --alternate-config-dir "$XDG_DATA_HOME"/claws-mail
coreutils ~/.dircolors eval $(dircolors "$XDG_CONFIG_HOME"/dircolors)
crawl ~/.crawl The trailing slash is required

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
discord ${XDG_CONFIG_HOME}/discord As of version 0.0.27

Undocumented, though actively used: export DISCORD_USER_DATA_DIR="${XDG_DATA_HOME}"

Source: <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 [187] dosbox -conf "$XDG_CONFIG_HOME"/dosbox/dosbox.conf
dub ~/.dub v1.30.0-beta.1 Dub uses the ~/.dub directory for both user settings and caching downloaded packages. The directory can only be moved as a whole, using export DUB_HOME="path/to/new/dub".
Electrum Bitcoin Wallet ~/.electrum c121230 export ELECTRUMDIR="$XDG_DATA_HOME/electrum"
ELinks ~/.elinks export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks
elixir ~/.mix, ~/.hex afaf889 [188] [189] Elixir does not fully conform to XDG specs, it will use XDG only if the MIX_XDG variable is set to a special value, otherwise it will by default use legacy path.

export MIX_XDG="true"

Elm ~/.elm export ELM_HOME="$XDG_CONFIG_HOME"/elm
factorioAUR ~/.factorio/ [190] [191] Factorio supports manually specifying data paths with a config file: [192]
__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/ [193] export FCEUX_HOME="$XDG_CONFIG_HOME"/fceux. Fceux will create .fceux directory inside $FCEUX_HOME.
FFmpeg ~/.ffmpeg export FFMPEG_DATADIR="$XDG_CONFIG_HOME"/ffmpeg
flutterAUR ~/.flutter, ~/.flutter_settings, ~/.flutter_tool_state, ~/.pub-cache [194]
fzf-gitAUR ~/.fzf.bash, ~/.fzf.zsh [195] The shell init files will be installed to XDG_CONFIG_HOME/fzf if the installation script is called with --xdg for example /usr/local/opt/fzf/install --xdg.
emscripten ~/.emscripten, ~/.emscripten_sanity, ~/.emscripten_ports, ~/.emscripten_cache__last_clear [196] 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
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"
ghc ~/.ghci [197] [198] Supported upstream from 9.4.1 [199], but as of 2022-09-24 Arch package is 9.0.2 and not yet up-to-date.
ghcup-hs-binAUR ~/.ghcup [200] [201] export GHCUP_USE_XDG_DIRS=true

The environment variable GHCUP_USE_XDG_DIRS can be set to any non-empty value. See [202].

glivAUR ~/.glivrc gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc
gnuradio ~/.gnuradio [203] GNU Radio

export GR_PREFS_PATH="$XDG_CONFIG_HOME"/gnuradio

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

GnuPG ~/.gnupg [204] [205] 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 --list-dirs socketdir and have to modify the systemd user units to listen on the correct sockets accordingly. You also have to use the following gpg-agent.service drop-in file (or otherwise pass the GNUPGHOME env var to the agent running in systemd), or you might experience issues with "missing" private keys

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

If you use GPG as your SSH agent, set SSH_AUTH_SOCK to the output of gpgconf --list-dirs agent-ssh-socket instead of some hardcoded value.

Go ~/go [206] export GOPATH="$XDG_DATA_HOME"/go, export GOMODCACHE="$XDG_CACHE_HOME"/go/mod

If GOMODCACHE is not set, it defaults to $GOPATH/pkg/mod (see [207]). GOCACHE is supported and defaults to $XDG_CACHE_HOME/go-build (see [208]).

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 [209]

[210]

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"

If Lxappearance is used, ~/.gtkrc-2.0 may keep being created because it is where clicking "Apply" customizations writes to. The path is hardcoded in Lxappearance, but simply being an output file, the settings can be repeatedly moved to the location.

To prevent KDE Plasma from creating this file, disable the "GNOME/GTK Settings Synchronization" background service.

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

[213]

export HOUDINI_USER_PREF_DIR="$XDG_CACHE_HOME"/houdini__HVER__

The value of this variable must include the substring __HVER__, which will be replaced at run time with the current MAJOR.MINOR version string.

imapfilterAUR ~/.imapfilter export IMAPFILTER_HOME="$XDG_CONFIG_HOME/imapfilter"
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 [214] irssi --config="$XDG_CONFIG_HOME"/irssi/config --home="$XDG_DATA_HOME"/irssi
isync ~/.mbsyncrc [215] mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc
Java#OpenJDK ~/.java/.userPrefs [216] export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
jupyter ~/.jupyter 5.0.0rc0 [217] [218] 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 [219])

python-jupyter-core >= v6.0.0: full support (via python-platformdirs) enabled by default

k9s ~/.k9s 0.20.4 [220] export K9SCONFIG="$XDG_CONFIG_HOME"/k9s
KDE ~/.kde, ~/.kde4 [221] export KDEHOME="$XDG_CONFIG_HOME"/kde
keychain ~/.keychain [222] [223] keychain --absolute --dir "$XDG_RUNTIME_DIR"/keychain
kodi ~/.kodi [224] [225] KODI_DATA=$XDG_DATA_HOME/kodi
kscriptAUR ~/.kscript [226] export KSCRIPT_CACHE_DIR="$XDG_CACHE_HOME"/kscript
ledger ~/.ledgerrc, ~/.pricedb [227] 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 [228] export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss
libice ~/.ICEauthority [229] export ICEAUTHORITY="$XDG_CACHE_HOME"/ICEauthority

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

请勿使用 XDG_RUNTIME_DIR,因为它在登录后才可用。否则,启动 Xorg 的显示管理器(如 GDM)会反复失败。

LibreOffice [230] Libreoffice 将所有内容存储在 $XDG_CONFIG_HOME/libreoffice/4/user/ 中,包括运行时文件、用户数据、缓存和扩展。其中一些可以在工具 > 选项 > LibreOffice > 路径下更改
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
Luanti ~/.minetest/ [231] export MINETEST_USER_PATH="$XDG_DATA_HOME"/luanti
lynx /etc/lynx.cfg export LYNX_CFG="$XDG_CONFIG_HOME"/lynx.cfg
m17n-db ~/.m17n.d [232]
maptool-binAUR ~/.maptool-rptools [233]
/opt/maptool/lib/app/MapTool.cfg
[JavaOptions]
-DMAPTOOL_DATADIR=.local/share/maptool-rptools

但是,无法更改此配置文件的位置。

maven ~/.m2 [234] export MAVEN_OPTS=-Dmaven.repo.local="$XDG_DATA_HOME"/maven/repository

, mvn -gs "$XDG_CONFIG_HOME"/maven/settings.xml 并在 settings.xml 中根据需要设置 <localRepository>

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

以前是 MATHEMATICA_USERBASE,请参阅 从 Mathematica 升级到 Wolfram

maxima ~/.maxima export MAXIMA_USERDIR="$XDG_CONFIG_HOME"/maxima
mednafen ~/.mednafen export MEDNAFEN_HOME="$XDG_CONFIG_HOME"/mednafen
minikube ~/.minikube [235] export MINIKUBE_HOME="$XDG_DATA_HOME"/minikube

由于某些原因,在 MINIKUBE_HOME 中创建了另一个 .minikube 目录。

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
mtpaint ~/.mtpaint [236]
/etc/mtpaint/mtpaintrc
userINI = ~/.config/mtpaint
mypy ~/.config/mypy/config, ~/.mypy.ini, ~/.mypy_cache v0.670 [237] [238] XDG_CONFIG_HOME/mypy/config, export MYPY_CACHE_DIR="$XDG_CACHE_HOME"/mypy
MySQL ~/.mysql_history, ~/.my.cnf , ~/.mylogin.cnf export MYSQL_HISTFILE="$XDG_DATA_HOME"/mysql_history

~/.my.cnf 仅 mysql-server 支持,mysql-client 不支持 [239]

不支持 ~/.mylogin.cnf

mysql-workbench ~/.mysql/workbench 您可以使用 ---configdir 标志运行 MySQL Workbench,例如 mysql-workbench --configdir="$XDG_DATA_HOME/mysql/workbench"。该目录需要手动创建,因为 MySQL Workbench 默认位置是 $HOME/.mysql/workbench
ncurses ~/.terminfo 排除系统路径搜索

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

n /usr/local/n export N_PREFIX=$XDG_DATA_HOME/n
ncmpc ~/.ncmpc ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config
Netbeans ~/.netbeans [240] netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans
Node.js ~/.node_repl_history [241] export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history
npm ~/.npm, ~/.npmrc [242] 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 是不必要的(且不受支持)。

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

配置数据和状态数据都存储在 OPAMROOT 中,因此此解决方案并非完全合规。

PuTTY ~/.putty/ 9952b2d 如果 $XDG_CONFIG_HOME/putty 已存在,则将使用它。否则,将创建 ~/.putty。如果两者都存在,则优先使用 $XDG_CONFIG_HOME/putty。在 0.74 版本中测试通过
python-easyocrAUR ~/.EasyOCR export EASYOCR_MODULE_PATH="$XDG_CONFIG_HOME/EasyOCR"
spotdlAUR ~/.spotdl v4.0.6 (3929cae) [244] mkdir "$XDG_DATA_HOME"/spotdl
nuget ~/.nuget/packages [245] export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
NVIDIA ~/.nv 如果设置了 XDG_CACHE_HOME,则使用它,否则不正确地回退到 ~/.nv 而不是 ~/.cache
nvidia-settings ~/.nvidia-settings-rc [246] 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 选项必须给定绝对路径。

omnisharp-roslyn-binAUR ~/.omnisharp/ [247] [248] export OMNISHARPHOME="$XDG_CONFIG_HOME/omnisharp"
openscad ~/.OpenSCAD 7c3077b0f [249] 未完全遵守 XDG 基本目录规范,请参阅 [250]

目前它 硬编码~/.local/share

packettracerAUR ~/.packettracer, ~/pt 具有 GUI 配置来更改 PT 安装目录,~/pt/选项 > 首选项 > 管理 > 用户文件夹)。此路径写入文件 ~/.packettracer

日志文件仍然可能写入 ~/pt/logs,无论此设置如何,直到手动重新创建 .packettracer 文件。

parallel ~/.parallel 20170422 export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel
pass ~/.password-store export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
Phive ~/.phive [251]

另请参阅 [252][253]

自 0.14.5 版本起,可以移动整个数据目录。

export PHIVE_HOME="$XDG_DATA_HOME/phive"

Pidgin ~/.purple [254] pidgin --config="$XDG_DATA_HOME"/purple
platformio-core ~/.platformio [255] export PLATFORMIO_CORE_DIR="$XDG_DATA_HOME"/platformio
PostgreSQL ~/.psqlrc, ~/.psql_history, ~/.pgpass, ~/.pg_service.conf 9.2 [256] [257] 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"

PulseAudio ~/.esd_auth 很可能由 module-esound-protocol-unix.so 模块生成。可以配置为使用不同的位置,但在 /etc/pulse/default.pa"$XDG_CONFIG_HOME"/pulse/default.pa 中注释掉此模块更有意义。
pyenv ~/.pyenv [258] [259] export PYENV_ROOT=$XDG_DATA_HOME/pyenv
azure-cli ~/.azure export AZURE_CONFIG_DIR=$XDG_DATA_HOME/azure
python ~/.python_history v3.13 [260] [261] [262] 3.4 版本以来,交互式会话的所有历史记录默认保存到 ~/.python_history,自 3.13 版本起为 PYTHON_HISTORY。对于历史记录文件,Python 不会创建任何缺失的目录,并且仅当其目录存在时才写入文件。这仍然可以像旧版本一样自定义(请参阅此示例),包括使用自定义路径禁用历史记录保存

PYTHON_HISTORY: export PYTHON_HISTORY=$XDG_STATE_HOME/python_history PYTHONPYCACHEPREFIX: export PYTHONPYCACHEPREFIX=$XDG_CACHE_HOME/python PYTHONUSERBASE: export PYTHONUSERBASE=$XDG_DATA_HOME/python

python-gripAUR ~/.grip export GRIPHOME="$XDG_CONFIG_HOME/grip"
python-setuptools ~/.python-eggs export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs
racket ~/.racketrc, ~/.racket [263] export PLTUSERHOME="$XDG_DATA_HOME"/racket
rbenv ~/.rbenv [264] [265] export RBENV_ROOT="$XDG_DATA_HOME"/rbenv
nodenvAUR ~/.nodenv export NODENV_ROOT="$XDG_DATA_HOME"/nodenv
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
ripgrep [266] export RIPGREP_CONFIG_PATH=$XDG_CONFIG_HOME/ripgrep/config
rlwrap ~/.*_history [267] 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/ [268] export SOLARGRAPH_CACHE=$XDG_CACHE_HOME/solargraph
ruff .ruff_cache [269] export RUFF_CACHE_DIR=$XDG_CACHE_HOME/ruff
Rust#Rustup ~/.rustup [270] export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
sbt ~/.sbt

~/.ivy2

[271] sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt (注意 [272])
SageMath ~/.sage export DOT_SAGE="$XDG_CONFIG_HOME"/sage
GNU Screen ~/.screenrc

~/.screen/

export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc, export SCREENDIR="${XDG_RUNTIME_DIR}/screen"
simplescreenrecorderAUR ~/.ssr/ 0.4.3 [273]

[274]

仅当 $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 [275] [276] 移动 ~/.spacemacs 文件。

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

其他文件需要像 Emacs 一样配置。

SQLite ~/.sqliterc, ~/.sqlite_history 3.44.0 用于配置;
历史记录仍保留在旧位置
XDG_CONFIG_HOME/sqlite3/sqliterc, export SQLITE_HISTORY=$XDG_DATA_HOME/sqlite_history
starship ~/.config/starship, ~/.cache/starship [277] (v0.2.0), [278] (v0.45.0) [279] export STARSHIP_CONFIG="$XDG_CONFIG_HOME"/starship.toml, export STARSHIP_CACHE="$XDG_CACHE_HOME"/starship
subversion ~/.subversion [280] [281][282] alias svn="svn --config-dir \"$XDG_CONFIG_HOME\"/subversion"
sudo ~/.sudo_as_admin_successful 1.9.6 [283] [284] 仅在编译时激活时存在(默认无)。自 1.9.6 起,/etc/sudoers 中可以使用 admin_flag 参数。
task ~/.task, ~/.taskrc 在 2.6 版本中完全支持(请注意,$XDG_CONFIG_HOME/task/taskrc必须存在,否则即使设置了 $XDG_CONFIG_HOME,taskwarrior 也会在旧的 $HOME/.taskrc 位置提供创建示例配置 [285][286]
本地 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
tiptopAUR ~/.tiptoprc 这仍然会期望 .tiptoprc 文件。

tiptop -W "$XDG_CONFIG_HOME"/tiptop

ruby-travisAUR ~/.travis/ [287] export TRAVIS_CONFIG_PATH=$XDG_CONFIG_HOME/travis
uncrustify ~/.uncrustify.cfg export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg
Unison ~/.unison export UNISON="$XDG_DATA_HOME"/unison
unitsAUR ~/.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 [288] export VAGRANT_HOME="$XDG_DATA_HOME"/vagrant, export VAGRANT_ALIAS_FILE="$XDG_DATA_HOME"/vagrant/aliases
vint ~/.vintrc.yaml, .vintrc.yml, .vintrc 0f741ac2c [289] 未文档化,但代码显示 $XDG_CONFIG_HOME/.vintrc.yaml 应该可以工作
virtualenv ~/.virtualenvs export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
Visual Studio Code ~/.vscode-oss/ [290] 你可以使用 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"。这有文档记录,可能不会像预期的那样意外中断,因为它 有其他用例

VSCodiumAUR ~/.vscode-oss/ [291] [292] 你可以使用 --extensions-dir 标志运行 VSCodium,例如 vscodium --extensions-dir "$XDG_DATA_HOME/vscode"。然而,这无法阻止 ~/.vscode-oss/ 目录的创建。
w3m ~/.w3m 26284ff [293] [294] export W3M_DIR="$XDG_STATE_HOME/w3m"
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" 并添加以下作为 wget 的别名:wget --hsts-file="$XDG_CACHE_HOME/wget-hsts",或者使用绝对路径设置 hsts-file 变量,因为 wgetrc 不支持环境变量:echo hsts-file \= "$XDG_CACHE_HOME"/wget-hsts >> "$XDG_CONFIG_HOME/wgetrc"
wine ~/.wine [295] Winetricks 使用类似 XDG 的位置,如下所示,用于 WINEPREFIX 管理

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

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

应用程序还会创建 ~/.x3270connect,但目前不支持。

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

请注意,LightDM 不允许您更改此变量。如果您仍然更改它,您将无法登录。请改用 startx配置 LightDM。根据 [296] SLiM 硬编码了 ~/.Xauthority

SDDM Xauthority 路径可以在其自身的配置文件中更改,如下所示。不幸的是,它是相对于主目录的。

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

在 Wayland 上,覆盖此项可能会导致 Xorg 程序无法连接到 Xwayland 服务器。例如,kwinmutter 都使用随机名称,因此无法将其设置为静态值。

xinit ~/.xinitrc, ~/.xserverrc [297] export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc, export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc
xorg-xrdb ~/.Xresources, ~/.Xdefaults 最终你 应该 使用 Xresources,并且由于这些资源是通过 xrdb 加载的,你可以指定路径,例如 xrdb -load ~/.config/X11/xresources
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 初始化脚本在不同安装之间差异很大。

z ~/.z [298] export _Z_DATA="$XDG_DATA_HOME/z"
yarn ~/.yarnrc, ~/.yarn/, ~/.yarncache/, ~/.yarn-config/ 2d454b5 [299] [300] alias yarn='yarn --use-yarnrc "$XDG_CONFIG_HOME/yarn/config"'
zsh ~/.zshrc, ~/.zprofile, ~/.zshenv, ~/.zlogin, ~/.zlogout, ~/.histfile, ~/.zcompdump, ~/.zcompcache [301] export ZDOTDIR=$HOME/.config/zsh 以避免在您的主目录中需要大多数 zsh 点文件
"$XDG_CONFIG_HOME"/zsh/.zshrc
# Use XDG dirs for completion and history files
[ -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/ [302]
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 [303] [304] [305]
anthy ~/.anthy [306]
Apache Directory Studio ~/.ApacheDirectoryStudio
ARandR ~/.screenlayout [307]
Arduino ~/.arduino15, ~/.jssc 不会修复
arduino-cli ~/.arduino15/ [308] 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 [309]
Avidemux ~/.avidemux6 [310]
Bash ~/.bashrc, ~/.bash_history, ~/.bash_profile, ~/.bash_login, ~/.bash_logout 108134 10431 mkdir -p "$XDG_STATE_HOME"/bash

export HISTFILE="$XDG_STATE_HOME"/bash/history

bashrc 可以从 /etc/bash.bashrc 中的不同位置获取。指定 --init-file <file> 作为交互式 shell 的 ~/.bashrc 的替代方案。

Berkshelf ~/.berkshelf/
celestiaAUR ~/.celestiarc
chatty ~/.chatty/ [311]
cmake ~/.cmake/ [312] 用于用户包注册表 ~/.cmake/packages/<package>,详见 cmake-packages(7) § 用户包注册表包注册表 wiki 页面。看起来它是硬编码的,例如在 cmFindPackageCommand.cxx 中。
cmus ~/.config/cmus [313] [314]
Cinnamon ~/.cinnamon/ [315]
conanAUR ~/.conan/ [316] export CONAN_USER_HOME="$XDG_CONFIG_HOME" 将设置创建 .conan/ 的目录。它 旨在简化 CI,但也适用于此处。
cryptomatorAUR ~/.Cryptomator [317]
cVim[死链接 2022-09-23 ⓘ] ~/.cvimrc [318]
darcs ~/.darcs/ [319]
dart ~/.dart, ~/.dart-tool, ~/.dartServer [320]
dbus ~/.dbus/ [321] 考虑使用 dbus-broker,因为它不会创建或使用此目录。
devede ~/.devedeng 硬编码 此处
Dia ~/.dia/
dig ~/.digrc
dotnet-sdk ~/.dotnet/, ~/.templateengine [322]
dropbox ~/.dropbox/
Eclipse ~/.eclipse/ [323] 选项 -Dosgi.configuration.area=@user.home/.config/.. 会覆盖,但必须添加到 "$ECLIPSE_HOME"/eclipse.ini" 而不是命令行,这意味着您必须具有对 $ECLIPSE_HOME 的写入权限。(Arch Linux 在 /usr/bin/eclipse 中硬编码了 $ECLIPSE_HOME
emacs-slime ~/.slime/ [324]

[325]

equalxAUR ~/.equalx/ [326]
Fetchmail ~/.fetchmailrc
Firefox ~/.mozilla/ [327] [328]
Flatpak ~/.var/ [329] [330] 不会修复
freesweep ~/.sweeprc [331]
gftpAUR ~/.gftp/ [332] 按照 XDG 规范是 gftp 的计划。
gitkrakenAUR ~/.gitkraken/ [333]
GoldenDict ~/.goldendict/ [334]
gphoto2 ~/.gphoto [335]
gramps ~/.gramps/ [336] 2022 年支持 XDG 基本目录规范(针对下一个 Gramps 5.2 版本) - 补丁 https://github.com/gramps-project/gramps/pull/1368
groovy ~/.groovy/
grsync ~/.grsync/ [337]
google-cloud-cliAUR ~/.gsutil/ [338]
gtk-recordMyDesktop ~/.gtk-recordmydesktop
hplip ~/.hplip/ [339]
hydrogen ~/.hydrogen/ [340]
idris ~/.idris [341]
itch-setup-binAUR ~/.itch 不会修复 您可以在应用程序设置中移动游戏安装位置。
Jmol ~/.jmol/ [342]
lbdbAUR ~/.lbdbrc, ~/.lbdb/ [343]
llpp ~/.config/llpp.conf [344][死链接 2022-09-23 ⓘ] (仓库已被删除) 3ab86f0 中添加,但在 old:e253c9f1/new:e253c9f1 中随后被恢复
Java OpenJDK ~/.java/fonts [345] export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
Java OpenJFX ~/.java/webview
jgmenu ~/.jgmenu-lockfile [346] [347]
jitsi-meetAUR ~/Downloads libjitsi#518 下载目录硬编码为 ~/Downloads 而不是 XDG_DOWNLOAD_DIR(来自 XDG 用户目录
julia ~/.juliarc.jl, ~/.julia_history, ~/.julia [348] [349] 尾部的 :$JULIA_DEPOT_PATH 是必要的。请参阅 [350]
export JULIA_DEPOT_PATH="$XDG_DATA_HOME/julia:$JULIA_DEPOT_PATH"
export JULIAUP_DEPOT_PATH="$XDG_DATA_HOME/julia"
kotlin ~/.kotlinc_history 相关 Konan 问题:[351]
Kubernetes ~/.kube/ [352][353][354]
export KUBECONFIG="$XDG_CONFIG_HOME/kube" 
export KUBECACHEDIR="$XDG_CACHE_HOME/kube"
elan-leanAUR ~/.elan [355]
librewolfAUR ~/.mozilla

~/.librewolf

[356]
lldb ~/.lldb, ~/.lldbinit
LMMS ~/.lmmsrc.xml [357]
maliit-keyboard ~/.presage Maliit 键盘使用一个旧的、未维护的库 Presage,它创建 ~/.presage。在 2024 年,Maliit 键盘 放弃了对 Presage 的依赖,但截至 2.3.1 版本,这尚未包含在发布版本中。在此期间,请编译 maliit-keyboard 的 master 分支。
man-db ~/.manpath [358]
mathomatic[死链接 2024-10-12 ⓘ] ~/.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 生成。

Minecraft ~/.minecraft/ 不会修复
minicom ~/.minirc.dfl 上游有一个 TODO 条目,用于支持 ~/.config/minicom 下的配置文件。[359]
Mono ~/.mono/ [360]
mongodb ~/.mongorc.js, ~/.dbshell [361] 这个 Stack Overflow 帖子 建议使用命令行开关 --norc 进行部分规避。
~/.netrc ~/.ssh 类似,许多程序都期望此文件在此处。 这些包括像 curl (CURLOPT_NETRC_FILE), ftp (NETRC), s-nail (NETRC) 等项目。 虽然它们中的一些提供了可配置的替代位置,但许多没有,例如 w3m、wget 和 lftp。
nim ~/.nimble [362]

[363]

Nimble 将在启动时尝试加载 ~/.config/nimble/nimble.ini,并在那里设置 nimbleDir。 您还需要在 Nim 编译器配置文件中更改 nimblepath
Networkmanager-openvpn ~/.cert/nm-openvpn [364]
nyx ~/.nyx 该项目目前未维护
oh-my-bash-gitAUR ~/.osh-update
Ollama ~/.ollama [365] 模型位置可以使用以下命令设置

export OLLAMA_MODELS=$XDG_DATA_HOME/ollama/models

来源:[366]

openshot ~/.openshot_qt [367] [368]
OpenSSH ~/.ssh 不会修复 许多 ssh 守护程序和客户端(如 DropBear 和 OpenSSH)都假定它存在。
palemoon ~/.moonchild productions [369]
parsec-binAUR ~/.parsec
pcsxrAUR ~/.pcsxr 存在 -cfg 标志,但只能相对于 ~/.pcsxr 设置。
perf ~/.debug 硬编码在 tools/perf/util/config.c 中。提交:[370]
perl ~/.cpan, ~/perl5 [371] Perl5 的 CPAN 期望 ~/.cpan
phoronix-test-suiteAUR ~/.phoronix-test-suite [372] 部分规避方法:[373]
PHP ~/.php_history [374] PHP 应用程序可以使用 readline_read_historyreadline_write_history 读取/写入自定义文件。
portfolio-performance-binAUR ~/.PortfolioPerformance/ [375]
各种 shell显示管理器 ~/.profile
psensor ~/.psensor [376]
pulumi ~/.pulumi [377]
python-tensorflow ~/.keras [378] 问题针对 tf.keras 模块
quilt ~/.quiltrc 如果 ~/.quiltrc 不存在,则回退到 /etc/quilt.quiltrc
Qt Designer ~/.designer [379]
R ~/.Rprofile, ~/.Rdata, ~/.Rhistory
R_HOME_USER="$HOME/.config/R"
R_PROFILE_USER="$HOME/.config/R/profile"
R_HISTFILE="$HOME/.config/R/history"
RedNotebook ~/.rednotebook [380]
Remarkable ~/.remarkable
renderdoc ~/.renderdoc 不会修复
Ren'Py ~/.renpy 不会修复 最新版本支持 RENPY_PATH_TO_SAVES 环境变量。 因此,您可以设置它来更改某些游戏的路径。
export RENPY_PATH_TO_SAVES="$XDG_DATA_HOME/renpy"
repo ~/.repoconfig [381]
rpm ~/.rpmrc ~/.rpmmacros 积压 解决方法是使用 --rcfile 和 --macros,但这会带来副作用。
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 [382]
Signal Desktop [383] 当前将消息保存在 ~/.config/Signal
Snap ~/snap/ [384]
Solfege ~/.solfege, ~/.solfegerc, ~/lessonfiles [385]
SpamAssassin ~/.spamassassin
Steam ~/.steam, ~/.steampath, ~/.steampid [386] 许多游戏引擎(Unity 3D、Unreal)都遵循该规范,但随后各个游戏发行商在 Steam Auto-Cloud 中硬编码路径,导致游戏存档同步到错误的目录。
stellariumAUR ~/.stellarium/ [387]
stremioAUR ~/.stremio-server/ [388]
sts4 ~/.sts4 [389] 传递 JVM 参数 -Dlanguageserver.boot.symbolCacheDir=$XDG_CACHE_HOME/sts4/symbolCache
python-streamlitAUR ~/.streamlit [390]
sweethome3d ~/.eteks/sweethome3d [391]
python-sympy ~/.sympy-history [392]
TeamSpeak ~/.ts3client export TS3_CONFIG_DIR="$XDG_CONFIG_HOME/ts3client"
terraform ~/.terraform.d/ [393]
texinfo ~/.infokey info --init-file "$XDG_CONFIG_HOME/infokey"
Thunderbird ~/.thunderbird/ [394]
tllocalmgr ~/.texlive
urlviewAUR ~/.urlview 使用 fork urlview-xdg-gitAUR 代替。 此 fork 将使用 XDG_CONFIG_HOME/urlview/config
viberAUR ~/.ViberPC
vimperator ~/.vimperatorrc [395] export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"

export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator

visidata ~/.visidata [396]
wpa_cli ~/.wpa_cli_history
wegoAUR ~/.wegorc [397]
x2goclientAUR ~/.x2goclient alias x2goclient="x2goclient --home=$HOME/.config"
xpdf ~/.xpdfrc
xrdpAUR ~/thinclient_drives 对于目录 ~/thinclient_drives,您可以考虑编辑 /etc/xrdp/sesman.ini 并按照示例配置修改 [Chansrv] 部分。
XVim2 ~/.xvimrc [398]
YARD ~/.yard [399] 如果有人想实现它,将接受 Pull Request。
zenmap nmap ~/.zenmap [400] [401]
zoomAUR ~/.zoom 不推荐:设置以下变量会移动 .zoom 的内容,但目录本身始终会被创建。 此外,它会破坏某些功能,例如能够开始会议。 export SSB_HOME="$XDG_DATA_HOME"/zoom
zotero-binAUR ~/.zotero ~/Zotero [402] 可以从 GUI 更改 ~/Zotero 的默认数据位置:编辑 -> 首选项 -> 高级 -> 数据目录位置 -> 自定义

工具

工具 xdg-ninjaAUR 检测 $HOME 中不需要的文件/目录,这些文件/目录可以移动到 XDG 基本目录。 有关示例,请参阅 README

工具 boxxy 可用于包装不遵守 XDG 基本目录的应用程序,并重定向任何不需要的文件。

工具 ephemeral 可用于链接通常位于 XDG_CONFIG_HOME 中的 chromium/electron 缓存到 XDG_CACHE_HOME 中的位置。

C
libXDGdirs
libxdg-basedir
C99:Cloudef 的简单实现.
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
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 path >> ~/.hidden

path 是文件/目录的路径,相对于 .hidden 的父目录。

另请参阅