Alacrittyとtmuxでつくる快適なターミナル環境
普段の開発でターミナルエミュレータに Alacritty、ターミナルマルチプレクサに tmux を使っています。この組み合わせに落ち着くまでの理解と、実務での使い方を整理しておきます。
Alacritty と tmux の概要
Alacritty とは
Alacritty は Rust 製のクロスプラットフォーム対応ターミナルエミュレータです。特徴は次の通りです。
- GPUレンダリングによって描画が高速で、大量のログ出力やスクロールでも動作が軽い
- 設定ファイルは YAML/TOML ベースのテキストで管理でき、Git でバージョン管理しやすい
- タブやペイン分割などの機能を持たず、あえてシンプルに保っている
タブ分割やペイン管理の機能がない代わりに、その役割は tmux のようなマルチプレクサに任せる設計思想になっています。
tmux とは
tmux はターミナル内でセッション・ウィンドウ・ペインを管理できるターミナルマルチプレクサです。
- 1つのターミナルの中で画面を複数のペインに分割できる
- セッションをバックグラウンドに残したまま切断(detach)でき、後から再接続(attach)できる
- SSH接続が切れてもtmux上で動いていたプロセスは継続する
Alacritty は「軽くて速い描画エンジン」、tmux は「画面分割とセッション管理」という役割分担で、組み合わせることで快適なターミナル環境が作れます。
基本的な操作方法
Alacritty の基本設定
設定ファイルは ~/.config/alacritty/alacritty.toml に置きます。よく変更する項目は以下の通りです。
[font]
size = 14.0
[window]
padding = { x = 8, y = 8 }
opacity = 0.95
[colors.primary]
background = '#1e1e2e'
foreground = '#cdd6f4'
設定変更後は再起動せずとも自動でリロードされるため、見た目の調整をしながら試行錯誤しやすいです。
tmux の基本操作
tmux はデフォルトで Ctrl + b がプレフィックスキーです(~/.tmux.conf で変更可能)。
| 操作 | キー |
|---|---|
| セッション新規作成 | tmux new -s セッション名 |
| セッション一覧表示 | tmux ls |
| セッションにアタッチ | tmux attach -t セッション名 |
| セッションからデタッチ | prefix → d |
| ペインを縦に分割 | prefix → % |
| ペインを横に分割 | prefix → " |
| ペイン間の移動 | prefix → 矢印キー |
| ウィンドウ新規作成 | prefix → c |
| ウィンドウ切り替え | prefix → 数字キー |
最低限これだけ覚えておけば、セッションを分割・保持しながら作業ができます。
~/.tmux.conf でよく使うカスタマイズ例です。
# プレフィックスキーを Ctrl+a に変更
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# ペイン分割のキーを直感的に
bind | split-window -h
bind - split-window -v
# マウス操作を有効化
set -g mouse on
業務での活用方法
SSH接続が切れても作業を継続できる
リモートサーバーで長時間かかるビルドやバッチ処理を実行する際、ローカルの通信が不安定でSSHが切断されると通常はプロセスも終了してしまいます。tmuxセッション内で実行しておけば、接続が切れてもセッションはサーバー側に残り続け、再接続後に tmux attach するだけで作業を再開できます。
タスクごとにペインを分けて並行作業する
1つのウィンドウを複数ペインに分割し、以下のような使い分けをしています。
- 左上: エディタ(Vim/Neovim)
- 右上: テスト・ビルドコマンドの実行
- 下: ログの
tail -fやGitの操作
画面を切り替えることなく状態を見比べられるので、コンテキストスイッチのコストが減ります。
プロジェクトごとにセッションを分けて管理する
複数のプロジェクトを並行して触っている場合、プロジェクトごとにtmuxセッションを作成しています。
tmux new -s project-a
tmux new -s project-b
セッションを切り替えるだけでそれぞれの作業状態(開いているペインやコマンド履歴)を保持したまま行き来できるため、都度ターミナルを開き直したりディレクトリ移動したりする手間がありません。
軽量な描画で大量ログの確認もストレスがない
CIのログやDBのクエリ結果など大量のテキストを出力するコマンドを実行することが多いのですが、AlacrittyのGPUレンダリングのおかげでスクロールや出力の描画がもたつきません。ペアプログラミングで画面共有をする際にも、動作が軽いことでストレスなく操作できています。
まとめ
- Alacrittyは描画に特化した軽量なターミナルエミュレータ
- tmuxは画面分割とセッション管理を担うマルチプレクサ
- 役割を分けて組み合わせることで、SSH切断への耐性や並行作業のしやすさが向上する
- 設定はすべてテキストファイルなので、dotfilesとしてGit管理すれば環境の再現も容易
まだ使いこなせていないプラグイン(tmux plugin manager など)もあるので、今後さらに環境を育てていきたいです。