Alacrittyとtmuxでターミナル環境をつくる
2021年02月17日
Linuxを使っていた頃は、タイル型のウィンドウマネージャーを使っていたこともあってターミナル自体を大量に開くことで複数のターミナルを同時に使っていました。
Macを買った際にターミナルまわりの環境を構築しなおした際に今までLinuxで使っていたAlacrittyも試してみたのですが、Mac版では一度にひとつのウィンドウしか開けないため今までのように「ウィンドウを多数開いてウィンドウ自体を管理する」という形のターミナル管理はできなくなりました。
そこでMacではiTerm2を使うことにしました。macOSによく馴染み、多機能でFLOSSでよいターミナルだと思うのですが、WSL環境でもAlacrittyを使っているのでできれば同じターミナルにしたいこと、前々からtmuxには興味を持っていたのでAlacritty+tmuxの組み合わせを試すことにしました。
tmuxのインストール
tmuxはHomebrewでインストールできます。arm64のバイナリがあるのでそちらにしましょう。Linuxでもほとんどのディストロにパッケージが収録されていると思います。
Alacrittyのビルドとインストール
Linuxだとディストロによりますが、少なくともArchとFedoraにはパッケージがあります。Ubuntuだと手でビルドすることになるでしょう。
macOSの場合、Alacrittyはプロジェクト側が供給しているバイナリもあるのですが、現時点ではIntel向けのビルドになっています。arm64ネイティブのバイナリにするために自分でビルドすることにしました。
まずはRustの環境を作りましょう。Rust 1.50.0でApple Siliconがサポートされるようになったので、ふつうにRustupを使うだけでOK。
zshを使っているならRustupがよしなにしてくれるはずですが、fishを使っている場合~/.cargo/bin
に自分でPATHを通す必要があります。 ~/.config/fish/config.fish
にこんな感じで書いておくとか。
ソースコードをもらってきてビルドします。M1だと数分程度。
terminfoとmanpageも入れちゃいましょう。公式のドキュメントではticを管理者権限で動かしていますが、macOSでは不要です。
設定する
Alacritty
デフォルトの設定ファイルをコピーします。
macOSのウィンドウは四隅が丸くなっているので、少しだけ余白をつけます。
フォントはSF Mono Squareを使っています。
Alacrittyを起動したらtmuxが起動するようにします。0番のセッションが立ち上がっている場合はそこに入ります。fish以外のシェルを使っているなら立ち上げるシェルを変えましょう。
tmux
tmuxの設定ファイルは~/.tmux.conf
に書きます。
最初の2行でnvimの色を直し、真ん中でデフォルトのシェルをfishにし、最後にマウスサポートをONにしています。
マウスサポートをONにすると簡単な操作ならマウスでできるようになります。キーバインドは今はほとんど触っていませんが、vimに慣れているとあまり直感的ではないのでそのうちvim風のバインドに変えたいところ。
tmuxにはtpmというプラグインマネージャーがあり、vimと同じようにプラグインで機能拡張をすることができます。
nord-tmuxはターミナルのカラースキームにNordを使っている人向けなので、他のカラースキームを使っている場合は外して自分でステータスラインをカスタムしたほうがよいかもしれません。
できたもの
Alacrittyでtmuxを使ったターミナル管理ができるようになりました。副産物としてAlacrittyを終了しても後ろでtmuxは動き続けているので、OSやtmuxそのものを終了してしまわなければターミナルを終了して再び起動した際に前に作業していた状態に戻ってくるようになりました。これは便利かもしれない。
またAlacrittyはWindowsでも動作し、tmuxもLinuxで使えるのでWSL環境でも同じような感覚でターミナルの管理ができるようになりました。