Alacrittyとは
Rust製のターミナルで、OpenGLを使ったGPUレンダリングを用いて描画するため、とても高速なターミナルです。
今回はAlacrittyの導入とhammerspoonというhotkeyを設定できるツールを用いてiTerm2の強力機能HotKeyも模倣した高速ターミナルの設定をしていきます。
ちなみに、このAlacrittyはtmuxを使ったカーソル移動をほぼ必須としているため、ターミナルの分割機能等は存在しません。(iTerm2でいう Command + V等)
メリット
- 早い、特に大きなファイルをvimで開くとき明らかに速度が違うしj,kでのカーソル移動がサクサク
- ターミナルの設定をコードで管理できるので、dotfilesの管理が捗る
- tmuxとの親和性が高い
デメリット
- iTerm2と比べるとhammerspoon + alacrittyの組み合わせはワンテンポ開くのが遅いかも
- 日本語入力がインラインで行えない(現バージョンではまだ、エンターを押すまで入力されない)
導入
ソフトウェアのインストール
まずは必要なものをインストールしましょう。どちらもbrewで公開されているのでこちらからインストールします。
$ brew cask install hammerspoon alacritty
インストール後にApplicationから起動するとセキュリティの警告が出ると思うので、「環境設定」→「セキュリティとプライバシー」から許可して開いてください。
また、hammerspoonは「環境設定」→「アクセシビリティ」にチェックを入れておいてください。
*今回はtmuxとvimの環境構築については触れませんが、ネット上に素晴らしいconfigファイルがたくさん転がっているので自分のconfigを育てていってください。
Hotkeyの設定
次にhammerspoonでhotkeyを設定して開けるようにしていきます。
設定ファイルは$HOME/.hammerspoon/init.lua
に書きます。
僕はCtrl+T
にバインドを設定しています。お好みで1行目をいじってください。
hs.hotkey.bind({"ctrl"}, "t", function()
local alacritty = hs.application.find('alacritty')
if alacritty:isFrontmost() then
alacritty:hide()
else
hs.application.launchOrFocus("/Applications/Alacritty.app")
end
end)
alacrittyの設定ファイル
$XDG_CONFIG_HOME/alacritty/alacritty.yml
$XDG_CONFIG_HOME/alacritty.yml
$HOME/.config/alacritty/alacritty.yml
$HOME/.alacritty.yml
設定ファイルは上記の優先順位で読み込まれます。
ファイルを作成したら以下の内容を書きます。
# tmuxを起動
shell:
program: /usr/local/bin/zsh
args:
- -l
- -c
- "tmux attach || tmux"
window:
decolations: buttonless # mac only
startup_mode: SimpleFullscreen # mac only
# font設定
font:
size: 12.5
normal:
family: HackGen
bold:
family: HackGen
italic:
family: HackGen
key_bindings:
- { key: Q, mods: Control, chars: "\x11" } # 暫定対応 masterブランチでは解決済みらしい
上から順に説明します。
shell
では、使用するshellとtmux
での起動を行っています。ターミナルを立ち上げるたびにtmux
コマンドを叩かなくていいので幸せになれます。
window
ではフルスクリーンの設定をしています。
僕はターミナル以外のボタンやバーは表示されないようにしたいのでこのような設定になりました。
font
では文字通りfont-family
の設定とfont-size
の設定ができます。
key-binds
ですがここに書いているものはバグを回避するためのキーバインドです。tmuxのprefixをCtrl+Q
にしているのですが、なぜか2回押さないと反応しないバグがあるらしく、キーバインドで回避しています。
masterブランチでは解決しているらしいので、気が向いた方はbrewでなくそちらから入れてみたらいいかもしれません。
さいごに
これまではiTerm2 + nvim + tmuxの組み合わせで開発していましたが、alacrittyに乗り換えようと思います。
ターミナル自体が爆速なのもそうですが、macOSだけでなくlinuxとwindowsでも使えるのでdotfilesに保管してそのまま使えるのはとても大きいですね。