ドットファイル

提供: ArchWiki
移動先: 案内検索

この記事ではドットファイルという名前で周知されているカスタム設定ファイルのユーザーリポジトリを収集しています。

バージョン管理

Git などのバージョン管理ソフトウェアでドットファイルを管理することで、変更を記録したり他のユーザーとファイルを共有したり、複数のホスト間でドットファイルを同期することができます。

gitignore を使う

ホームディレクトリに git ディレクトリ を作成することで変更を直接記録することができます。インデックスに追加するファイルは git add で選択することを推奨します。

変更が追跡されないファイルが生じないように (git clean で削除されます)、まずは gitignore で全てのファイルを除外してください:

~/.git/info/exclude
*

それから git add -f で追跡したいファイルだけを追加します:

$ git add -f ~/.config/*

最後に変更を commit してください:

$ git commit -a

他のツール

  • etckeeper — システム全体の設定が存在する /etc をバージョン管理します。バージョン管理ソフトウェアが無視するパーミッションやモードを記録することで動作します。様々な SCM システムをバックエンドとして使用可能。フックを使用することでシステムがアップグレードされる前にリポジトリに変更を自動的にコミットできます。
http://joeyh.name/code/etckeeper/ || etckeeper
  • GNU Stow — リポジトリのドットファイルから $HOME ツリーにシンボリックリンクを作成します。詳しくは [1] を見てください。
http://www.gnu.org/software/stow/ || stow
  • Pearl — ドットファイルやプラグイン、プログラムあるいは git から入手できるあらゆるコードのパッケージマネージャ。システム間でパッケージを簡単に共有・同期することができ、すぐに使える状態にできます。
https://github.com/pearl-core/pearl || pearl-gitAUR
  • vcsh — 全てのドットファイルをひとつのリポジトリで管理するのではなく、様々なモジュール (Emacs の設定や zsh の設定など) を別々のリポジトリに分割することで管理を分けることができます。git でしか動作しません。
https://github.com/RichiH/vcsh || vcshAUR
  • yadm — ひとつの Git リポジトリを使って複数のシステムでファイルを管理します。特定の OS やホストで別のファイルを使うようにすることができます。機密情報を暗号化することでリポジトリに安全に保存することが可能。
https://github.com/TheLocehiliosan/yadm || yadmAUR[リンク切れ: パッケージが存在しません]
  • homeshickBash で書かれた git ドットファイル同期ツール。
https://github.com/andsens/homeshick || homeshick-gitAUR
  • dotbot — ドットファイルリポジトリの git サブモジュールとしてインストールすることができるミニマルなドットファイルマネージャ。
https://github.com/anishathalye/dotbot ||

複数のマシンでドットファイルを管理する

共有する設定をマスターブランチで管理して、マシンごとのブランチを作成することで、カスタマイズを加えながら様々なマシンのドットファイルを管理するという方法があります。特定のマシンの設定は専用のブランチにコミットし、共通設定はマスターブランチに追加します。そしてマスターを更新したら各マシンのブランチをリベースします。

また、特定のマシンの設定を特殊なコメントブロックに記述して qualia を使って自動的にアンコメントさせるという方法もあります。この方法は手間が少ない上にマージによる衝突が発生しません。

機密情報

ときとして、ソフトウェアはパスワードを平文で設定ファイルに保存することがあります。そのような場合、git clean フィルターを利用することで機密情報を間違ってコミットする危険を減らすことができます。例えば、以下の .gitattributes ファイルは “some-dotfile” ファイルにフィルターを適用します:

# .gitattributes
some-dotfile filter=remove-pass

“some-dotfile” ファイルが git にチェックインされた場合、git は “remove-pass” フィルターを実行します。フィルターは .git/config に以下のように定義してください:

[filter "remove-pass"]
clean = "sed -e 's/^password=.*/#password=TODO/'"

リポジトリ

作者 シェル WM / DE エディタ ターミナル マルチプレクサ オーディオ モニター メール IRC
Ambrevar zsh awesome emacs rxvt-unicode cmus htop/vicious mutt
awal fish i3 vim sakura tmux i3status The Lounge
bamos zsh i3/xmonad vim/emacs rxvt-unicode tmux mpv/cmus conky/xmobar mutt ERC
brisbin33 zsh xmonad vim rxvt-unicode screen dzen mutt irssi
bstaletic zsh dwm vim terminator screen ncmpcpp conky
cinelli zsh dwm vim termite-git pianobar htop mutt-kz weechat
drkhsh zsh dwm vim st screen cmus conky mutt weechat
Earnestly zsh i3/orbment vim/emacs termite tmux mpd conky mutt weechat
ErikBjare zsh xmonad/xfce4 vim terminator tmux xfce4-panel weechat
falconindy bash i3 vim rxvt-unicode ncmpcpp conky mutt
graysky zsh xfce4 vim terminal ncmpcpp custom thunderbird
gtmanfred zsh dwm vim termite-git tmux mpd conky mutt weechat
hugdru zsh awesome neovim rxvt-unicode tmux thunderbird weechat
insanum bash herbstluftwm vim evilvte tmux dzen mutt-kz
izmntuk zsh xfce4 vim rxvt-unicode/yaft tmux cmus xfce4-panel irssi
jasonwryan bash/zsh dwm vim rxvt-unicode tmux ncmpcpp custom mutt irrsi
jdevlieghere zsh xmonad vim terminal tmux htop mutt weechat
jelly zsh i3 vim termite tmux ncmpcpp mutt-kz-git weechat
meskarune bash herbstluftwm vim rxvt-unicode screen conky weechat
neersighted zsh i3 vim rxvt-unicode tmux ncmpcpp htop mutt irssi
OK100 bash dwm vim rxvt-unicode cmus conky, dzen mutt weechat
pid1 zsh dwm neovim termite tmux custom mutt weechat
polyzen zsh i3 vim termite tmux i3status weechat
swalladge zsh/bash i3 neovim/vim termite tmux i3status
thiagowfx bash/zsh i3 vim/emacs rxvt-unicode ncmpcpp i3blocks
unexist zsh subtle vim rxvt-unicode ncmpcpp mutt irssi
vodik zsh xmonad vim termite-git tmux ncmpcpp custom mutt weechat
w0ng zsh dwm vim rxvt-unicode tmux ncmpcpp custom mutt irssi
Wintervenom bash herbstluftwm vim rxvt-unicode screen mpd (mpc-utils) hlwm-dzen2 mutt weechat
wolfcore bash dwm vim rxvt-unicode tmux cmus custom weechat
xfausto zsh dwm vim st ncmpcpp conky
zendeavor zsh i3 vim rxvt-unicode tmux ncmpcpp i3status weechat

参照