💨

Alacrittyの設定をローカル別に反映させる

2022/03/31に公開

私はターミナルにAlacrittyを使ってます。
Alacrittyは高速で動作し、クロスプラットフォーム対応しています。
また設定がymlファイルで記述するため、dotfilesでの管理もしやすいです。

しかし、ローカルごとに例えばフォントサイズを調整したりテーマを変えたいとき、変更するだけなら各ローカルの設定ファイルを変更するだけなのですが、dotfilesなどをGitHub等で管理していると差分になり、ローカル特有の設定のためdotfilesのレポに反映できず差分になってしまいます。
そこでGitHubで管理しているファイルは変更せずに、そのローカル特有のの設定を反映できるようymlファイルを変更しました。

環境

$ alacritty --versio
alacritty 0.10.1

設定ファイル

結論から言えば設定にあるimport機能を使います。
設定ファイルを見ると先頭の方にコメントアウトされているのでコメントアウトを解除して
importのpathに、別の設定用のymlファイルがあるpathを記載すれば読み込まれます。

alacritty.yml
#
# All imports must either be absolute paths starting with `/`, or paths relative
# to the user's home directory starting with `~/`.
- #import:
- #  - /path/to/alacritty.yml
+ import:
+   - /path/to/alacritty.yml

env:
  TERM: xterm-256color

window:
  dimensions:
    columns: 150
    lines: 40

ただし、importで読み込んだファイルの内容は先に反映されるので、ローカル用の設定は後から反映させないとうまく反映されません。
よってデフォルトの設定とローカル用の設定を分けて順番どおりに読み込む必要があります。
例えば、GitHubで管理したいデフォルトの設定をalacritty_default.yml、ロカールの設定ファイルをalacritty_local.ymlとして、fontのサイズを変更したいとして下記のように修正します。

alacritty.yml
# このファイルにはimportのみ記載する
import:
-   - /path/to/alacritty.yml
+   - /path/to/alacritty_default.yml
+   - /path/to/alacritty_local.yml

- env:
-   TERM: xterm-256color
-
- window:
-   dimensions:
-     columns: 150
-     lines: 40
-
- font:
-   size: 17
alacritty_default.yml
# このファイルにはGitHubで管理したいデフォルトの設定を記載する
+ env:
+   TERM: xterm-256color
+ 
+ window:
+   dimensions:
+     columns: 150
+     lines: 40
+
+ font:
+   size: 17
alacritty_local.yml
# このファイルにはGitHubで管理したくないローカルの設定を記載する
+ font:
+   size: 20

上記のようにするとimportは上から読み込まれていくのでローカル用の設定が上書きされて、ローカルの設定が反映されます。
GitHubではalacritty.ymlalacritty_default.ymlのみを管理して、必要に応じてローカル用のファイルを準備すればローカル用の設定を反映することができます。
このimport機能はパス先に設定ファイルがない場合はスキップしてくれるので、ローカルの設定が必要ない場合でも、読み込みのエラー対策で空の設定ファイルを用意しなくてもエラーにもなりません。

Discussion