Aller au contenu
Outils medium

Zellij, le multiplexeur de terminal

11 min de lecture

zellij

Je vais commencer par vous présenter Zellij, un outil qui a su se faire une place de choix dans mes outils préférés. Zellij est un multiplexeur de terminal, une catégorie d’outils conçue pour améliorer la gestion des terminaux dans les environnements de développement et d’administration système.

Zellij se distingue par sa facilité d’utilisation et sa riche palette de fonctionnalités :

  • Gestion des onglets
  • Gestion des fenêtres flottantes
  • Gestion de sessions
  • Gestion de plugins
  • Configuration via des fichiers écrit en KDL

Passons maintenant à l’installation et la configuration initiale de Zellij. L’installation est un processus simple et direct, quelle que soit la plateforme que vous utilisez.

La plupart des distributions Linux peuvent installer Zellij via leur gestionnaire de paquets. Comme toujours, je préfère utiliser asdf-vm :

Fenêtre de terminal
asdf plugin add zellij
asdf install zellij latest
asdf set --home zellij latest

Pour les utilisateurs de macOS, Zellij peut être installé via Homebrew, un gestionnaire de paquets populaire. La commande d’installation est la suivante :

Fenêtre de terminal
brew install zellij

Les utilisateurs de Windows peuvent installer Zellij en utilisant le Sous-système Windows pour Linux (WSL). Une fois WSL configuré, suivez les instructions d’installation pour Linux.

Nous allons voir en détail comment utiliser Zellij.

Pour lancer Zellij, il suffit d’utiliser la commande sans option :

Fenêtre de terminal
zellij

Ce qui donnera affichage avec une seule section avec en bas la liste des principaux raccourcis que voici :

RaccourcisActions
Alt+[n]Ouvrir une fenêtre
Alt+FlèchesSe déplacer dans le volet
Alt+[+]Augmenter la taille d’une fenêtre
Alt+[-]Diminuer la taille d’une fenêtre
Alt+[=]Attribuer une taille égale à toutes les fenêtre
Ctrl+[g]Interface de verrouillage (utile lors de l’utilisation de raccourcis système)
Ctrl+[p] xPour fermer la fenêtre active
Ctrl+[p] cRenommer la fenêtre active
Ctrl+[p] fPour ouvrir la fenêtre active en plein écran (idem pour taille initiale)
Ctrl+[p] wPour ouvrir une fenêtre flottante
Ctrl+[p] ePour rendre une fenêtre flottante (idem pour la remettre)
Ctrl+[q]Quitter

Il est possible d’ouvrir plusieurs onglets avec la séquence de touches suivantes : [ctrl]+[t] [n]. Pour passer d’un onglet à un autre, on peut utiliser la souris ou utiliser la séquence de touche [ctrl]+[t] [tab].

Les layouts dans Zellij sont des configurations prédéfinies de l’interface du terminal qui organisent l’affichage des panneaux et des fenêtres : leur taille et parfois même les applications ou commandes qui s’exécutent dans chaque panneau.

Par exemple Zellij est livré avec un layout nommé strider qui propose un navigateur de fichier intégré.

Fenêtre de terminal
zellij --layout strider

Ce qui donne :

zellij strider

Nous verrons plus tard comment en créer.

Une session dans Zellij est un environnement de travail qui conserve l’état de votre interface de terminal, y compris les panneaux ouverts, leur disposition et les processus en cours d’exécution. Cela permet de sauvegarder votre contexte de travail et de le reprendre plus tard, même après une déconnexion ou un redémarrage.

Pour lister les sessions actives :

Fenêtre de terminal
zellij ls
stellar-zebra [Created 0s ago] (EXITED - attach to resurrect)
verdant-lemur [Created 0s ago]
vitreous-jellyfish [Created 0s ago] (EXITED - attach to resurrect)
implacable-mountain [Created 0s ago]
sincere-peach [Created 0s ago]

On retrouve ici toutes les sessions qui ont été automatiquement créé par Zellij

Pour démarrer une session avec un nom prédéfini :

Fenêtre de terminal
zellij -s <nom de la session>

Pour quitter en conservant une session en mémoire, il faut utiliser les raccourcis suivants : [ctrl]+[o] [d].

Pour reprendre une session, il faut l’attacher :

Fenêtre de terminal
zellij a <nom de la session>

Pour détruire une session :

Fenêtre de terminal
zellij d <nom de la session>

Il est possible de piloter les sessions de Zellij depuis la ligne de commande. Pour cela, on utilise la commande action.

Fenêtre de terminal
zellij acction <sous-commande>

Voici une liste de quelques commandes :

  • edit <fichier> : Ouvre un pane avec l’éditeur définit par défaut sur le fichier de votre choix.
  • dump-screen /tmp/screen-dump.txt : copie le contenu d’une pane dans le fichier spécifié.
  • close-pane : ferme le pane actif
  • close-tab : ferme l’oglent actif

