Carpe Diem

備忘録

ターミナルエミュレータをAlacrittyに

概要

これまでデフォルトのTerminal.appを使っていましたが

  • たまに重い
  • 設定をファイルで管理したい
  • True Color対応してない

などの不満が出てきたので、上記課題を解決できるRust製のAlacrittyに移行してみました。

環境

Alacritty + tmux + vimの環境です。

  • macOS 11.6.2
  • Alacritty 0.10.1
  • tmux 3.2a
  • vim 8.2.4450

インストール〜設定

インストール

brew caskかdmgでインストールできます。

caskの場合

$ brew install --cask alacritty

dmgの場合

Releases · alacritty/alacritty · GitHub

からダウンロードしてインストール。

基本的な設定

公式のyamlを参考に~/.config/alacritty/alacritty.ymlを追加して設定していきます。

# 余白設定
window:
  padding:
    x: 4
    y: 4

# フォント設定(サイズのみ)
font:
  size: 13

# スクロール設定
scrolling:
  history: 10000
  multiplier: 3

# tmuxで起動する場合
shell:
  program: /usr/local/bin/bash
  args:
    - -l
    - -c
    - "/opt/homebrew/bin/tmux a -t 0 || /opt/homebrew/bin/tmux -u"

カラースキームの設定

Color schemes · alacritty/alacritty Wiki · GitHub

を参考に追記すればOKです。
僕の場合はTenderにしたので以下を追記しました。

# Colors (Tender)
colors:
  # Default colors
  primary:
    background: '#282828'
    foreground: '#eeeeee'

  # Normal colors
  normal:
    black:   '#282828'
    red:     '#f43753'
    green:   '#c9d05c'
    yellow:  '#ffc24b'
    blue:    '#b3deef'
    magenta: '#d3b987'
    cyan:    '#73cef4'
    white:   '#eeeeee'

  # Bright colors
  bright:
    black:   '#4c4c4c'
    red:     '#f43753'
    green:   '#c9d05c'
    yellow:  '#ffc24b'
    blue:    '#b3deef'
    magenta: '#d3b987'
    cyan:    '#73cef4'
    white:   '#feffff'

True Color対応

True Colorに対応していない場合、カラースキームが期待する色合いにならないことがあります。

True Color対応かどうかは以下のスクリプトを実行すると分かります。

curl -s https://gist.githubusercontent.com/lifepillar/09a44b8cf0f9397465614e622979107f/raw/24-bit-color.sh | bash

非対応の場合

このようにグラデーションに継ぎ目が存在します。

対応済みの場合

このようになめらかなグラデーションになっています。

.config/alacritty/alacritty.yml

True Color (24-bit) and italics with alacritty + tmux + vim (neovim) · GitHub

を参考に1つずつ設定していきます。

env:
  TERM: xterm-256color

.tmux.conf

# tmuxを256色表示できるようにする(True Color対応)
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"

tmux-256colorを入れてない場合は以下を実行してください

$ brew install ncurses
$ /usr/local/opt/ncurses/bin/infocmp tmux-256color > ~/tmux-256color.info
$ tic -xe tmux-256color tmux-256color.info

ref: Using tmux-256color with macOS's Terminal.app · Issue #1257 · tmux/tmux · GitHub

.vimrc

if !has('gui_running') && &term =~ '^\%(screen\|tmux\)'
  let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
  let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
endif

syntax on
set termguicolors
colorscheme yourfavcolorscheme

設定し終わったらtmuxを再起動してください。

その他

Mission Controlが重たい

Alacrittyがアクティブな状態でMission Controlを使ってアプリを切り替えようとしたところ、非常にガクガクして重い問題に遭遇しました。

(macOS) Mission Control's animations are slow when switching from Alacritty. · Issue #4474 · alacritty/alacritty · GitHub

こちらのIssueにいくつかWork Aroundが書いてあります。
僕の場合はバッテリーの設定をいじったら直りました。

日本語が完全にサポートされていない

Cannot input japanese characters · Issue #1101 · alacritty/alacritty · GitHub

Support inline "input method" input · Issue #1613 · alacritty/alacritty · GitHub

といったIssueにあるように、変換から確定させるまで日本語が表示されません。

追記(2022/09/28):0.11.0-rc2では直っていました

tmuxでwindow/paneを作ったときの初期化が重い

起動してからは問題ないのですが、初期化処理が体感重く感じます。

tmuxで新規window/paneを作ってから実際にコマンドを打てるようになるまでの時間がデフォルトのターミナルと比べ1.5~2倍くらいかかっています。

まとめ

macOS + Alacritty + tmux + vim環境での構築をしてみました。

ネットで「Rust製&GPU対応で爆速」みたいなことが書かれていますが、今の所パフォーマンス面で体感的に早いとか軽いとかは感じてません。

それ以外の課題に関しては解決できたので良かったです。
またクロスプラットフォーム対応なのでMacじゃなくなっても同じ環境を構築できるのが地味に嬉しいですね。

ただ現メインコミッターのコミュニティでの素っ気なさが若干気になりました。

参考