Zellij : le multiplexeur terminal moderne qui remplace tmux

tmux est puissant, mais sa courbe d’apprentissage est raide et sa configuration ressemble à du code arcane. Zellij propose la même chose — plusieurs panneaux, onglets et sessions persistantes — avec une interface qui affiche les raccourcis à l’écran et une configuration en YAML lisible.

Ce que fait Zellij

Zellij est un multiplexeur terminal : il permet d’ouvrir plusieurs panneaux et onglets dans une seule fenêtre de terminal, de détacher et rattacher des sessions, et de persister l’environnement de travail entre les connexions SSH. Écrit en Rust, extensible via des plugins WebAssembly.

Installation

# macOS
brew install zellij

# Windows (WSL2 recommandé)
cargo install zellij

# Linux — binaire précompilé
bash <(curl -L zellij.dev/launch)

# Arch Linux
sudo pacman -S zellij

# Cargo (toutes plateformes)
cargo install --locked zellij

Lancez simplement zellij pour démarrer.

Interface et modes

Zellij utilise un système de modes (comme Vim) avec les raccourcis affichés en bas d’écran. Plus besoin de mémoriser une combinaison secrète.

Mode Normal  → barre de statut en bas avec les actions disponibles
Ctrl+p       → Mode Pane (gestion des panneaux)
Ctrl+t       → Mode Tab (gestion des onglets)
Ctrl+n       → Mode Resize (redimensionner les panneaux)
Ctrl+s       → Mode Scroll (défilement)
Ctrl+o       → Mode Session
Ctrl+q       → Quitter

En mode Pane (Ctrl+p) :

n   → Nouveau panneau
d   → Fermer le panneau
f   → Plein écran
z   → Zoom (agrandir temporairement)
←↑↓→ → Naviguer entre panneaux

Layouts

Les layouts définissent la disposition des panneaux au démarrage. Ils sont écrits en KDL (un format proche de YAML) :

// ~/.config/zellij/layouts/dev.kdl
layout {
    pane size=1 borderless=true {
        plugin location="zellij:tab-bar"
    }
    pane split_direction="vertical" {
        pane split_direction="horizontal" {
            pane command="nvim" {
                args "."
            }
            pane command="bash"
        }
        pane size="30%" {
            pane command="bash" {
                name "logs"
            }
        }
    }
    pane size=2 borderless=true {
        plugin location="zellij:status-bar"
    }
}

Lancer avec un layout spécifique :

zellij --layout dev

Sessions persistantes

# Créer une session nommée
zellij attach -c mon-projet

# Lister les sessions actives
zellij list-sessions

# Rattacher une session existante
zellij attach mon-projet

# Détacher (continuer en arrière-plan)
Ctrl+o d

Les sessions survivent à la fermeture du terminal. Indispensable pour les connexions SSH longues.

Configuration

Le fichier principal est ~/.config/zellij/config.kdl :

// Thème
theme "catppuccin-mocha"

// Désactiver le message de bienvenue
simplified_ui true

// Copier dans le presse-papier système
copy_command "xclip -selection clipboard"  // Linux X11
// copy_command "xsel -ib"                 // Linux Wayland
// copy_command "pbcopy"                   // macOS

// Souris activée par défaut
mouse_mode true

// Défilement
scroll_buffer_size 10000

Thèmes intégrés

Zellij intègre plusieurs thèmes prêts à l’emploi :

# Lister les thèmes disponibles
zellij --list-themes

# Thèmes populaires :
# catppuccin-mocha, catppuccin-latte, dracula, gruvbox-dark, nord, one-dark

Pour changer de thème sans éditer la config :

zellij options --theme dracula

Plugins WebAssembly

Les plugins Zellij sont des modules WebAssembly — ils s’exécutent en sandbox et peuvent être écrits en Rust, Go, ou tout langage compilable en WASM.

Plugins officiels intégrés :

PluginRôle
zellij:tab-barBarre d’onglets en haut
zellij:status-barBarre de statut en bas
zellij:striderExplorateur de fichiers intégré
zellij:compact-barVersion compacte de la barre

Plugin communautaire notable : zjstatus — barre de statut hautement personnalisable avec l’heure, la session git, le CPU, etc.

Comparaison avec tmux

FonctionnalitétmuxZellij
Courbe d’apprentissageÉlevéeFaible
Configuration.tmux.conf (syntaxe propre)KDL (lisible)
Raccourcis affichés
Layouts déclaratifsPartiel
PluginsScripts shellWebAssembly
Performance⚡⚡⚡⚡⚡
MaturitéTrès matureEn développement actif
Support SSH natif✅ (zellij-server)

Workflow typique en développement

# Démarrer une session de projet
zellij attach -c mon-api

# Panneau 1 : éditeur
nvim .

# Ctrl+p, n → Panneau 2 : serveur de dev
npm run dev

# Ctrl+p, n → Panneau 3 : terminal libre
git status
docker logs mon-container -f

# Fermer le terminal → session toujours active
# Revenir demain :
zellij attach mon-api

Intégration avec SSH

# Lancer Zellij automatiquement à la connexion SSH
# Dans ~/.bashrc sur le serveur distant :
if [[ -z "$ZELLIJ" ]]; then
    zellij attach -c main || zellij
fi

+ Les points forts

  • Raccourcis visibles — la barre de statut affiche toutes les actions disponibles dans le mode courant, aucune mémorisation requise
  • Layouts déclaratifs — définir l’environnement de travail en KDL et le rejouer en une commande
  • Sessions persistantes — les sessions survivent à la déconnexion SSH sans configuration supplémentaire
  • Plugins WASM — un système de plugins sécurisé par sandbox, isolé du système hôte
  • Découvrable — un débutant peut utiliser Zellij de façon productive dès la première session

- Les points faibles

  • Moins mature que tmux — certains workflows avancés (scripting de sessions complexes, intégrations Vim très poussées) restent mieux couverts par tmux
  • Consommation mémoire légèrement supérieure — Zellij consomme un peu plus de RAM que tmux, généralement négligeable
  • KDL peu connu — le format de configuration KDL est peu répandu, la documentation est en anglais uniquement
  • Windows non supporté nativement — nécessite WSL2 sur Windows

En résumé

Zellij est le point d’entrée idéal dans le monde des multiplexeurs terminaux. Là où tmux demande plusieurs heures de configuration et de mémorisation, Zellij fonctionne bien dès le premier lancement. Pour les utilisateurs tmux aguerris, la migration vaut l’effort dès que les layouts déclaratifs et les plugins WASM deviennent utiles dans le workflow.


Voir aussi :

  • Windows Terminal — le terminal moderne de Microsoft avec onglets et split panes
  • bat — améliorer la lisibilité du code dans les panneaux Zellij