Zellij — why I switched from tmux
What is Zellij?
Zellij is a modern terminal multiplexer written in Rust. Like tmux and screen before it, it lets you split your terminal into panes, organize work into tabs, and keep sessions running in the background so you can detach and reattach whenever you want — from your local machine or over SSH. Where it differs is in what it does out of the box and how it's put together under the hood.
I used tmux for years. It's rock solid and it's everywhere, but I finally moved my daily driver over to Zellij. Here's why.
Why I switched from tmux
Sane defaults, no config required
The single biggest reason: Zellij is genuinely useful the moment you install it. tmux ships with a bare, almost hostile default configuration — no visible status bar worth looking at, a prefix key workflow you have to memorize before anything feels usable, and pane borders you can barely see. Getting tmux into a state I actually liked meant hundreds of lines of .tmux.conf, several plugins, and a plugin manager (tpm) just to bootstrap it all.
Zellij gives you a discoverable UI on first launch — an on-screen status bar showing you the active keybindings for whatever mode you're in, sensible pane/tab management, and floating panes — with zero configuration. New users can actually learn it by reading the screen instead of memorizing a cheat sheet first.
Discoverable, modal keybindings
Zellij borrows a modal approach (loosely similar to Vim): you enter a mode — Pane, Tab, Resize, Move, Scroll, Session — and the bottom bar shows exactly what keys do what in that mode. tmux's single-prefix-plus-mnemonic model works fine once memorized, but it isn't self-documenting. I no longer need a cheat sheet taped to my mental model just to remember whether it's % or " for a vertical split.
Layouts as code, and they're simple
Both tools support saving/restoring layouts, but Zellij's KDL-based layout files are easier to read and write than tmux's scripted tmuxinator/shell-script approach. I can define a whole multi-pane, multi-tab project layout in one small, human-readable file and drop it in a repo alongside the project it belongs to.
Floating panes
Zellij has floating panes built in — a quick scratch pane you can pop up over your current layout for a one-off command, without disturbing your pane arrangement underneath. tmux has no real equivalent without external tooling. I love the floating panes both look at function for doing something quick that I'm going dismis in a few moments.
Written in Rust, sane crash behavior
Zellij is written in Rust and it shows in day-to-day robustness — I have had far fewer weird rendering glitches or hangs than I occasionally hit with tmux over SSH on flaky connections. It's a smaller thing, but reliability compounds when a multiplexer is the thing everything else in your terminal lives inside of.
It's still not perfect
To be fair to tmux: it has a much longer track record, a much larger plugin ecosystem, and is preinstalled or trivially available on essentially every server you'll ever SSH into. Zellij's plugin system (WASM-based) is younger and smaller, and every once in a while I still reach for a tmux-only trick out of old habit. But for my day-to-day local workflow, Zellij's out-of-the-box experience and cleaner mental model won out partly because it just works well on every system i have installed it on without a bunch of tinkering.
Getting started
# install (see https://zellij.dev/documentation/installation for all options)
cargo install --locked zellij
# just run it
zellij
# attach to (or create) a named session
zellij attach -c mysession
Plugins
Zellij plugins are compiled to WebAssembly (WASM), which means they run sandboxed and can be written in any language that compiles to WASM (Rust is the most common today). Plugins can add floating or in-line panes with their own UI, hook into Zellij's session/pane/tab events, and be bound to keys just like built-in modes.
- Zellij Plugin docs — official guide to writing and loading plugins
- awesome-zellij — community-curated list of plugins, layouts, and themes
Some top plugins worth trying
- zjstatus — a highly customizable, Powerline-style status bar replacement; probably the single most popular Zellij plugin
- zellij-forgot — an on-demand cheat sheet/keybinding helper overlay, handy while you're still learning the modes
- room — a project/session switcher and launcher, similar in spirit to tmux's session pickers
- multitask — run and monitor multiple background tasks from a single floating pane
- harpoon — quick-jump between marked panes, inspired by the Vim/Neovim plugin of the same name
- zellij-autolock — automatically locks Zellij's own keybindings when an app like Neovim or fzf grabs input, avoiding key conflicts
Plugins (and layouts) are typically referenced directly by URL in your Zellij config or layout file, and Zellij downloads and caches the compiled .wasm file the first time it loads — no separate plugin manager needed, which fits the same "sane defaults, minimal setup" theme that got me to switch in the first place.
