2026-06-12
WezTermやめます。Alacrittyかcmuxにする
技術
タイトルの通り。
なぜWezTermをやめるのか
メモリリークを起こし、開発に支障が出てきた。WezTermの開発設計的に、これは今後も解決しなさそうなので、やめることにした。
そもそもWezTermの設計として、ペイン作成時に scrollback_lines(デフォルト3500)+ 表示行数分のmemory capacityを最初から確保する。
問題になったのは、自分の開発ではもちろんclaude codeを使っているし、workspace, tab, paneもガンガン使って大量に作っている。
paneを作るだけでメモリが消費されるし、claude codeなんかだと出力行が一気に増えるので、リングバッファによるGCが追いつかず、メモリをどんどん圧迫していき、OOMに達する。
結果、アクテビティモニタでメモリを見ると、「wezterm: 8GB」などと見たことない値になっていた。
他にもこのOOM問題のissueがいくつか散見されており、いまだに解決していないので、(そもそもWezTermの最新更新2024年だし)、実態としてなかなか解決されないんだろうなと思った。
ので、乗り換えを検討することにした。
関連issue
Alacrittyかcmux
求める機能は、
- OOMしない(これが一番!)
- session(workspace), tab, paneがあり、それぞれ管理、移動が直感的にしやすいこと
- 軽量
Alacrittyはmuxを実現するなら、tmuxを外付け。
cmuxはデフォルトでmuxを組み込んでいる。ただ、階層構造がちょっと自分の直感と逆なので悩みどころ。(tab ↔ paneの階層が逆)。ただ、組み込みブラウザは魅力的なんだよな。
比較表
| 項目 | Alacritty + tmux | cmux |
|---|---|---|
| 実装基盤 | Alacritty: Rust / tmux: C | Swift + AppKit(libghostty レンダリング) |
| macOS対応 | ✅ macOS / Linux / Windows | ✅ macOS専用(ネイティブアプリ) |
| mux(workspace / tab / pane) | tmux側で管理。概念はsession/window/pane。キーバインドのカスタマイズ幅は広いが初期設定はやや複雑 | ネイティブGUIとして垂直タブサイドバー + split paneをそのまま提供。直感的な操作感 |
| メモリ効率 / OOM耐性 | ✅ 強み。Alacrittyはレンダリングのみ担当し、スクロールバックはtmuxデーモンが管理。ペインを大量に開いてもAlacrittyプロセス自体は軽量に保たれる | ⚠️ libghostty(Ghosttyベース)でメモリ設計は改善されているが、Claude Codeの大量出力に対する実績はまだ少ない(2026年2月リリースの新興ツール) |
| AI agent対応(Claude Code等) | ❌ ネイティブ機能なし。OSCエスケープシーケンスを自前で組む必要あり | ✅ 強み。Claude Code hooksとOSC 9/99/777に対応。agentの完了・入力待ちを自動検知してpaneに青リングとサイドバー通知を表示 |
| 通知機能 | ❌ tmux単体では非対応。iTermとの組み合わせや自前スクリプトが必要 | ✅ macOSデスクトップ通知 + サイドバータブのビジュアル通知。複数agent並走時に「どのagentが終わったか」が一目でわかる |
| サイドバー情報 | ❌ なし(tmuxのstatus-barで代替可能だが簡素) | ✅ git branch、PR番号、CWD、listenポート、最新通知テキストをタブごとに表示 |
| セッション永続性(SSH) | ✅ 強み。tmuxはdetach/reattach設計。SSH切断後もセッション生存。リモートサーバー上での利用が得意 | ⚠️ session restoreあり。ただしmux-serverがローカル前提の設計。SSH越しの利用は想定外 |
| 組み込みブラウザ | ❌ なし | ✅ あり。agentの参照URLをターミナル隣に表示可能 |
| プログラマビリティ / 自動化API | tmux: tmux send-keys / display-message などCLIで操作可能。シェルスクリプトとの親和性は高い | ✅ Unix socket API(JSON-RPC v1/v2)。cmux split-pane cmux open-url などCLIで完全制御可能 |
| 設定・カスタマイズ性 | ✅ 非常に高い。Alacrittyはtoml、tmuxは.tmux.confで細かく制御。プラグインエコシステム(TPM)あり | Ghostty設定ファイルをそのまま読み込み。まだエコシステムは育ち中 |
| 成熟度 | ✅ 高い。tmuxは2007年〜、Alacrittyは2017年〜。実績十分 | ⚠️ 2026年2月リリース。HN #2、GitHubスター急増中だが本番実績はまだ浅い |
| クロスプラットフォーム | ✅ macOS / Linux / Windows(tmuxはLinux/macOS/BSD) | ❌ macOS専用 |
| 学習コスト | tmuxのキーバインド・設定・prefix操作に慣れるまで時間がかかる。既存のtmux知識があればほぼゼロ | GUIネイティブで直感的。ただしUnix socket APIを活用するには別途学習が必要 |
| ライセンス | Alacritty: Apache 2.0 / tmux: ISC | AGPL-3.0(OSSだが商用利用時は注意) |
階層構造がちょっと自分の直感と違うのがネックだから、Alacritty+tmuxかなぁ。
しばらくそれで運用してみる。