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 :
| Plugin | Rôle |
|---|---|
zellij:tab-bar | Barre d’onglets en haut |
zellij:status-bar | Barre de statut en bas |
zellij:strider | Explorateur de fichiers intégré |
zellij:compact-bar | Version 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é | tmux | Zellij |
|---|---|---|
| Courbe d’apprentissage | Élevée | Faible |
| Configuration | .tmux.conf (syntaxe propre) | KDL (lisible) |
| Raccourcis affichés | ❌ | ✅ |
| Layouts déclaratifs | Partiel | ✅ |
| Plugins | Scripts shell | WebAssembly |
| Performance | ⚡⚡⚡ | ⚡⚡ |
| Maturité | Très mature | En 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