Alacrittyがすごい
今年1月に MacBook を購入してからずっと iTerm2 という macOS 向けに開発されたターミナルを使っていました (オススメしてる人が多かったからね.)
ただ、私は定期的に初期化したくなる初期化癖を持っているので iTerm2 で設定していた内容が初期化するたびに吹っ飛んでしまい、dotfiles のインストーラーを実行すればセットアップが完了する という完璧な状態を実現しても、iTerm2 が吐き出す設定ファイルの形式が JSON なのでどうしても dotfiles での管理が厳しいです.
そんな中、Rustで出来たターミナル Alacritty に出会いました.最初は試しに使おうとしただけだったのに結構快適でやめられなくなってしまったので、この記事で Alacritty ユーザーを増やそうと思います.
Alacritty って何?
Alacritty の概要に関しては先駆者がいろいろ記事を書いているのでここではざっくりとしか紹介しません.
Alacritty は 高速, クロスプラットフォーム を売りにしているターミナルエミュレーターです.
Rust で作られているので、macOS, Linux などのプラットフォームに対応しています.(Windows というOSも対応しています.)
GPU を利用し、高速なレンダリングを実現しています.
インストール
3種類のインストール方法が用意されています:
- ビルド済みバイナリを使用する
- homebrew の cask を使用する
- cargo を使用する
ソースコードからビルドする 茨の道 コースもあります.ここでは長たらしくやる人も多分少ないので紹介しません.
ビルド済みバイナリを使用する
Alacritty の Releases からビルド済みのバイナリを入手できます.
homebrew の cask を使用する
brew install --cask alacritty
Brewfileを使用する場合:
tap "homebrew/cask"
tap "homebrew/cask-versions"
cask "alacritty"
cargo を使用する
Rust諸々をインストールした状態で
cargo install alacritty
何がいいの?
先述したように、 Alacritty の概要は他の先駆者に任せてここでは個人的にいいと思ったポイントを書いていきます.
YAML 形式で設定できる
Alacritty の設定は YAML 形式で記述していきます.
私が Alacritty に惹かれた一つの理由がこれです.dotfiles管理ができるからです.
読み込み順は次の通り:
$XDG_CONFIG_HOME/alacritty/alacritty.yml
$XDG_CONFIG_HOME/alacritty.yml
$HOME/.config/alacritty/alacritty.yml
$HOME/.alacritty.yml
iTerm2 は JSON でしか吐き出せなかったのでこのような YAML 形式で完結するのは有り難い限りです.
設定はこんな感じ.公式で設定例をコメントありで作ってくれているので設定しやすいです.
font:
size: 14
normal:
family: 'JetBrainsMonoNL Nerd Font Mono'
window:
dimensions:
columns: 184
lines: 46
decorations: full
tmux との連携が楽
tmux を使っていると ターミナル起動に自動でセッションにアタッチしたいな〜 という感情になることがあります.
iTerm2 を使っている頃は次のような可読性がいろいろ終わっているスクリプトを .zshrc
に組んでいました.
count=`ps aux | grep tmux | grep -v grep | wc -l`
if test $count -eq 0; then
echo `tmux`
else test $count -eq 1; then
echo `tmux a`
fi
Alacritty には shell
というキーでシェルへのパスを指定することが出来ます.
Alacritty 起動時のシェルを zsh にした状態で tmux
のコマンドを実行するように可読性を維持したまま設定できます.
shell:
program: /bin/zsh
args:
- -l
- -c
- "tmux a -t 0 || tmux"
どっちもやってることは同じです.セッションがすでに存在していればそのセッションにアタッチしセッションが存在していない場合は新しいセッションを作成します.
マルチプラットフォーム
先述した通り Alacritty は YAML で設定ができ dotfiles での管理が可能でなおかつマルチプラットフォームのため macOS 以外でも Linux などで同様の環境を構築できちゃいます.
iTerm2 は macOS 専用だったのでこのような運用は難しかったです. Alacritty じゃなくてもできるけどこれは嬉しい.
(Windows は [1:1] で書いてる通り %APPDATA%
配下からしか読み込めないので難しいかも?まあ Windows で開発することなんて多分一生無いので大丈夫です.)
まとめ
まだ数ヶ月しか Alacritty を使っていません.が、ここまで書いていて多分しばらくは他のターミナルに浮気とかは出来ないと思います.
homebrew の cask を使用する の辺りで出した Alacritty のメンテナの意欲を見ていると、何かあったときに colors.js みたいなことしそうでちょっとうーんという顔をしています.
(比較対象がそもそも npm コミュニティ だし、colors.js やそれこそ前にウクライナ侵攻の抗議目的でサプライチェーン攻撃を仕掛けた peacenotwar たちが異常すぎるというのも事実なので重く考えすぎというのもありますが...)
Discussion