Débuter avec Tmux
Tmux est un multiplexeur de terminal, celui-ci permet de créer et contrôler des sessions. Il est souvent utilisé pour lancer une commande en fond et pouvoir fermer le terminal sans crainte que le processus ne soit stoppé.
Ainsi, dès lors que l’on démarre Tmux, celui-ci va initier une session stockée (par défaut) dans votre dossier /tmp
. En fermant notre fenêtre, en rouvrant un terminal et en lançant tmux attach
, on retrouve nos processus.
Il est également possible d’ouvrir plusieurs sessions Tmux en même temps, pour cela, il suffit de lancer tmux new -s {nom de la session}
.
Dès lors que vous avez plusieurs sessions, il vous sera possible de lister toutes les sessions via tmux ls
et vous rattacher à une session avec tmux attach -t {numéro ou nom de la session}
.
Ouvrir plusieurs fenêtres
Comme dit plus haut : une session ne représente pas un seul terminal, voyons alors plusieurs raccourcis pour gérer les fenêtres.
Par exemple, commençons par ctrl+b
, suivi (en relâchant les touches) par c
(create).
Nous obtenons ensuite une nouvelle fenêtre :
- Il vous est possible de revenir à la précédente fenêtre via
ctrl+b
etp
(previous) - à l’inverse, il est possible d’aller à la prochaine fenêtre via
ctrl+b
etn
(next) - Si vous avez trop de fenêtres, vous pouvez aussi cibler un numéro en particuler via :
ctrl+b {numéro}
.
Notez que les noms des fenêtres affichent par défaut la dernière commande lancée et sont modifiables via ctrl+b
et ,
.
Il est possible de quitter Tmux sans tuer les processus via ctrl+b
et d
(deattach). Pour quitter Tmux et tuer les processus, il suffit de faire ctrl+b
et x
(kill).
Ouvrir plusieurs panneaux
Il est possible d’ouvrir plusieurs panneaux (split) dans une fenêtre, pour cela, il suffit de faire ctrl+b
et "
(double quote) qui va séparer la fenêtre de manière horizontale. Pour ouvrir une fenêtre en vertical, il suffit de faire ctrl+b
et %
(percent) qui va séparer la fenêtre de manière verticale.
En cumulant les deux, vous pouvez obtenir un résultat comme celui-ci :
Pour naviguer entre les panneaux, il suffit de faire ctrl+b
et la flèche directionnelle correspondante.
Il est possible d’utiliser la souris pour naviguer entre les panneaux, pour cela, il faut faire ctrl+b
et :
puis set -g mouse on
. Vous pouvez également créer un fichier ~/.tmux.conf
dans votre dossier utilisateur et y ajouter la ligne set -g mouse on
pour que la souris soit activée par défaut.
Cheatsheet
Je ne vais pas vous détailler toutes les commandes, mais voici un petit récapitulatif des commandes les plus utiles :
Raccourcis Tmux
Commandes de base
tmux new
: Créer une nouvelle session Tmuxtmux attach -t <session_name>
: Se connecter à une session Tmux existantetmux switch -t <session_name>
: Changer de session Tmuxtmux list-sessions
: Afficher la liste des sessions Tmuxtmux detach
(ouCtrl-b d
) : Se détacher d’une session Tmux en courstmux kill-session -t <session_name>
: Fermer une session Tmux
Commandes de préfixe
Ctrl-b
: Touche de préfixe par défaut (peut être modifiée)Ctrl-b c
: Créer une nouvelle fenêtreCtrl-b n
: Aller à la fenêtre suivanteCtrl-b p
: Aller à la fenêtre précédenteCtrl-b l
: Basculer vers la dernière fenêtre utiliséeCtrl-b 0-9
: Aller à la fenêtre numérotéeCtrl-b &
: Fermer la fenêtre actuelleCtrl-b ,
: Renommer la fenêtre actuelle
Commandes de division de fenêtre
Ctrl-b %
: Diviser la fenêtre verticalementCtrl-b "
: Diviser la fenêtre horizontalementCtrl-b flèche directionnelle
: Naviguer entre les panneauxCtrl-b espace
: Basculer le layout du panneauCtrl-b z
: Mettre le panneau en plein écranCtrl-b {
: Déplacer le panneau actif vers la gaucheCtrl-b }
: Déplacer le panneau actif vers la droiteCtrl-b Ctrl-flèche directionnelle
: Redimensionner le panneau actif
Autres commandes utiles
Ctrl-b ?
: Afficher la liste des commandes disponiblesCtrl-b :
: Accéder au mode de commandeCtrl-b d
: Se détacher de la session en coursCtrl-b t
: Afficher l’horlogeCtrl-b [
: Activer le mode de copie (navigation avec les touches fléchées, espace pour commencer la sélection, entrée pour copier)Ctrl-b ]
: Coller le texte copié précédemmentCtrl-b !
: Déplacer la fenêtre actuelle dans une nouvelle sessionCtrl-b $
: Renommer la session en cours
Personnalisation
Il est possible de personnaliser Tmux via un fichier de configuration, celui-ci se nomme .tmux.conf
et se trouve dans votre dossier utilisateur.
Il est, par exemple, possible de modifier le préfixe de Tmux via la ligne suivante :
set-option -g prefix C-Space
Ainsi, on remplace ctrl+b
par ctrl+espace
.
Pour recharger la configuration, il suffit de lancer tmux source ~/.tmux.conf
directement dans Tmux.
Vous pouvez alors ajouter des raccourcis personnalisés, par exemple :
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
Qui permet de naviguer entre les panneaux via alt+[flèche directionnelle]
.
Aller plus loin avec les plugins
Il existe de nombreux plugins pour Tmux que l’on peut trouver sur GitHub.
Par exemple, il est possible d’installer un plugin Dracula pour rendre l’interface de Tmux un peu plus jolie :
Pour cela, il vous faudra installer Tmux Plugin Manager :
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Placer ensuite les lignes suivantes dans votre fichier .tmux.conf
:
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible' # plugin qui ajoute des options par défaut, optionnel
set -g @plugin 'dracula/tmux' # plugin Dracula
run '~/.tmux/plugins/tpm/tpm' # cette ligne doit être la dernière du fichier
Rafraichissez ensuite la configuration de Tmux via tmux source ~/.tmux.conf
et installez le plugin Dracula via ctrl-b I
(C’est un i majuscule).
Already installed "tpm" [0/0]
Already installed "tmux"
TMUX environment reloaded.
Done, press ENTER to continue.
Et après le redémarrage de Tmux, vous devriez avoir un résultat comme celui-ci :
Bon, la météo, et voir la batterie de mon ordinateur, c’est sympa, mais ce ne sont pas des informations que j’ai besoin de voir en permanence. Je propose alors ces paramètres qui affichent mon usage CPU, ma RAM utilisée, ma carte réseau principale, ma latence et mon contexte Kubernetes :
set -g @plugin 'dracula/tmux'
# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, network-ping, attached-clients, network-vpn, weather, time, spotify-tui, kubernetes-context
set -g @dracula-plugins "cpu-usage ram-usage network network-ping ram-usage, network-bandwidth, kubernetes-context"
set -g @dracula-show-empty-plugins false
## available colors: white, gray, dark_gray, light_purple, dark_purple, cyan, green, orange, red, pink, yellow
set -g @dracula-cpu-usage-colors "red dark_gray"
set -g @dracula-ram-usage-colors "dark_purple dark_gray"
set -g @dracula-network-colors "light_purple dark_gray"
set -g @dracula-network-ping-colors "yellow dark_gray"
set -g @dracula-kubernetes-context-colors "cyan dark_gray"
Résultat :
Conclusion
Tmux est un outil très puissant qui permet de gérer des sessions et des panneaux, et qui peut être personnalisé à l’infini. Il est très utile pour les personnes qui travaillent sur des serveurs distants, mais aussi pour les développeurs qui ont besoin de lancer plusieurs commandes en même temps.
Personnellement, je l’utilise tous les jours, et Tmux est l’un des premiers outils que j’installe sur mes machines.