Zellij というターミナルマルチプレクサ (tmux, screen みたいなやつです) を今月になって使い始めました。
こういう感じ ↓ で片方に AI エージェント (最近は自分は OpenCode を使っています)、もう片方に自分が作業する用の terminal みたいな感じで、 AI と協業するための環境として使っていて、使っていて結構良いツールだなと思うので、そのへんについて感想を書いていきます。
Zellij をなんで使い始めたか
最近は git worktree と AI エージェントを活用して、並列開発を試しているのですが、並列で回している AI の管理が大変で、これをうまくやってくれるツールを探していました。
元々自分は Vibe Kanban という Web ベースのツールを使っていて、これ自体はとても良いツールなのですが、OpenCode や Copilot と併用した際に若干不安定なところがあったり、元の AI エージェントをかなり wrap していることから、素の AI エージェントの状態でうまく管理してくれるツールを探していました。
一応 tmux も使っていたものの、すごくカスタマイズしていた…という感じではないので、改めてゼロから試す意味で Zellij を触ってみることにしました。Zellij は Rust + WASM を使っているので環境いじるついでにその辺触りたいなと思ったところもあります。
Zellij の良かったところ
…という感じで Zellij を使い始めているのですが、結構気に入っている部分があるのでそのへんをいくつか紹介していきます。
その1. キーのヘルプなど UI が親切
使って真っ先に感動したところがここです。この手のツールでよくありがちなのが「何のキーを押すと何が起こるのかわからない」「ショートカットキーを覚えられない」というのがまあありがちなのですが、
Zellij だと、画面下側のヘルプにキー入力のヒントが出てくるので、ショートカットキーを覚えてなくてもヒントを見ながら操作が出来ます。
Zellij では、操作体系が複数のカテゴリ (モード) に分かれていて、「モードを選ぶ」→ 「具体的な操作を選ぶ」という流れになるのですが、ヒントもちゃんと切り替わってくれます。
ショートカットキーが結構多いので、誤爆しないように Lock モードというのも用意されています。
それだけでなく、マウスに反応してくれるポイントも多いです。タブ、パネル (Pane) に関してはクリックして切り替わりますし、パネルに関してはホバー時に操作ヒントを出してくれたりもします。
その2. ドキュメントやチュートリアルも充実している
Zellij がどういう機能があるかは公式サイトに情報がまとまっています。チュートリアルもあるのでこれらを見るだけで、どういうことが出来るかとかはだいたいわかります。
具体的な設定方法については、公式のリファレンスを見るとよいです。大体の機能がまとまっているのでこれを見れば設定できます。
その3. カスタマイズ性が高い
キーバインドなどが大幅に設定で変更可能です。
KDL という見慣れない設定言語を使うのですが、 YAML と JSON を混ぜたようなかんじなのですぐ慣れます。
自分もキーバインドについては元々提供されてるプリセットをベースにカスタムする感じで設定しています。
default_mode "locked"
// 元のキーバインド全部消して再設定できる
keybinds clear-defaults=true {
normal {
// uncomment this and adjust key if using copy_on_select=false
// bind "Alt c" { Copy; }
}
locked {
bind "Ctrl g" { SwitchToMode "Normal"; }
}
レイアウトの設定も大幅に変えられます。
デフォルトの UI なども Zellij ではプラグインとして実装されていて、これにより元の UI の場所を大きく変えたり、完全に置き換える、ということも可能です。(ちなみにプラグインは wasm で動いています)
layout {
pane size=1 split_direction="Vertical" borderless=true{
plugin location="tab-bar"
}
pane size=1 borderless=true focus=false {
command "gh-watch"
args "--watch"
}
pane split_direction="Vertical" {
pane focus=true {
command "opencode"
}
pane
}
pane size=1 borderless=true {
plugin location="status-bar"
}
}
プラグインも awesome-zellij に多数まとまっています。
また、Zellij 自体の API とほぼ同等の機能がコマンドから利用できたり、プラグイン自体の機能もコマンドから呼び出すことも可能で、自分でスクリプトやツールを書いて (or AI に書いてもらったりして) カスタマイズしていくこともしやすいです。
自分の使い方
自分の使い方としては、こんな感じで git worktree 向けにカスタムしながら環境を整備しています。
- タブ単位で worktree を管理
- worktree 向けに layout をカスタム
- opencode を自動で起動したり、 対応する Pull Request の状態を表示したりなど…
- worktree 用のタブをスクリプトで作成
まだプラグインの開発には入ってないのですが、設定項目や既存のプラグイン、 Zellij Action コマンドなどを組み合わせるだけでも結構カスタムしやすい感じです。
最近のツールだけあって、入口が優しく、カスタムも現代的という感じで非常に良いツールだなと思ったので今後もどんどん使っていこうと思ってます。










