Zellij ====== Zellij - a terminal workspace with batteries included Date: February 7, 2026 Zellij is a terminal workspace with batteries included. It's a modern alternative to tmux and screen. ## Features - **Layout system** - Define window layouts in YAML - **Plugins** - Extend functionality with WebAssembly plugins - **Rust-based** - Fast and safe implementation - **WebAssembly** - Plugin system built on WASM - **Easy to use** - Sensible defaults, minimal configuration ## Setup Install via package manager: ```bash # Via mise (recommended) mise install zellij # Arch Linux sudo pacman -S zellij # macOS brew install zellij # Cargo cargo install zellij ``` ## Launching ```bash # Start new session zellij # Start with specific layout zellij --layout mylayout # Attach to existing zellij attach # List sessions zellij list-sessions ``` ## Key Bindings Zellij uses `Ctrl+g` as the prefix key: ### Session | Key | Action | |-----|--------| | `Ctrl+g` `d` | Detach | | `Ctrl+g` `q` | Quit | | `Ctrl+g` `s` | Session manager | ### Panes | Key | Action | |-----|--------| | `Ctrl+g` `n` | New pane (horizontal) | | `Ctrl+g` `p` | New pane (vertical) | | `Ctrl+g` `x` | Close pane | | `Ctrl+g` `h/j/k/l` | Move between panes | | `Ctrl+g` `f` | Fullscreen pane | | `Alt+Arrow` | Move between panes (no prefix) | ### Tabs | Key | Action | |-----|--------| | `Ctrl+g` `c` | New tab | | `Ctrl+g` `,` | Rename tab | | `Ctrl+g` `Ctrl+h/l` | Previous/next tab | | `Ctrl+g` `[1-9]` | Go to tab | ### Scroll/Search | Key | Action | |-----|--------| | `Ctrl+g` `[` | Enter scroll mode | | `Ctrl+s` | Search (in scroll mode) | | `n/N` | Next/previous match | | `Esc` | Exit scroll mode | ## Layouts Create layouts in `~/.config/zellij/layouts/`: ```yaml # ~/.config/zellij/layouts/dev.yaml template: direction: Horizontal parts: - direction: Vertical split_size: Percent: 50 parts: - direction: Vertical - direction: Vertical - direction: Vertical split_size: Percent: 50 parts: - direction: Vertical run: command: {cmd: cargo, args: ["watch", "-x", "run"]} ``` Use: `zellij --layout dev` ## Configuration Config file: `~/.config/zellij/config.kdl` Example: ```kdl theme "dracula" default_shell "zsh" keybinds { normal { bind "Ctrl a" { SwitchToMode "Tmux"; } } } plugins { filepicker location="zellij:filepicker" } ``` ## See Also <div class="embed-card"> <a href="/tmux/" class="embed-card-link"> <div class="embed-card-content"> <div class="embed-card-title">tmux Configuration</div> <div class="embed-card-description">tmux configuration for persistent terminal sessions with popup windows and session management</div> <div class="embed-card-meta">Feb 7, 2026</div> </div> </a> </div> <div class="embed-card"> <a href="/zsh/" class="embed-card-link"> <div class="embed-card-content"> <div class="embed-card-title">zsh Configuration</div> <div class="embed-card-description">zsh shell configuration - my primary shell with autosuggestions, syntax highlighting, and custom functions</div> <div class="embed-card-meta">Feb 7, 2026</div> </div> </a> </div> <div class="embed-card"> <a href="/workspace/" class="embed-card-link"> <div class="embed-card-content"> <div class="embed-card-title">Workspace Script</div> <div class="embed-card-description">Workspace script - session management automation for tmux</div> <div class="embed-card-meta">Feb 7, 2026</div> </div> </a> </div> <div class="embed-card"> <a href="/cheatsheets/session-management/" class="embed-card-link"> <div class="embed-card-content"> <div class="embed-card-title">Session Management Cheatsheet</div> <div class="embed-card-description">Terminal session management with tmux and workspace patterns</div> <div class="embed-card-meta">Feb 8, 2026</div> </div> </a> </div> <div class="embed-card embed-card-external"> <a href="https://zellij.dev/documentation/" class="embed-card-link" target="_blank" rel="noopener noreferrer"> <div class="embed-card-content"> <div class="embed-card-title">Introduction - Zellij User Guide</div> <div class="embed-card-meta">zellij.dev</div> </div> </a> </div>