i3-gaps を中心とした Linux の環境構築についてと、それらのファイルの管理について書きました。
タイル型ウィンドウマネージャへ移行するモチベーション
今のラップトップを使い始めて4年目であることに加えて、1週間に何度も Linux をビルドしていたらバッテリーの寿命が縮んでしまったみたいで、メモリや CPU の使用率が気になり始めました。
特に Gnome がメモリを食ってるのが気になって、軽量なウィンドウマネージャを使うことにしました。
軽量なデスクトップ環境はありますが、一時期タイル型ウィンドウマネージャを使っていたことがあり便利なことは知っていたので、また使うことにしました。
見た目

かんたんな説明
- i3-gaps
 タイル型ウィンドウマネージャの i3 のフォークです。タイル間に隙間 ( gaps ) を入れることができます。
- polybar
 画像上部にあるステータスバーです
- rofi
 画像中央に表示されている、多機能なアプリケーションランチャーです。
- i3status
 画像下部にあるステータスバーです。
- picom
 compton のフォークのコンポジタです。ウィンドウの透過に使っています。
- feh
 画像ビュワーです。壁紙の管理に使っています。
ちなみに、ディストリビューションは Fedora36 です。
dotfiles の管理
上記の通り、複数のツールを使っていて、それぞれにコンフィグファイルがあります。ここからは、それらのファイル ( 以下: dotfiles ) の管理方法について紹介します。
dotfiles は git を使って管理しています。リポジトリを ~/.local/share/dotfiles に置き、シンボリックリンクを使って設定を反映させています。
例えば、 i3-gaps の設定ファイルは ~/.config/i3/config に置けば読み込まれるので、~/.config/i3 という ~/.local/share/dotfiles/i3 へ向けたリンクを作ります。この方法で複数の設定ファイルを1つのリポジトリで管理することができます。
しかし、手動でそれをやるのは面倒なのでスクリプトを書きました。
リポジトリ
https://github.com/chaya2z/dotfiles
スクリプトについて
中身は ln コマンド / unlink コマンドを叩いているだけです。 fire[1] というライブラリに依存しているためそこがネックですが、個人で使う分には十分に感じます。
dotfiles の管理ツールはいくつかあります[2] が、個人的にシンボリックリンクが簡単だと思ったのでそれらは使いませんでした。
fire
最後に、スクリプトに使用した fire というライブラリを紹介します。
fire は Python のライブラリで、CLI ツールの作成においてコマンドライン引数の処理を簡単にします。
例えば、以下のようなコードで link コマンドと unlink コマンドを作れます。クラスや関数を fire に渡すと、それをコマンドにできます。
import fire
class Command:
    def link(self, *files):
        """how to use link"""
        # link コマンドを実行したときの処理
        pass
    def unlink(self, *files):
        # unlink コマンドを実行したときの処理
        pass
fire.Fire(Command)
また、fire は help メッセージを生成してくれます。docstring を書いておけば help に表示してくれます。

おわり
私はいままで Ubuntu ユーザで、デスクトップ環境を変えず使っていましたが、いろいろ弄り始めると楽しいですね。
最後まで読んでくださりありがとうございます。