If you’ve ever accidentally closed a terminal tab with a running process, or spent minutes reconstructing a complex kubectl pipeline across multiple windows, you’ve felt the pain that terminal multiplexers solve. Tmux is the incumbent, but Zellij takes a fundamentally different approach: instead of expecting you to memorize a configuration language, it provides a visual interface that’s discoverable by default.
What Makes Zellij Different
Zellij shows its keybindings on screen at all times. The status bar displays context-aware shortcuts — you don’t need to press a prefix key and guess. Panes, tabs, and sessions work like a browser: intuitive for newcomers, powerful for experts. And the entire configuration is plain KDL, a human-friendly format that’s dramatically more readable than tmux’s domain-specific language.
Installation
# Linux (prebuilt binary)
curl -L https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz | tar xz
sudo mv zellij /usr/local/bin/
# macOS
brew install zellij
# Cargo (build from source)
cargo install zellij
# Verify
zellij --version
First Steps: Layouts Instead of Scripts
One of Zellij’s killer features is declarative layouts. Instead of writing shell scripts that spawn windows and run commands, you define your workspace in a YAML-like file:
// ~/.config/zellij/layouts/dev.kdl
layout {
tab name="editor" {
pane command="nvim" {
args "."
}
}
tab name="server" {
pane split_direction="vertical" {
pane command="go" {
args "run" "./cmd/server"
}
pane command="air" {} # hot reload
}
}
tab name="logs" {
pane command="tail" {
args "-f" "/var/log/app.log"
}
}
}
Launch it with a single command:
zellij --layout dev
Your editor, application server, hot-reload watcher, and log tailer all open in the right panes instantly. No scripting, no fragile startup sequences.
Floating Panes
Zellij supports floating panes — overlay windows that float above your tiled layout. This is perfect for temporary tasks like checking documentation, running a calculator, or SSHing into a debug box without disrupting your main workflow:
# Toggle floating pane
Ctrl + p, f # or just 'wf' with the default keybindings
# Open a new floating pane
Ctrl + p, w
The visual hints at the bottom always show what’s available. No cheat sheet needed.
Plugins: A Built-in Ecosystem
Zellij plugins are compiled to WebAssembly, which means they’re sandboxed and cross-platform. Several come bundled:
- strider — A file browser that appears as a sidebar
- tab-bar — Visual tab management with drag-to-reorder
- status-bar — The context-aware shortcut display
- compact-bar — A minimal status bar for small screens
Custom Configuration
Zellij’s KDL configuration is where it shines compared to tmux. Here’s a practical setup:
// ~/.config/zellij/config.kdl
keybinds {
normal {
// Quick pane switching with Alt + arrow keys
bind "Alt h" { MoveFocus "Left"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt j" { MoveFocus "Down"; }
}
}
theme "catppuccin-mocha"
default_layout "compact"
on_force_close "detach"
mouse_mode true
scroll_buffer_size 50000
Session Management
Like tmux, Zellij keeps sessions alive after disconnect. The session resurrection is smooth:
# List active sessions
zellij list-sessions
# Attach to a session
zellij attach my-project
# Create a named session
zellij --session my-project
# Kill a session
zellij kill-session my-project
When you reattach, everything is exactly where you left it — panes, scroll history, running processes. This is invaluable for SSH workflows where connection drops are common.
Migration From Tmux
If you’re coming from tmux, the mental model transfers with some adjustments. Tmux’s windows become Zellij’s tabs. Tmux’s panes are panes. The prefix key concept is replaced by mode-based keybindings — you enter a mode (pane, tab, resize) and subsequent keys operate within that mode until you exit.
Ctrl-b c(tmux new window) →Ctrl-t n(zellij new tab)Ctrl-b %(tmux split) →Ctrl-p d(zellij pane down)Ctrl-b d(tmux detach) →Ctrl-o d(zellij detach)
Why Not Just Use Tmux?
Tmux is excellent and battle-tested. If your tmux configuration works and you’re happy, there’s no urgent reason to switch. But Zellij wins for new users and for teams that want shareable, readable configurations. The on-screen shortcuts alone eliminate the “how do I…” lookup tax that every tmux user pays daily.
The WebAssembly plugin system also opens possibilities that tmux’s architecture can’t easily support — imagine IDE-like features, embedded previews, or language server integrations running natively in your terminal.
Give it a weekend. The onboarding is gentle, and the layouts feature alone may change how you structure your development sessions.