Zellijは、柔軟な設定システムによりユーザーが独自のターミナルワークスペースを構築できるツールです。特に「設定継承」機能を使えば、重複を避けながら複数の環境やプロジェクトに適応する設定を簡単に管理できます。
設定ファイルの基本構造
ZellijではKDL形式の設定ファイルを使用し、グローバル設定とレイアウト設定の2種類に分かれています:
- グローバル設定:キーバインド、テーマ、プラグインなどの全体設定
- レイアウト設定:タブやペインの配置、UIコンポーネントの配置を定義
継承による設定の再利用
ベースとなる共通設定を定義し、特定の用途向けに上書き・拡張することで、保守性と一貫性を確保します。
// デフォルトのキー設定を継承しつつ追加
key_mapping {
mode "normal" {
shortcut "Alt+p" { action = Paste; }
}
}
テンプレートを使ったUI統一
複数のタブで共通のヘッダーやフッターを表示したい場合、tab_skeletonでテンプレートを定義します:
workspace {
tab_skeleton {
panel height=1 style="none" {
module name="zellij:header"
}
content
panel height=1 style="none" {
module name="zellij:footer"
}
}
tab name="dev" {
// 上記スケルトンを自動継承
split direction="vertical" {
terminal
terminal
}
}
}
実践例:プロジェクト別カスタマイズ
各プロジェクト用の設定ファイルを作成し、共通部分はベース設定から継承します:
// project_web.kdl
import "base_layout.kdl"
workspace {
tab name="server" {
terminal command="npm run dev"
}
tab name="logs" {
terminal command="tail -f ./logs/app.log"
}
}
チーム開発での活用
チーム共通の設定をリポジトリで管理し、メンバーは個人設定を上書きして使用:
// user_config.kdl
import "shared/team_defaults.kdl"
theme "dark_ocean"
key_mapping {
mode "normal" {
shortcut "Ctrl+Shift+r" {
action = Execute;
command = "reload-config.sh";
}
}
}
トラブルシューティングとベストプラクティス
- 設定が反映されない → ファイルパスと
import文を確認 - 意図せず上書きされた → より具体的なセレクタで再定義
- パフォーマンス低下 → 複雑なネストを避けてシンプルな継承構造に
- 環境ごとの差異 → 環境変数で条件分岐を実装可能
設定ファイルは~/.config/zellij/以下に配置し、複数のレイアウトを切り替えて使用できます。Gitでバージョン管理すれば、環境移行も容易です。