はじめに
僕はプログラミングを始めて以来、12年ほどiTerm2を使っていたのですが、この度WezTermに乗り換えたので備忘録的に記事としてまとめました。
iTerm2から乗り換えることにした理由
iTerm2はターミナルそのものとしては使いやすかったのですが、設定をUI上で行う仕様になっていたため、端末間での設定共有などが難しい点が課題でした。
一応、以下の記事のように設定のExport/Import機能もあるのですが、設定ファイルが主ではなく、UIでの設定にファイル内容が引きずられてしまうという問題があったので、やりたいことには絶妙にマッチしていませんでした。
Exportした設定ファイルをdotfilesリポジトリで管理していても、iTerm2を開くたびに設定ファイルが書き換わってしまうのがストレスになってきたのと、このままだとAIによる設定管理などがしにくいと感じ、移行を決めました。
乗り換え先に求めていたもの
乗り換え先に求めていた要件・こだわりポイントは以下の通りです。
設定がコードベースで行えること
UI上での設定は冪等性が担保しづらいですし、端末間での共有も難しいです。
また、AIエージェントありきの今、コードベースで設定を管理できる方が何かと便利そうだと思っていました。
乗り換えの理由でもありますし、ここは一番重要視していました。
ホットキーでターミナルを簡単に呼び出せること
iTerm2で特に重宝していた機能の一つに、ホットキーがありました。
普段Neovimを使っており、ターミナルがエディタも兼ねているため、ターミナルはいつでもすぐに開ける状態が好ましいです。
そのため、ホットキーによるターミナルの呼び出しは欲しいなと考えていました。
背景が透過できること
ターミナルの背景が透過しない状態だと、ターミナル外でどんなことをしていたのかを見失いやすいと感じています。
また、ターミナルは基本的にフルスクリーンにしたいため、ターミナルを開いたままでもある程度他のものが見える状態の方が何かと便利です。
今までもいくつかターミナルを試してみたことはあったのですが、この背景透過ができないことで乗り換えを断念することも多かったです。
WezTermとは
Wezさんが開発しているRust製のターミナルです。
設定をLuaスクリプトで柔軟に記述できるのが特徴です。
WezTermにした理由
乗り換え先に求めていたものが大体揃っていたからです。
設定がコードベースで行えること
WezTermはLuaスクリプトで設定を書くことができます。
また、Neovimと同じLuaスクリプトで設定を記述できるため、Linterなど今まで用意していたエコシステムがそのまま転用できるのも、非常に使い回しが便利そうでいいなと思いました。
ホットキーでターミナルを簡単に呼び出せること
WezTerm自体にはホットキーの機能はないのですが、hammerspoonというツールでホットキーの設定を実現できました。
hammerspoonとはmacOS用の自動化ツールで、Luaスクリプトを使って様々なカスタマイズや操作を実行できるアプリケーションです。
hammerspoonもLuaスクリプトで設定を記述でき、使い回しが楽だったため、特に使い勝手に課題は感じていません。
背景が透過できること
WezTermは背景透過の設定があるため、簡単に背景を透過させることができました。
WezTerm・hammerspoonの設定
WezTermは以下のような設定にしました。
主な設定内容は以下の通りです。
- 透過: 0.85
- CTRL + CMD + fでフルスクリーンを解除
- スクリーン間で表示場所を移動したい時などに使用する
- WezTermを開いたときにデフォルトでフルスクリーンにする
- 基本的にフルスクリーンでの作業が好ましいため
また、hammerspoonは以下のような設定を入れています。
乗り換えた感想
乗り換えてよかったなと思っています。
設定ファイルをコードベースで管理できるようになったため、複数の端末間でも設定の共有が簡単になりましたし、何より勝手に設定が書き換わるようなこともなくなったのがとても快適です。
iTerm2で便利だった機能が大体WezTermで実現できたので、しばらくはこのままWezTermを使っていこうと思っています。