WezTermを使い始めた

Rust製のクロスプラットフォーム対応ターミナル WezTerm を使い始めた。
これまではmacOS標準のターミナル.appを使っていて、機能は最低限という感じだけど特に困ることはなかった。
ただ、最近になってシェル環境を見直す機会があり、そこでWezTermを知って魅力を感じたので乗り換えることにした。

WezTermにした理由

  1. 設定をコード (Lua) で管理できる。dotfilesでいろいろな設定をgit管理しているので、ターミナルの設定もそこにまとめられるのは魅力的だった。ちょうど最近NeoVimの設定をLuaで書いていたので、Luaに対しても抵抗はなかった。

  2. Nerd Fontが簡単に使える。自分は普段macOSのMonacoフォントを使っているが、これをNerd Fontに対応させてターミナル.appで使うにはパッチを当てる必要があった。WezTermには複数のフォントを設定できて、対応していないグリフがあった場合にfallbackさせる機能があるので、パッチを当てずにNerd Fontを使うことができる。

  3. TrueColorに対応している。最近のターミナルなら大体対応していると思うけど、macOSのターミナル.appはたぶん対応していない。NeoVimのcolorschemeやstatus lineを綺麗に表示したかったので、これも地味に移行理由の一つになった。

WezTermは他にもtmuxのようなMultiplexing機能、テキストを素早く選んでコピーできるQuick Select Mode、コマンドパレットなど便利な機能が揃っていてとても良い。
個人的にはtmuxも引き続き使いたいので、Multiplexingの機能は使っていない。

自分の設定

https://github.com/nek023/dotfiles/blob/9c32c6ea875ed5a58934478c4583208790e41f22/.config/wezterm/wezterm.lua

見た目周りを少しいじっているくらいで、キーバインドも少なく全体的に控えめな設定になっている。
唯一特徴的な部分としては、~/.config.local/wezterm/wezterm.lua に別の設定ファイルを置くことで設定を上書きできるようにしている。
これは自宅と会社で設定を変えられるようにするためで、例えばディスプレイに合わせて文字サイズを変えたり、背景画像を変えたりできる。
また、wezterm.add_to_config_reload_watch_list() のおかげでlocal configが変更された際も自動でリロードされるようになっていて、とても便利。

id:motemen さんの設定も大変参考になるので、WezTermに興味を持たれた方は読んでみることをおすすめします。

motemen.hatenablog.com

困っていること

WezTermをCmd+Qや閉じるボタンで終了させたとき、tmuxのアクティブなペインが閉じられてしまうのが少し困っている。
ターミナル.appのときはペインはそのままでtmuxがdetachされるような挙動だったので、間違えてターミナルを閉じてしまっても tmux a で作業を再開できていた。
それがWezTermだとペインごと閉じられてしまうため、今は終了時に確認画面を表示するように設定して対策している。

config.window_close_confirmation = "AlwaysPrompt"
config.skip_close_confirmation_for_processes_named = {}

他の設定も一通り見てみたけど、関係ありそうなものは見つからなかった。
もし何かご存知の方がいましたら教えていただけると大変助かります。