I live in the terminal. Neovim on the left, a dev server somewhere, tests running, logs tailing - and for years Tmux was the glue holding all of it together. Then I kept hearing about Zellij, the new multiplexer written in Rust that promises to be friendlier out of the box. So I ran both as my daily driver for a few months. Here's everything that actually mattered.

What is a terminal multiplexer?

When you open a terminal - iTerm2, Alacritty, Kitty, whatever - the shell starts a single pseudo-terminal session. Every extra window or tab spins up its own independent session with no relationship to the others. Close the window and that work is gone.

A multiplexer flips that model. It runs one long-lived session and lets you multiplex many virtual terminals - panes, tabs, windows - inside it. Detach, close your terminal, reboot your SSH connection, and everything is still running when you reattach. Both Tmux and Zellij give you this. The difference is how they feel while you use it.

If you've never used a multiplexer: the killer feature is persistence. Your entire workspace survives a disconnect. For remote work over SSH, this alone is worth the learning curve.

Installation

Both are a one-liner on macOS with Homebrew. Tmux has been packaged everywhere for over a decade; Zellij is newer but already in most repositories.

# tmux
brew install tmux

# zellij
brew install zellij

# arch, btw
yay -S zellij

Zellij has a nice touch: you can try it without installing anything.

bash <(curl -L zellij.dev/launch)

The first launch tells the whole story. Tmux opens to a bare status bar and total silence - you're expected to know the keys. Zellij opens with a row of keybinding hints along the bottom, so you can be productive in about thirty seconds without reading a manual.

Configuration

Tmux is configured in ~/.tmux.conf with its own terse DSL. It's powerful but cryptic, and you'll copy-paste a lot from other people's dotfiles before it clicks. A typical starting point:

# ~/.tmux.conf
set -g prefix C-a
unbind C-b
bind C-a send-prefix

set -g mouse on
set -g base-index 1
setw -g pane-base-index 1

bind | split-window -h
bind - split-window -v

Zellij uses KDL, a structured document language that reads more like a real config file. You can dump the defaults and edit from there:

mkdir -p ~/.config/zellij
zellij setup --dump-config > ~/.config/zellij/config.kdl

The big win for newcomers: if Tmux's keybindings live in your muscle memory, Zellij lets you switch to a Tmux-compatible mode. Hit Ctrl+b and the familiar splits (% and ") just work. You can migrate without throwing away years of reflexes.

Layouts

This is where Zellij pulled ahead for me. In Tmux, reproducible layouts usually mean a plugin like tmux-resurrect plus a shell script, or wiring up tmuxinator. It works, but it's bolted on.

In Zellij, layouts are first-class. You describe a workspace declaratively in KDL and launch straight into it:

// ~/.config/zellij/dev.kdl
layout {
    pane split_direction="vertical" {
        pane command="nvim"
        pane split_direction="horizontal" {
            pane command="npm" {
                args "run" "dev"
            }
            pane
        }
    }
}
zellij --layout ~/.config/zellij/dev.kdl

One command and I'm dropped into editor + dev server + a spare shell, every single time. For projects I touch daily, that consistency is worth more than any single feature.

Sessions that survive

Session management is core to both, but Zellij surfaces it better. Listing sessions is symmetric:

# tmux
tmux ls
tmux attach -t main

# zellij
zellij list-sessions
zellij attach main

Where Zellij shines is in-app navigation. Press Ctrl+o then w and you get an interactive session manager - including sessions you've exited, which it can resurrect. In Tmux you'd lean on tmux-resurrect and tmux-continuum to get close to the same thing.

So what should I use?

Honest answer: it depends on where you are.

  • New to multiplexers? Start with Zellij. The on-screen hints, sane defaults, and first-class layouts get you productive without a weekend of config archaeology.
  • Already fluent in Tmux? Stay - unless layouts or session UX are genuine pain points. Tmux is everywhere, rock-solid, and your config already exists.
  • Live on remote servers over SSH? Tmux's ubiquity wins. It's pre-installed almost everywhere; Zellij usually isn't.

I ended up keeping Tmux on servers and reaching for Zellij locally, where its layouts save me real time every morning. Use whatever makes you faster - that's the only metric that counts.

a small honest note: a few blocks here were drafted or tidied up with an AI assistant, purely for clearer wording. the opinions, the configs, and a year of actually living in both are mine — only some of the prose had a little help finding the right words.