Dotfile

XDG 是一套指导各种 APP 的文件在家目录下存放位置的规范,通过环境变量设置。

在 Archlinux 中,默认是不设置它们的,所以需要我们手动设置。我把它放在了 /etc/profile 下,因为各种 shell 都会用到这些变量:

export XDG_DATA_HOME="$HOME/.local/share"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_STATE_HOME="$HOME/.local/state"

更进一步,因为个人 PC 不用考虑多用户的问题,所以我把各种基于 XDG 的环境变量,也放在了 /etc/profile 下,如下所示:

export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
export PYTHONSTARTUP="$XDG_CONFIG_HOME"/python/pythonrc
 
export NPM_CONFIG_INIT_MODULE="$XDG_CONFIG_HOME"/npm/config/npm-init.js
export NPM_CONFIG_CACHE="$XDG_CACHE_HOME"/npm
export NPM_CONFIG_TMP="$XDG_RUNTIME_DIR"/npm
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
 
export ZSH="$XDG_DATA_HOME"/oh-my-zsh
 
export DOTNET_CLI_HOME="$XDG_DATA_HOME"/dotnet

这种方式避免有些 APP 是先于 shell 登录的,如果在 shellrc 中设置,就来不及的问题。

此外还些关于 zsh 的文件,我放到了 /etc/zsh/zprofile 中设置,如下所示:

export HISTFILE="$XDG_STATE_HOME"/zsh/history
export ZSH_COMPDUMP=$ZSH/cache/.zcompdump-$HOST

这些设置都是在 xdg-ninja 软件的帮助下完成的。

Default Dir

desktopdownload 这种默认文件夹的位置,都是在 ~/.config/user-dirs.dirs 这个文件中记录着。