Featured image of post Tmux : le guide du multiplexeur de terminal

Tmux : le guide du multiplexeur de terminal

Découvrez tmux, le multiplexeur de terminal indispensable pour garder ses sessions, organiser ses fenêtres et ne plus jamais perdre son travail.

Introduction

Si vous passez votre temps à jongler entre plusieurs terminaux, à perdre une commande en cours à cause d’une déconnexion ou à maudire la gestion des fenêtres de votre terminal, tmux est l’outil qu’il vous faut.

tmux (Terminal Multiplexer) permet de créer des sessions, de les diviser en fenêtres et en panneaux, et surtout de les conserver actives même si vous fermez votre terminal. C’est un peu comme avoir un bureau à plusieurs écrans, mais dans un terminal.

Pourquoi utiliser tmux ?

  • Persistance : vos processus continuent de tourner même si vous fermez le terminal.
  • Multitâche : plusieurs fenêtres et panneaux dans une seule session.
  • Productivité : détacher/attacher une session, partager un terminal, automatiser son environnement.
  • Stabilité : plus de crainte de perdre une commande en cours à cause d’une coupure réseau.

Installation

Debian / Ubuntu

sudo apt update
sudo apt install tmux

Fedora / RHEL

sudo dnf install tmux

Vérifier la version

tmux -V

La version 3.x est recommandée pour bénéficier de toutes les fonctionnalités modernes.

Concepts de base

tmux repose sur trois niveaux d’organisation :

  • Session : un environnement de travail isolé. Chaque session contient ses propres fenêtres.
  • Fenêtre : équivalent d’un onglet ou d’un bureau virtuel.
  • Panneau : une division de la fenêtre en plusieurs zones, chacune avec son propre shell.

Commandes essentielles

Astuce : appuyer sur Ctrl+b puis ? à tout moment affiche la liste complète des raccourcis tmux et leurs descriptions.

Gérer les sessions

# Créer une session nommée dev -s/--session-name définit le nom.
tmux new -s dev

# Lister les sessions en cours
tmux ls

# Attacher la session dev -t/--target spécifie la cible.
tmux attach -t dev

# Détacher la session en cours
tmux detach

# Supprimer la session dev -t/--target spécifie la cible.
tmux kill-session -t dev
RaccourciAction
Ctrl+b puis sLister et changer de session interactivement
Ctrl+b puis dDétacher la session en cours
Ctrl+b puis (Passer à la session précédente
Ctrl+b puis )Passer à la session suivante
Ctrl+b puis $Renommer la session courante
Ctrl+b puis LRevenir à la dernière session active

Gérer les fenêtres

Par défaut, le préfixe tmux est Ctrl+b.

RaccourciAction
Ctrl+b puis cCréer une nouvelle fenêtre
Ctrl+b puis nFenêtre suivante
Ctrl+b puis pFenêtre précédente
Ctrl+b puis wLister et choisir une fenêtre
Ctrl+b puis ,Renommer la fenêtre courante
Ctrl+b puis &Fermer la fenêtre courante
Ctrl+b puis 0-9Aller à la fenêtre numéro N

Gérer les panneaux

RaccourciAction
Ctrl+b puis "Diviser horizontalement
Ctrl+b puis %Diviser verticalement
Ctrl+b puis ↑ ↓ ← →Naviguer entre les panneaux
Ctrl+b puis oCycle entre les panneaux
Ctrl+b puis xFermer le panneau courant
Ctrl+b puis zZoomer/dézoomer le panneau courant
Ctrl+b puis espaceChanger la disposition des panneaux

Personnaliser tmux avec .tmux.conf

La configuration se fait dans le fichier ~/.tmux.conf. Voici une configuration de base moderne et confortable :

# Remplacer le préfixe Ctrl+b par Ctrl+a (plus accessible)
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# Activer la souris pour redimensionner et sélectionner les panneaux
set -g mouse on

# Numéroter les fenêtres et les panneaux à partir de 1
set -g base-index 1
setw -g pane-base-index 1

# Augmenter l'historique du buffer à 10 000 lignes
set -g history-limit 10000

# Réduire le délai d'interprétation de la touche Échap
set -sg escape-time 10

# Activer le support des couleurs 256 et truecolor
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*:Tc"

# Personnaliser la barre d'état
set -g status-style bg=black,fg=white
set -g status-left-length 40
set -g status-left "[#S] "
set -g status-right " %H:%M %d-%m-%Y"
set -g window-status-current-style bg=blue,fg=white

# Recharger la configuration avec Ctrl+b puis r
bind r source-file ~/.tmux.conf \; display "Config rechargée !"

Après modification :

tmux source-file ~/.tmux.conf

Plugins avec Tmux Plugin Manager (TPM)

TPM permet d’installer facilement des plugins tmux.

Installation de TPM

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Ajouter à .tmux.conf

Ajoutez ces lignes en fin de fichier :

# Gestionnaire de plugins
set -g @plugin 'tmux-plugins/tpm'

# Plugins essentiels
set -g @plugin 'tmux-plugins/tmux-resurrect'  # sauvegarde et restauration des sessions
set -g @plugin 'tmux-plugins/tmux-continuum'  # sauvegarde automatique
set -g @plugin 'tmux-plugins/tmux-yank'       # copie vers le presse-papiers

# Sauvegarder automatiquement toutes les 15 minutes
set -g @continuum-save-interval '15'
set -g @continuum-restore 'on'

# Initialiser TPM (à placer en fin de fichier)
run '~/.tmux/plugins/tpm/tpm'

Plugins recommandés

  • tmux-resurrect : sauvegarde et restaure les sessions après un redémarrage.
  • tmux-continuum : sauvegarde automatique et restauration continue.
  • tmux-yank : copie dans le presse-papiers du système.

Pour installer les plugins, appuyez sur Ctrl+b puis I (i majuscule).

Cas d’usage concrets

Garder une commande longue en arrière-plan

# Créer une session nommée backup
tmux new -s backup

# Lancer la commande longue dans tmux
restic backup --tag prod /srv/data

# Puis détacher avec Ctrl+b puis d

Même en fermant son terminal, le backup continue.

Surveiller un serveur

# Créer la session
tmux new -s monitoring

# Diviser verticalement (-v) et lancer htop dans le panneau du bas
tmux split-window -v "htop"

# Diviser horizontalement (-h) et afficher le journal système
tmux split-window -h "journalctl -f"

Pair programming

Deux personnes peuvent se connecter au même serveur, attacher la même session tmux et collaborer dans le même terminal.

# Utilisateur 1 : créer la session
tmux new -s pair

# Utilisateur 2 : attacher la session existante
tmux attach -t pair

Pensez à bien gérer les permissions si deux utilisateurs distincts veulent partager la session.

Tableau récapitulatif des raccourcis

RaccourciAction
Ctrl+b dDétacher la session
Ctrl+b cNouvelle fenêtre
Ctrl+b nFenêtre suivante
Ctrl+b pFenêtre précédente
Ctrl+b wChoisir une fenêtre
Ctrl+b "Panneau horizontal
Ctrl+b %Panneau vertical
Ctrl+b ↑↓←→Changer de panneau
Ctrl+b xFermer le panneau
Ctrl+b zZoomer le panneau
Ctrl+b tHorloge (bonus)

Conclusion

tmux est un allié redoutable pour qui vit dans un terminal. Entre persistance des sessions, organisation en fenêtres et panneaux, et personnalisation poussée, il transforme radicalement l’expérience du shell.

Après quelques heures d’usage, revenir à un terminal sans tmux ressemble à conduire sans rétroviseur : techniquement possible, mais franchement moins confortable.