ターミナル作業を変えるZellijの正体
Zellijは、Rust言語で開発されたオープンソースのターミナルマルチプレクサです。1つのターミナルウィンドウを複数のペインやタブに分割し、それぞれで独立したシェルを操作できます。
「Zellij(ゼリージュ)」という名前は、モロッコなど北アフリカの建築に見られるモザイクタイル装飾に由来しています。個々のタイルを組み合わせて幾何学模様を作る伝統工芸のように、ターミナル上で複数のペインを自在に配置する様子を表現しています(出典: GitHub README)。
公式は「A terminal workspace with batteries included(バッテリー同梱のターミナルワークスペース)」を掲げており、初期設定なしで使い始められる点を最大の特徴としています(出典: Zellij公式サイト)。
GitHubのStar数は29,100を超え、167名以上のコントリビューターが参加するアクティブなプロジェクトです(出典: GitHub)。コードの99.4%がRustで記述されており、MITライセンスの下で公開されています。
Zellijが解決する3つの課題
ターミナルマルチプレクサを使わない場合、開発者は次のような問題に直面します。
- SSH接続の断絶でプロセスが終了する: サーバー上で長時間実行するタスクが、ネットワーク切断と同時に消える
- ターミナルウィンドウの増殖: エディタ用、ビルド用、ログ監視用…と複数のウィンドウを行き来する手間が発生する
- 作業環境の再構築コスト: PCを再起動するたびにペイン配置やディレクトリ移動をやり直す必要がある
Zellijはセッション管理・ペイン分割・レイアウト保存の3機能でこれらを解消します。
Zellij・tmux・GNU Screen — ターミナルマルチプレクサ3種の比較
ターミナルマルチプレクサにはZellij以外にもtmuxやGNU Screenが存在します。選択の判断材料として、技術的な違いを整理します。
| 観点 | Zellij | tmux | GNU Screen |
|---|---|---|---|
| 実装言語 | Rust | C | C |
| 初回リリース | 2021年 | 2007年 | 1987年 |
| 設定ファイル形式 | KDL | 独自(.tmux.conf) | 独自(.screenrc) |
| 初期設定の要否 | 不要(即座に利用可) | 実用にはカスタマイズが必要 | 実用にはカスタマイズが必要 |
| キーバインド表示 | 画面下部に常時表示 | 表示なし(暗記が必要) | 表示なし |
| プラグイン機構 | WebAssembly(WASM) | なし(外部スクリプト連携) | なし |
| フローティングペイン | 標準搭載 | tmux 3.3以降でポップアップ対応 | 非対応 |
| レイアウト定義ファイル | KDL形式で宣言的に定義 | シェルスクリプトで手続き的に記述 | 限定的 |
| セッション共有 | マルチプレイヤーモード | ソケット共有で可能 | マルチユーザーモードで可能 |
| Webクライアント | v0.43で搭載(ブラウザからアクセス) | 非対応 | 非対応 |
| ライセンス | MIT | ISC | GPL-3.0 |
tmuxからの乗り換えを検討すべきケース
tmuxを長年使っているユーザーにとって、乗り換えコストは無視できません。次のいずれかに当てはまる場合に移行メリットが大きくなります。
- プラグインによる機能拡張を重視する(WASM対応の拡張性)
- チーム開発でターミナルセッションを共有したい(Webクライアント対応)
- 設定ファイルの可読性を高めたい(KDL形式)
- 新しいキーバインドを覚える手間を減らしたい(画面ヒント表示)
一方で、既存のtmux設定が大量にある場合やtmuxプラグインエコシステム(TPM等)に依存している場合は、並行運用から始めるのが安全です。Zellijにはtmuxモード(Ctrl+B)が用意されており、tmuxの操作体系をそのまま使うこともできます。
OS別セットアップ手順
Zellijは現在Linux・macOS・Windows(WSL経由)に対応しています。ネイティブWindowsサポートは開発中です(出典: GitHub Issues)。
macOS
# Homebrewでインストール
brew install zellij
Linux(Ubuntu / Debian / その他)
# 公式インストールスクリプト(推奨)
bash <(curl -L zellij.dev/launch)
Arch Linux
sudo pacman -S zellij
Rust Cargo経由(全OS共通)
cargo install zellij
Rustツールチェーンが既にインストール済みの環境であれば、この方法が最もシンプルです。
Windows(WSL2経由)
Windows上ではWSL2内のLinux環境にインストールします。
# WSL2内で実行
bash <(curl -L zellij.dev/launch)
インストール確認
zellij --version
# 出力例: zellij 0.43.1
2026年2月時点の最新安定版はv0.43.1(2025年8月8日リリース)です(出典: GitHub Releases)。
モード切替とキーバインドの仕組み
Zellijの操作体系は「モードシステム」に基づいています。tmuxがプレフィックスキー(Ctrl+B)のあとにコマンドキーを入力する方式なのに対し、Zellijは操作対象ごとにモードを切り替える方式です。
主要モード一覧
| モード | 切替キー | 用途 |
|---|---|---|
| Normal | デフォルト | 通常のシェル操作 |
| Pane | Ctrl+P | ペインの分割・移動・閉じる |
| Tab | Ctrl+T | タブの作成・移動・名前変更 |
| Resize | Ctrl+N | ペインサイズの調整 |
| Session | Ctrl+O | セッションのデタッチ・管理 |
| Scroll | Ctrl+S | スクロールバック・検索 |
| Lock | Ctrl+G | Zellijのキーバインドを無効化 |
| Tmux | Ctrl+B | tmux互換操作 |
モード切替後のキーバインドは画面下部のステータスバーに表示されるため、暗記不要で操作できます。
操作の流れ
ペインを水平分割する場合の操作例です。
Ctrl+P → D
Ctrl+PでPaneモードに入るDで下方向にペインを分割- 自動的にNormalモードに戻る
Normalモードへの復帰は Esc キーでも可能です。
ペイン・タブ・セッション操作の早見表
ペイン操作(Paneモード: Ctrl+P)
| キー | 操作内容 |
|---|---|
D | 下方向に分割 |
R | 右方向に分割 |
X | 現在のペインを閉じる |
F | フルスクリーン切替 |
W | フローティングペイン切替 |
E | 埋め込み/フローティング切替 |
C | ペイン名を変更 |
| 矢印キー | フォーカス移動 |
タブ操作(Tabモード: Ctrl+T)
| キー | 操作内容 |
|---|---|
N | 新規タブ作成 |
X | 現在のタブを閉じる |
R | タブ名を変更 |
| 矢印キー / 数字 | タブ切替 |
Tab | 次のタブに移動 |
セッション操作(Sessionモード: Ctrl+O)
| キー | 操作内容 |
|---|---|
D | セッションをデタッチ |
W | セッションマネージャを開く |
セッション管理コマンド
# 新規セッション作成(名前付き)
zellij -s my-project
# セッション一覧
zellij ls
# 既存セッションにアタッチ
zellij attach my-project
# セッション削除
zellij kill-session my-project
# 全セッション削除
zellij delete-all-sessions
config.kdlで自分好みの環境をつくる
Zellijの設定ファイルはKDL(KDL Document Language)形式で記述します。設定ファイルの場所は以下の通りです。
~/.config/zellij/config.kdl
デフォルト設定を出力して編集のベースにできます。
zellij setup --dump-config > ~/.config/zellij/config.kdl
設定例:テーマ・マウス・コピーコマンドの変更
// テーマ設定
theme "dracula"
// マウス操作を有効化
mouse_mode true
// コピーコマンドの指定(Linux)
copy_command "xclip -selection clipboard"
// コピーコマンドの指定(macOS)
// copy_command "pbcopy"
// ペインのフレームを非表示にしてスペースを節約
pane_frames false
// スクロールバックのバッファ行数
scroll_buffer_size 50000
キーバインドのカスタマイズ
keybinds {
// Normalモードのキーバインドを追加
normal {
// Alt+矢印キーでペイン間を移動
bind "Alt Left" { MoveFocus "left"; }
bind "Alt Right" { MoveFocus "right"; }
bind "Alt Up" { MoveFocus "up"; }
bind "Alt Down" { MoveFocus "down"; }
}
}
テーマの変更
Zellijには多数のビルトインテーマが用意されています。人気のテーマとして「dracula」「catppuccin」「nord」「gruvbox」などがあります。
# 利用可能なテーマ一覧は公式ドキュメント参照
# https://zellij.dev/documentation/themes
テーマの自作も可能で、themes ブロック内で色を定義します。
themes {
my-theme {
fg "#D8DEE9"
bg "#2E3440"
black "#3B4252"
red "#BF616A"
green "#A3BE8C"
yellow "#EBCB8B"
blue "#81A1C1"
magenta "#B48EAD"
cyan "#88C0D0"
white "#E5E9F0"
orange "#D08770"
}
}
KDLレイアウトファイルでワークスペースを一発起動
レイアウト機能を使うと、ペイン配置・実行コマンド・作業ディレクトリをファイルに定義し、毎回同じ開発環境を再現できます。
レイアウトファイルの保存先
~/.config/zellij/layouts/
Web開発用レイアウトの例
// ~/.config/zellij/layouts/webdev.kdl
layout {
tab name="editor" focus=true {
pane command="nvim" size="70%"
pane split_direction="vertical" size="30%" {
pane command="npm" {
args "run" "dev"
}
pane command="npm" {
args "run" "test" "--" "--watch"
}
}
}
tab name="git" {
pane command="lazygit"
}
tab name="logs" {
pane command="tail" {
args "-f" "logs/app.log"
}
}
}
レイアウトの起動
zellij --layout webdev
プロジェクトごとにレイアウトファイルを用意しておけば、1コマンドでエディタ・開発サーバー・テストランナー・ログ監視を立ち上げられます。
WASMプラグインで機能を拡張する
Zellijのプラグインシステムは、WebAssembly(WASM)ランタイム上で動作します。プラグインはサンドボックス内で実行されるため、ホストシステムへの影響を最小限に抑えつつ機能を追加できます。
組み込みプラグイン
Zellijには以下のプラグインが標準搭載されています。
| プラグイン名 | 機能 |
|---|---|
| tab-bar | 画面上部のタブバー表示 |
| status-bar | 画面下部のステータスバー・キーバインドヒント |
| compact-bar | タブバーとステータスバーを1行にまとめた表示 |
| strider | ファイルブラウザ(ペイン内でディレクトリを閲覧) |
| session-manager | セッション一覧・切替のUI |
| filepicker | ファイル選択ダイアログ |
サードパーティプラグインの導入
レイアウトファイル内でプラグインのURLまたはパスを指定できます。
layout {
pane {
plugin location="https://example.com/my-plugin.wasm"
}
}
コミュニティが開発したプラグインはawesome-zellijリポジトリにまとめられています。zjstatusによるカスタムステータスバーや、room(セッション切替強化)などが人気です。
プラグイン開発
プラグイン開発で現在公式サポートされている言語はRustのみです。公式が zellij-tile クレートを提供しており、イベントハンドラの実装だけでプラグインを作成できます。他のWASI対応言語での開発はコミュニティベースで進行中で、将来的に対応が拡大する予定です(出典: 公式プラグインドキュメント)。
Claude Codeユーザーが知っておくべきZellij活用術
AnthropicのCLIツールであるClaude Codeをターミナルで使う場合、Zellijとの組み合わせが効果的です。
複数セッションの並行管理
Claude Codeを複数プロジェクトで同時に走らせたい場合、Zellijのタブやペインで各セッションを分離できます。例えば、あるタブでフロントエンドのコード生成を指示しながら、別のタブでバックエンドの実装を進行させる使い方です。
# プロジェクトA用のペインで
claude
# 別のペインに移動して(Ctrl+P → 矢印キー)
cd /path/to/project-b
claude
zjstatusによるClaude Code監視
claude-code-zellij-statusプラグインを使うと、各ペインでのClaude Codeの動作状態(実行中・待機中・完了)をステータスバーにリアルタイム表示できます。
SSHリモート開発での活用
SSH先のサーバーにZellijをインストールしておけば、Claude Codeのセッションを切断しても作業が継続します。再接続時は zellij attach で復帰可能です。
# リモートサーバーに接続
ssh dev-server
# Zellijセッションを開始
zellij -s claude-work
# Claude Codeを起動
claude
# 切断してもセッションは維持される
# 再接続後:
zellij attach claude-work
v0.43のWebクライアント — ブラウザからセッション共有
v0.43.0(2025年8月リリース)で追加されたWebクライアント機能により、ターミナルセッションをブラウザから直接操作できるようになりました(出典: Zellij公式ブログ)。
主な特徴
- 既存のターミナルセッションをWebブラウザで共有可能
- 各クライアントが独立したカーソルを持つマルチプレイヤー対応
- 認証とHTTPS通信を標準搭載(セキュリティ対策済み)
- 明示的な操作や設定がなければサーバーは起動しない(オプトイン方式)
ユースケース
- ペアプログラミング時に相手にブラウザURLを共有するだけでターミナルを見せられる
- スマートフォンやタブレットからリモートサーバーのターミナルを確認
- CI/CDのビルド状況をチームメンバーがブラウザ上でリアルタイム監視
その他v0.43の改良点
- 複数ペインの一括操作(
Alt+左クリックで複数ペインを選択し、まとめてスタック化やタブ分離が可能) - 非同期レンダリングエンジンの導入による体感速度の向上
- ハイパーリンクの行折り返し対応改善(OSC 8の活用)
- スタックペインを直接開く操作の追加(
Ctrl+P → S)
よくあるエラーと解決の手引き
Zellijが起動しない
# 古いセッションが残っている可能性あり
zellij delete-all-sessions
# ソケットファイルをクリア
rm -rf /tmp/zellij-*
Neovimやエディタとキーバインドが衝突する
ZellijとNeovimはどちらもCtrlキーを多用するため、操作が競合します。対処法は3つあります。
- Lockモード(
Ctrl+G)を活用: Lockモードに入るとZellijのキーバインドが全て無効化され、エディタに全キーが渡ります。解除は再度Ctrl+G - tmuxモードに切替:
Ctrl+Bをプレフィックスとするtmux互換操作に統一 - config.kdlでキーバインドを変更: 競合するキーを別のキーに割り当て
日本語表示が崩れる
ターミナルエミュレータ側のフォント設定が原因であることが多いです。
- Nerd Fontなどの等幅フォントに変更
- ターミナルエミュレータの文字幅設定を確認(「東アジアの文字幅」を「全角」に設定)
マウスが反応しない
// config.kdl に追加
mouse_mode true
セッションが残り続ける
# 不要なセッションを削除
zellij kill-session <セッション名>
# 全セッションを削除
zellij delete-all-sessions
導入判断のポイント
Zellijは「設定なしで即座に生産性を上げたいユーザー」に最適なターミナルマルチプレクサです。画面下部のキーバインドヒント、KDLによる宣言的な設定、WASMプラグインによる拡張性は、tmuxやGNU Screenにはない独自の優位点です。
v0.43で搭載されたWebクライアント機能は、リモートワーク時代のペアプログラミングやチーム開発に新しい選択肢を提供します。
一方で、tmuxの成熟したエコシステム(TPM、大量のプラグイン、豊富なStack Overflow回答)を手放すかどうかは、個人やチームの技術スタックに依存します。まずは bash <(curl -L zellij.dev/launch) でインストール不要のお試し起動を行い、操作感を確かめるのが効率的です。
公式サイト: https://zellij.dev/ GitHubリポジトリ: https://github.com/zellij-org/zellij