Alacritty はRust製の高速なターミナルエミュレータ。
- OpenGLでGPUレンダリングを用いて描画するためとても高速
- クロスプラットフォームに対応している
- 設定がすべてYAML (
~/.config/alacritty/alacritty.yml
) なため管理がしやすい- GUIがないため初心者には難しい
- スクロールバー、タブなどもない。tmux と組み合わせて使うのが前提となっていそう。
インストール
https://github.com/alacritty/alacritty/blob/master/INSTALL.md
- cargo でインストールする
- macの場合
brew install --cask alacritty
- ソースコードからビルドする
Homebrew や cargo でインストールする場合、 terminfo やdesktop entry、manual page、シェル補完が利用できないが、 Rustの環境を構築せず(cargoを利用する場合は必要)、簡単にAlacrittyをインストールできる。
最新を使いたいので、ソースコードからビルドする(Rust を事前にインストールしておく)
git clone https://github.com/jwilm/alacritty.git
cd alacritty
make app
cp -r target/release/osx/Alacritty.app /Applications/
日本語のインライン入力ができない
日本語入力に難点がある
- 変換確定前の段階だとターミナル上に字が出てこない
- 変換の際に矢印キーで選択したりbackspaceを押すと、ターミナル側の操作(ヒストリーバック、文字削除など)になってしまう
こちらの方が直してくれて、マージされているのでおそらく0.10.0で解消されている。 Alacrittyが日本語入力がおかしいのを直した
…と思ったら中国語の入力でデグレがあったため戻っていた。逆にいうと中国語圏の人の問題が解消されれば日本語も直るのかな…? https://github.com/rust-windowing/winit/pull/2119
設定
テーマ
https://github.com/eendroroy/alacritty-theme にテーマがまとまっている。
git clone https://github.com/eendroroy/alacritty-theme.git
して、 alacritty.yml
に以下を設定する
import:
- /path/to/alacritty-theme/themes/<テーマ>.yml
True color を有効にする
有効になっているか確認 iTerm2のテスト用コード で確認できる
curl -s https://github.com/gnachman/iTerm2/blob/master/tests/24-bit-color.sh
色がなめらかにグラデーション表示されていればOK。 段差が明らかに見て取れる場合は対応されていない。
Alacrittyでtmux, NeovimのTrue colorを有効にするためには、それぞれ以下の設定が必要
https://github.com/alacritty/alacritty/issues/109
env:
TERM: alacritty
set -g default-terminal "screen-256color"
set-option -sa terminal-overrides ',alacritty:RGB'
set termguicolors
# テーマ
import:
- ~/.config/alacritty/alacritty-theme/themes/gruvbox_material.yml
env:
TERM: alacritty
window:
dimensions:
# Alacrittyを開いたときのウィンドウサイズ
columns: 140
lines: 40
padding:
# Macだと角が丸くて見切れるため余白を入れる
x: 8
y: 4
font:
normal:
family: "HackGenNerd Console"
style: Regular
bold:
family: "HackGenNerd Console"
style: Bold
family: "HackGenNerd Console"
style: Italic
family: "HackGenNerd Console"
style: Bold Italic
size: 16.0
shell:
# 起動時にtmuxを開く(セッションがすでにあればアタッチする)
program: zsh
args:
- -c
- "tmux a -t 0 || tmux"
key_bindings:
# modifierを使ったキーバインドがAlacrittyに奪われるため、もとのキーバインドで上書きする
- { key: Q, mods: Control, chars: "\x11" }
- { key: Space, mods: Control, chars: "\x00" }
- { key: A, mods: Alt, chars: "\x1ba" }
- { key: B, mods: Alt, chars: "\x1bb" }
- { key: C, mods: Alt, chars: "\x1bc" }
- { key: D, mods: Alt, chars: "\x1bd" }
- { key: E, mods: Alt, chars: "\x1be" }
- { key: F, mods: Alt, chars: "\x1bf" }
- { key: G, mods: Alt, chars: "\x1bg" }
- { key: H, mods: Alt, chars: "\x1bh" }
- { key: I, mods: Alt, chars: "\x1bi" }
- { key: J, mods: Alt, chars: "\x1bj" }
- { key: K, mods: Alt, chars: "\x1bk" }
- { key: L, mods: Alt, chars: "\x1bl" }
- { key: M, mods: Alt, chars: "\x1bm" }
- { key: N, mods: Alt, chars: "\x1bn" }
- { key: O, mods: Alt, chars: "\x1bo" }
- { key: P, mods: Alt, chars: "\x1bp" }
- { key: Q, mods: Alt, chars: "\x1bq" }
- { key: R, mods: Alt, chars: "\x1br" }
- { key: S, mods: Alt, chars: "\x1bs" }
- { key: T, mods: Alt, chars: "\x1bt" }
- { key: U, mods: Alt, chars: "\x1bu" }
- { key: V, mods: Alt, chars: "\x1bv" }
- { key: W, mods: Alt, chars: "\x1bw" }
- { key: X, mods: Alt, chars: "\x1bx" }
- { key: Y, mods: Alt, chars: "\x1by" }
- { key: Z, mods: Alt, chars: "\x1bz" }