Zellij utilise le langage KDL pour sa configuration. Pour commencer, il est nécessaire de créer un répertoire de configuration et d’y générer un fichier de configuration par défaut en KDL :

Fenêtre de terminal
mkdir ~/.config/zellij
zellij setup --dump-config > ~/.config/zellij/config.kdl

Ces commandes créent le dossier de configuration de Zellij dans votre répertoire personnel et y déposent un fichier de configuration par défaut.

En termes d’emplacement, Zellij cherche le fichier config.kdl dans plusieurs endroits, en suivant un ordre précis. Il commence par vérifier si un répertoire de configuration a été spécifié via le drapeau --config-dir ou la variable d’environnement ZELLIJ_CONFIG_DIR. Si aucun de ces éléments n’est spécifié, Zellij utilisera le chemin par défaut, qui varie selon le système d’exploitation. Sur Linux, le chemin par défaut est /home/[username]/.config/zellij, tandis que sur macOS, il s’agit de /Users/[username]/Library/Application Support/org.Zellij-Contributors.Zellij. Il existe également une option pour une configuration au niveau du système, située dans /etc/zellij.

Par défaut, zellij utilise des polices nerd. Si de telles polices ne sont pas installées sur votre système, il est possible de configurer zellij pour qu’il utilise des polices plus simples. Dans le fichier de configuration, dé-commentez cette ligne :

Fenêtre de terminal
simplified_ui true

Pour ceux qui veulent en installer :

Fenêtre de terminal
git clone --depth 1 https://github.com/ryanoasis/nerd-fonts.git # warning: takes a while
cd nerd-fonts/
./install.sh FiraCode

Zellij permet aux utilisateurs de définir leurs propres raccourcis clavier pour une navigation et une gestion plus efficaces des fenêtres et des panneaux. Pour personnaliser les raccourcis, vous devez modifier le fichier config.kdl. Voici un exemple de configuration pour un raccourci personnalisé :

keybinds {
normal {
bind "Alt c" { Copy; }
}
}

Dans cet exemple, Ctrl-c est configuré activer la copie automatique sur sélection.

Pour désactiver un raccourci, on utilise cette syntaxe :

keybinds {
unbind "Ctrl g" // unbind in all modes
}

Zellij offre également la possibilité de personnaliser l’apparence de votre terminal avec différents thèmes. Pour changer le thème, vous devez modifier votre fichier config.kdl et y spécifier le thème de votre choix. Par exemple :

theme "dracula"

Sachez qu’il est possible d’écrire ses propres plugins en Webassembly/WASI. Il en existe quelques-uns ici.

Les layouts sont définis aussi dans des fichiers définis au format KDL. Pour créer un premier layout, on peut utiliser la commande suivante :

Fenêtre de terminal
zellij setup --dump-layout default > ~/my-layout-file.kdl

Ce qui donne :

layout {
pane size=1 borderless=true {
plugin location="zellij:tab-bar"
}
pane
pane size=2 borderless=true {
plugin location="zellij:status-bar"
}
}

Les layouts sont composés de :

  • pane: les éléments de base de la mise en page, peuvent représenter des shells, des commandes, des plugins ou des conteneurs logiques pour d’autres panes.
  • tab : représente un onglet de navigation Zellij et peut contenir des pane

Il est possible de lancer des commandes dans les pane :

Un exemple :

layout {
pane // panes can be bare
pane command="htop" // panes can have arguments on the same line
pane {
// panes can have arguments inside child-braces
command "exa"
cwd "/"
}
pane command="ls" { // or a mixture of same-line and child-braces arguments
cwd "/"
}
}
On peut divier les pane horizontalement ou verticalement :
```bash
layout {
pane split_direction="vertical" {
pane
pane
}
pane {
// value omitted, will be layed out horizontally
pane size="80%"
pane size="20%"
}
}

Utilisation des onglets :

layout {
tab // a tab with a single pane
tab {
// a tab with three horizontal panes
pane
pane
pane
}
tab name="my third tab" split_direction="vertical" {
// a tab with a name and two vertical panes
pane
pane
}
}

En conclusion, Zellij se révèle être un outil extrêmement puissant. En maîtrisant les sessions, les layouts et les diverses personnalisations, vous pouvez transformer votre terminal en un espace de travail dynamique et efficace. Que ce soit pour la gestion multitâche, l’organisation de workflows complexes, ou simplement pour augmenter votre productivité au quotidien, Zellij offre une gamme de fonctionnalités adaptées à vos besoins. En intégrant cet outil dans votre routine, vous vous dotez d’une capacité à gérer et à naviguer dans des environnements de développement et d’administration système avec une aisance et une efficacité accrues.

D’ailleurs, c’est pour cette raison que Zellij a rejoint ma liste d’outils DevOps Indispensables !