New post : Tmux / Sesh
This commit is contained in:
parent
633c6e0b91
commit
526b96ef22
1 changed files with 35 additions and 0 deletions
35
posts/2026/2026-01-18-tmux.md
Normal file
35
posts/2026/2026-01-18-tmux.md
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<!-- title: Tmux, retour d'expérience -->
|
||||
<!-- category: GNU/Linux -->
|
||||
|
||||
En l’occurrence il s'agit d'un retour d'expérience d'une décennie car j'ai commencé à me familiariser avec Tmux en 2013. Pour ceux qui ne connaissent pas, c'est un multiplexeur de terminaux, un super outil pour qui travaille régulièrement en ligne de commande. D'abord il faut choisir son émulateur de terminal. Cela peut-être celui de son environnement de bureau (XFCE Terminal, Gnome Terminal, Konsole) même s'il va fournir des fonctionnalités superflues comme les onglets ou un émulateur *alternatif* comme Kitty ou Alacritty ; c'est ce dernier que j'utilise pour sa portabilité sur les systèmes GNU/Linux et Ms Windows.
|
||||
|
||||
Dans Tmux, nous manipulons plusieurs concepts :
|
||||
- la session qu'on peut voir comme l'espace projet,
|
||||
- la fenêtre qu'on peut assimiler à un onglet ; dans une session on ajoute de multiples fenêtres,
|
||||
- le volet (ou "pane" en langue de Shakespeare) qui est la subdivision d'une fenêtre : verticalement ou horizontalement, redimensionnable à volonté.
|
||||
|
||||
Typiquement une session nommée "0" avec 3 fenêtres "vim", "zsh" et "cmus" ressemblera à ceci :
|
||||
|
||||

|
||||
|
||||
(Source: [Wikipedia](https://fr.wikipedia.org/wiki/Tmux))
|
||||
|
||||
|
||||
Est-il encore pertinent d'investir du temps dans l'apprentissage de Tmux ? Je le crois car le terminal reste une pierre angulaire du développement logiciel et de l'administration système. Même si les IDE sont pertinents, il y a des tâches ou la ligne de commande reste aussi performante et/ou plus rapide. Paradoxalement et ce n'est probablement pas une opinion populaire, les outils IA comme Claude Code sont plus puissants depuis la ligne de commande car ils travaillent à ce niveau : édition de fichier, installation de dépendances, compilation, lancement des tests, gestion de Git... les outils CLI sont aisés à manipuler pour un agent. Et si le *Vibe Coding* devait se généraliser, les IDE ont du souci à se faire.
|
||||
|
||||
Tmux est complexe si on tente d'appréhender sa configuration avancée d'entrée de jeu. Mais son apprentissage peut-être progressif et au fur et à mesure qu'on le maîtrise, on enrichit sa configuration pour être plus efficace dans les tâches fréquemment exécutées. Et l'apprentissage ne s'arrête jamais, le projet est mâture mais toujours actif et la communauté innove régulièrement en publiant de nouveaux plugins.
|
||||
|
||||
J'ai maîtrisé rapidement la gestion des fenêtres et des volets mais cela a été plus long pour les sessions. Pas que ce soit plus complexe mais je ne voyais pas le potentiel que je pouvais en tirer. Puis j'ai eu une période [tmuxp](https://github.com/tmux-python/tmuxp) qui permet de décrire des sessions prédéfinies dans un fichier de configuration et les charger au fil des besoins. Je décrivais donc les espaces projets du moment et j'utilisais la session par défaut pour le reste en ajoutant ou retirant des fenêtres. C'était pas mal mais j'effectuais finalement l'essentiel du travail dans la session par défaut avec beaucoup de fenêtres. Avec le recul, je pense que c'est par manque de dynamisme dans ma gestion des sessions et c'est en découvrant [Sesh](https://github.com/joshmedeski/sesh) que j'ai véritablement exploité les sessions Tmux.
|
||||
|
||||
Bon alors Sesh c'est quoi ? Ironiquement si je m'étais arrêté à ma première impression j'aurais passé mon chemin car il présente des points négatifs :
|
||||
- ce n'est pas un plugin Tmux mais un binaire externe écrit en Golang qui pilote Tmux,
|
||||
- il a une dépendance à un autre binaire appelé Zoxide qui est un accélérateur de *changedir* car il mémorise les répertoires rencontrés,
|
||||
- son créateur John Medeski a préféré des vidéos Youtube à une documentation.
|
||||
|
||||
Selon moi, l'idée génial de Sesh c'est d'apporter le dynamisme aux sessions : mixer des sessions prédéfinies et les derniers répertoires rencontrés et les présenter dans une interface unifiée :
|
||||
- sélectionner une session prédéfinie instancie la session et ses fenêtres et des commandes peuvent être lancées automatiquement,
|
||||
- sélectionner un répertoire crée une nouvelle session à la volée avec une fenêtre ouverte dans ce répertoire. Bien sûr on va rajouter des fenêtres nécessaires en lien avec ce projet
|
||||
|
||||
Le nombre de fenêtres lancé est globalement le même par rapport à mon précédent fonctionnement sans Sesh. Ce qui change c'est que je bascule essentiellement entre des sessions plutôt qu'entre des fenêtres et ces sessions sont nommées clairement, c'est facile de s'y retrouver.
|
||||
|
||||
Bref je n'ai pas fini d'améliorer ma configuration Tmux, accessible [ici](https://gitea.zaclys.com/yannic/dotfiles/src/branch/main/dot_tmux.conf.tmpl) pour les intéressés.
|
||||
Loading…
Add table
Add a link
Reference in a new issue