XDG_BASE_DIRECTORY

参考 ホームディレクトリのドットファイルを整理する。

XDG_CONFIG_HOMEとは

https://wiki.archlinux.org/title/XDG_Base_Directory に則って、 ~/.config に設定ファイルを置くとHOMEフォルダがごちゃごちゃしなくていいようなのでやってみる。

https://www.freedesktop.org/wiki/Specifications/ によると、 ‘XDG’は Cross-Desktop Group のことらしい

zshの設定ファイルを~/.configにする

環境変数 $ZDOTDIR が設定されていると、そのディレクトリ以下の設定ファイルを見るようになる。 zshはデフォルトで ~/.zshenv を見るので、ここに書いても良いのだが、 ~/.zshenv~/.config/zsh/.zshenv が存在することになりちょっと気持ち悪い。 ここではシステムの /etc/zshenv に書くことにした。

sudo vim /etc/zshenv

export ZDOTDIR=$HOME/.config/zsh

これで ~/.config/zsh/.zshenv(, .zshrcなど) が読み込まれるようになる。

環境変数を設定

export XDG_CONFIG_HOME=~/.config
export XDG_CACHE_HOME=~/.cache
export XDG_DATA_HOME=~/.local/share
export XDG_STATE_HOME=~/.local/state

Vim

Neovim を使っている。もともと $XDG_CONFIG_HOME/nvim/init.vim を見るようになっていて、特別な設定はいらないのだが、vimの設定と統一しておきたかったので以下のようにした。 vimはほぼ起動しないので、init.vimに書いてしまっても良かったのだがなんとなくこうしている。

set runtimepath+=$XDG_CONFIG_HOME/nvim,$XDG_CONFIG_HOME/nvim/after
set packpath+=$XDG_CONFIG_HOME/nvim
source $XDG_CONFIG_HOME/nvim/vimrc
let $VIM_CACHE = expand('$XDG_CACHE_HOME/vim')
let $VIM_HOME = expand('$XDG_CONFIG_HOME/nvim')
 
" ディレクトリが無かったら作る
if !isdirectory(expand($VIM_CACHE))
  call mkdir(expand($VIM_CACHE), 'p')
endif
 
" backup, undo
set backup
set backupdir=$VIM_CACHE/backup
if !isdirectory(expand('$VIM_CACHE/backup'))
  call mkdir(expand('$VIM_CACHE/backup'), 'p')
endif
set noswapfile
set undodir=$VIM_CACHE/undo
set undofile
if !isdirectory(expand('$VIM_CACHE/undo'))
  call mkdir(expand('$VIM_CACHE/undo'), 'p')
endif
 
" viminfoファイルを~/.cacheに作る
set viminfo+=n$VIM_CACHE/viminfo
 
" sessionファイルを~/.cacheに作る
let g:session_path = expand('$VIM_CACHE/sessions')
if !isdirectory(g:session_path)
    call mkdir(g:session_path, "p")
endif
 
" ... その他設定