Alacritty の CLI Command が便利すぎた
$ alacritty msg config -h
Update the Alacritty configuration
Usage: alacritty msg config [OPTIONS] <CONFIG_OPTIONS>...
Arguments:
<CONFIG_OPTIONS>... Configuration file options [example: 'cursor.style="Beam"']
Options:
-w, --window-id <WINDOW_ID> Window ID for the new config [env: ALACRITTY_WINDOW_ID=4594901664]
-r, --reset Clear all runtime configuration changes
-h, --help Print help (see more with '--help')
これが便利だったという話
きっかけ
2年ほど前から iTerm2 ではなく Alacritty を使っている
過去の記事でも触れているが、
iTerm2 で透明度を切り替えるための Shell Script を書いた。
参考記事
課題
便利だったのだが、
これだと、元の config file をいじるため、
dotfile をいじっている際に、透明度を変更すると、git に差分が生まれてしまい、
それを避けて、commit をしたりしなければならなかった。
alacritty command との出会い
全集中モードで開発する際に、 Zen Mode を使う。
普段 Neovim で開発しているため、以下のプラグインを使って、Zen Mode に入っている。
Zen Mode に入ると、Terminal の文字サイズも変更してくれ、とても便利である。
最近 Terminal Emulator を変更しようと思い、 zen-nvim が対応している Terminal Emulator の一覧と、
その Plugin はどうやって実装されているのかをたまたま覗いてみていた。
そしたら
こんなことをしていた。
alacritty msg config -w $ALACRITTY_WINDOW_ID font.size=16
でサイズを変更し
alacritty msg config -w $ALACRITTY_WINDOW_ID --reset
で戻す
という感じでうまいこと切り替えを行っているのである。
特に
--reset
option で元に戻すことができることが素晴らしい
元のサイズを指定するのではなく、config で指定していたものに戻せるところが嬉しい。
とても便利
Hammerspoon のコード
window.opacity
を変えてあげれば、今やりたいことができる。
-- toggle Alacritty opacity
local transparent = true
hs.hotkey.bind({ "cmd" }, "u", function()
local appName = "alacritty"
local app = hs.application.find(appName)
if app.isFrontmost(app) then
if transparent then
hs.execute("alacritty msg config window.opacity=1", true)
transparent = false
else
hs.execute("alacritty msg config --reset", true)
transparent = true
end
end
end)
こんな感じにしてみた。
私は、tmux を使っているため、Terminal を同時に複数開くことがないため、 $ALACRITTY_WINDOW_ID
での window 指定は不要だった。
(Hammerspoon からうまく扱えなかった)
(小技) 特定のアプリがアクティブな時のみ実行する Hammerspoon
local appName = "alacritty"
local app = hs.application.find(appName)
if app.isFrontmost(app) then
-- 略
end
これで、Alacritty がアクティブな時のみ実行するようにした。
まとめ
上記によって、
opacity を切り替えるための実行ファイルも不要になったし、
git diff で差分表示されるようなこともなく、より気軽に dotfiles の更新ができるようになった。
やはり気になったらコードを読んでみることは大事である。思わぬ発見がある。
Discussion