Ce que fait tmux
Votre connexion SSH tombe en plein milieu d’un `apt upgrade`, et tout votre déploiement est à l’arrêt parce que votre terminal est mort. Si vous aviez utilisé tmux, cette mise à niveau aurait continué à tourner. Cet article explique ce que fait tmux, comment le configurer et pourquoi il change votre façon de travailler — pour ceux qui travaillent sur des serveurs Linux ou dans un terminal avec des éditeurs comme Vim ou Emacs.
Prérequis
- Un système Linux (Debian/Ubuntu, RHEL/Fedora, ou une autre distribution) ou macOS
- tmux version 3.7c ou plus récente (vérifiez avec `tmux -V`)
- Des connaissances de base de la ligne de commande
- Une connexion SSH vers un serveur, ou un terminal local
Ce que fait tmux
Tmux est un multiplexeur de terminal : il vous permet de faire tourner plusieurs sessions de terminal dans un seul écran. Le nom est une abréviation de terminal multiplexer — il multiplie les fonctionnalités d’une seule fenêtre de terminal en prenant en charge les sessions, les fenêtres et les panneaux dans une seule interface.La fonctionnalité de base est simple : vous démarrez une session, vous faites votre travail, et vous pouvez détacher cette session (detach) de votre écran. La session continue de tourner en arrière-plan. Plus tard, vous la rattachez (re-attach), où que vous soyez. Vos processus ne s’arrêtent pas si vous fermez votre ordinateur portable ou si votre wifi tombe.
C’est ce qui rend tmux indispensable pour les tâches de longue durée : les builds, les scripts, les processus serveur, les migrations de base de données. L’auto-hébergement semble magnifique, jusqu’à ce que quelque chose tombe en panne un dimanche soir à vingt-trois heures trente. Là, vous n’êtes pas un client qui attend au service d’assistance. Vous êtes le service d’assistance — et vous voulez que votre session soit toujours vivante.
Installation
Il y a de fortes chances que tmux soit déjà installé. Vérifiez d’abord :tmux -V
Si rien ne s’affiche, installez-le via votre gestionnaire de paquets :
<h2>Debian/Ubuntu</h2>
sudo apt install tmux
<h2>RHEL/Fedora</h2>
sudo dnf install tmux
<h2>macOS (via Homebrew)</h2>
brew install tmux
Base : votre première session
Démarrez une nouvelle session :tmux new -s werk
Vous êtes maintenant dans une session tmux, mais vous le remarquez à peine — sauf pour la barre de statut en bas. Elle affiche le nom de votre session, les fenêtres et l’heure.
Le concept le plus important est la touche préfixe : par défaut `Ctrl+b`. Tout ce que vous voulez faire dans tmux commence par cette combinaison. Ensuite, vous appuyez sur une deuxième touche pour l’action.
Les trois commandes les plus importantes à retenir :
| Action | Touches | |-------|---------| | Détacher (décrocher la session) | `Ctrl+b` puis `d` | | Nouvelle fenêtre | `Ctrl+b` puis `c` | | Fenêtre suivante | `Ctrl+b` puis `n` |
Détacher est la plus importante. Appuyez sur `Ctrl+b`, relâchez, appuyez sur `d`. Vous êtes de retour dans votre shell normal, et votre session continue de tourner.
Pour rattacher :
tmux attach -t werk
Si votre connexion SSH tombe, il vous suffit de vous reconnecter et d’exécuter la commande ci-dessus. Tout est encore exactement là où vous l’aviez laissé.
Fenêtres et panneaux
Dans une seule session, vous pouvez avoir plusieurs fenêtres — pensez aux onglets d’un navigateur. Et dans une seule fenêtre, vous pouvez diviser l’écran en panneaux, afin de voir deux terminaux ou plus en même temps.| Action | Touches | |-------|---------| | Diviser verticalement (gauche/droite) | `Ctrl+b` puis `%` | | Diviser horizontalement (haut/bas) | `Ctrl+b` puis `"` | | Passer d’un panneau à l’autre | `Ctrl+b` puis touche fléchée | | Fermer un panneau | taper `exit`, ou `Ctrl+d` |
C’est là que tmux prouve sa valeur pour les utilisateurs d’éditeurs. Vous ouvrez Vim dans un panneau, un shell dans le panneau en dessous, et un `tail -f` sur un fichier journal dans le panneau de droite. Vous n’avez plus besoin de faire des allers-retours entre les fenêtres du terminal.
Une configuration pratique :
1. Démarrez une session : `tmux new -s dev` 2. Divisez horizontalement : `Ctrl+b` puis `"` 3. Ouvrez Vim dans le panneau supérieur : `vim` 4. Allez dans le panneau inférieur : `Ctrl+b` puis flèche vers le bas 5. Lancez votre build ou vos tests là
Vous voyez directement ce qui se passe quand votre code compile ou que les tests s’exécutent, sans changer de fenêtre.
Détacher continue de tourner
Le modèle client-serveur de tmux est ce qui fait la différence. Lorsque vous démarrez tmux, un processus serveur tourne et gère vos sessions. Votre terminal n’est qu’un client qui s’y connecte. Si vous coupez la connexion — volontairement ou à cause d’une panne réseau — le serveur continue de tourner.Testez-le vous-même :
1. Démarrez une session : `tmux new -s test` 2. Lancez une commande de longue durée, par exemple : `ping 8.8.8.8` 3. Détachez avec `Ctrl+b` puis `d` 4. Fermez complètement votre terminal 5. Ouvrez un nouveau terminal et tapez : `tmux attach -t test`
Le ping tourne toujours. C’est tout l’intérêt.
Configuration : votre propre tmux
Par défaut, tmux utilise les combinaisons de touches de style emacs. Si vous travaillez avec Vim, vous pouvez les adapter. Tmux consulte votre variable d’environnement `EDITOR` au démarrage : si elle contient « vi », tmux passe automatiquement aux raccourcis clavier de style vi en mode copie.Pour d’autres réglages, créez un fichier de configuration :
touch ~/.tmux.conf
Une configuration de base très utilisée :
<h2>Changez la touche préfixe en Ctrl+a (comme GNU Screen)</h2>
set -g prefix C-a
unbind C-b
bind C-a send-prefix
<h2>Activez la prise en charge de la souris</h2>
set -g mouse on
<h2>Augmentez le tampon de défilement</h2>
set -g history-limit 50000L’option souris est controversée : certains utilisateurs ne jurent que par elle, d’autres la trouvent gênante pour sélectionner du texte dans le terminal. Activez-la, essayez pendant une semaine, et désactivez-la si elle vous dérange. Cela ne coûte rien de la modifier.
Après une modification, rechargez la configuration :
tmux source-file ~/.tmux.conf
Scriptbaarheid
Tmux laat zich niet alleen interactief bedienen, maar ook vanuit scripts. Dat maakt het mogelijk om complexe ontwikkelomgevingen op te zetten met één commando.Un exemple : une session avec trois fenêtres pour un projet.
#!/bin/bash
tmux new-session -d -s project -n editor
tmux send-keys -t project 'vim src/index.js' C-m
tmux new-window -t project -n shell
tmux send-keys -t project 'git status' C-m
tmux new-window -t project -n logs
tmux send-keys -t project 'tail -f /var/log/app.log' C-m
tmux select-window -t project:editor
tmux attach -t projectCe script démarre une session nommée `project`, ouvre Vim dans la première fenêtre, un shell avec `git status` dans la deuxième, et un visualiseur de logs dans la troisième. Ensuite, il vous y connecte.
Il existe aussi des outils qui gèrent ce genre de configurations — `tmuxinator` et `tmuxp` sont les plus connus. Ils fonctionnent avec des configurations YAML et sont pratiques si vous avez beaucoup d’environnements de projets différents. Pour un ou deux projets, un simple script suffit ; ces outils ajoutent surtout de la structure si vous en avez des dizaines.
Erreurs fréquentes
Oublier que vous êtes dans tmux. Vous exécutez des commandes, et soudain un raccourci ne fonctionne plus. Vérifiez la barre d’état en bas. S’il y a un nom de session, vous êtes dans tmux. Appuyez sur `Ctrl+b` puis `d` pour détacher, ou restez et apprenez le préfixe.`Ctrl+b` ne fonctionne pas dans GNU Screen. Tmux et GNU Screen sont des programmes différents avec des touches de préfixe différentes. Screen utilise par défaut `Ctrl+a`. Si vous êtes habitué à Screen, adaptez votre configuration tmux comme décrit ci-dessus.
Le scrollback ne fonctionne pas. Dans tmux, on ne fait pas défiler avec la molette de la souris, sauf si on active le support de la souris. Sans cette option, on utilise `Ctrl+b` puis `[` pour passer en mode copie, après quoi on parcourt le tampon avec les touches fléchées ou Page Up/Page Down. Avec le support de la souris activé, le défilement fonctionne comme prévu.
Session perdue après un redémarrage. Les sessions Tmux ne survivent pas à un redémarrage du système — elles tournent sur le serveur, pas dans votre terminal, mais bien dans la mémoire de ce serveur. Pour les processus qui doivent survivre à un redémarrage, il vous faut un gestionnaire de services comme systemd. Tmux sert à survivre aux coupures de connexion, pas aux coupures de courant.
Vérification
Vérifiez que votre installation fonctionne et que vous gérez vos sessions :<h2>Afficher toutes les sessions actives</h2>
tmux list-sessions
<h2>Afficher la version de tmux</h2>
tmux -V
<h2>Afficher tous les processus actifs nommés tmux-server</h2>
ps aux | grep tmuxSi vous voyez une session dans `list-sessions`, votre serveur tmux fonctionne correctement. Attachez-vous-en une avec `tmux attach -t Problèmes fréquents
`tmux attach` donne "no sessions"
Vous n'avez pas de sessions actives. Démarrez-en une avec `tmux new -s travail`, ou vérifiez avec `tmux list-sessions` si vous avez bien le nom de session.
Les couleurs paraissent différentes dans tmux Tmux prend en charge 256 couleurs, mais votre terminal doit aussi le faire. Lancez tmux avec `tmux -2` pour activer le support des 256 couleurs, ou ajoutez `set -g default-terminal "screen-256color"` dans votre `.tmux.conf`.
`tmux source-file` génère des erreurs à propos d’options inconnues Votre configuration contient des options que votre version de tmux ne connaît pas. Vérifiez votre version avec `tmux -V` et comparez avec la documentation pour cette version. Les options changent entre les versions ; une configuration écrite pour 3.7 ne fonctionne pas toujours sur 3.2.
Tmux n'est pas un outil graphique et c'est précisément sa force. Tout fonctionne avec du texte et des combinaisons de touches, ce qui le rend léger — mais lui donne aussi une courbe d'apprentissage. Les premiers jours, tu appuieras sur `Ctrl+b` et tu oublieras quelle touche vient ensuite. Après une semaine, c'est dans tes muscles, et tu te demandes comment tu as pu travailler sans lui. Et quand tu te retrouves un jour sans lui — sur un système où tmux n'est pas installé — tu découvres vraiment ce qui te manque : la tranquillité d'une session qui continue de tourner, indépendamment de ta connexion.