Tmux : installation et configuration
Note aux lecteurs
Cet article est vieillissant et son contenu doit être révisé. Attention donc : les explications, commandes systèmes et autres informations peuvent dorénavant être incorrectes ou inexactes.
Tmux est un multiplexeur de terminaux. En gros, c'est un outil qui permet d'utiliser plusieurs terminaux dans un seul affichage. Il permet aussi de détacher une session pour la rattacher plus tard.
Cas pratique : Vous êtes connecté en SSH à votre serveur, en train de faire des modifications de configuration. Pas de chance, votre connexion est interrompue et vous perdez ce que vous n'avez encore sauvegardé. Il va falloir se reconnecter et recommencer !
Cas pratique n° 2 : Vous lancez une compilation qui prend du temps et vous devez partir, ou simplement vous n'avez plus de batterie... Pas de soucis, le terminal n'est pas interrompu et la compilation continuera.
Ça n'en a peut-être pas l'air, mais c'est super pratique de pouvoir se reconnecter en retrouvant les tâches exactement comme elles ont été laissées.
Voici un petit aperçu de ce que ça peut donner visuellement, lorsque tmux est personnalisé (le fond n'en fait pas partie, c'est seulement l'image de mon bureau !).
Pour ma configuration, j'ai pioché chez lui : gpakosz/.tmux. Avec spicycode/tmux.conf j'ai pu comprendre comment modifier les touches et faire quelques réglages pour affiner.
Installation
Ubuntu & Co
└─ $ ▶ sudo apt-get install tmux
└─ $ ▶ tmux -V
tmux 2.1
CentOS & Co
Il faut compiler depuis les sources pour obtenir la dernière version de tmux. Mon serveur étant sous CentOS, j'ai utilisé ce script : roxma/install_tmux.sh.
└─ $ ▶ tmux -V
tmux 2.1
Si vous ne voulez pas la dernière version de tmux, vous pouvez simplement utiliser yum
. Mais avec cette version (inférieure à la version 2), vous ne pourrez pas utiliser toutes les fonctionnalités de la configuration de gpakosz.
Configuration
Une fois que tmux est installé, un fichier de configuration peut être créé dans le dossier d'un utilisateur ~/.tmux.conf
.
Si vous voulez que le fichier de configuration s'applique à tous les utilisateurs du système, vous pouvez le déplacer sous le nom tmux
, ce qui donne /etc/tmux
.
Barre du bas
Conformément aux indications sur le dépôt github :
└─ $ ▶ cd && git clone https://github.com/gpakosz/.tmux.git
└─ $ ▶ ln -s -f .tmux/.tmux.conf
└─ $ ▶ cp .tmux/.tmux.conf.local .
Attention : Vous devez disposer de la version 2.1 pour être compatible.
Maintenant, tout content, vous démarrez tmux et ... c'est pas beau ! Mais pourquoi donc ?
Ajout d'une police compatible
Sur le dépôt, il est expliqué que les caractères spéciaux et icônes sont inclus dans certaines polices spéciales.
Il faut donc en installer au moins une, pour que les caractères s'affichent.
Ce dépôt propose beaucoup de polices, avec un script pour les installer automatiquement. Il y a un script pour Linux (install.sh
) et un autre pour Windows (install.ps1
, format powershell).
Si vous ne voulez pas forcément installer toutes ces polices, vous pouvez en choisir une et le faire à la main.
Pour ma part, j'ai choisi Roboto Mono Light et fantasque pour Windows et Linux.
Modification des raccourcis
Voilà le dépôt dont je me suis inspiré pour modifier les raccourcis de tmux.
Utilisation & raccourcis
Pour lancer tmux, il suffit de taper le nom du programme dans un terminal.
└─ $ ▶ tmux
Il est préférable d'utiliser la commande tmux a
ou tmux attach
qui va tenter d'attacher une session tmux déjà existante. Si aucune session n'existe, alors une nouvelle sera créée.
Cela permet d'éviter d'avoir un grand nombre de sessions tmux qui tournent en même temps.
Pour consulter le nombre d'instances qui tournent :
└─ $ ▶ tmux ls
Toutes les commandes (ou presque) qui permettent de contrôler tmux, doivent être faites après un "préfixe". C'est un raccourci clavier qui fonctionne de la même manière que vi
, il spécifie à tmux qu'une commande va lui être passée.
Par défaut, ce préfixe est CTRL
+ B
.
Toute une suite de raccourcis est ensuite disponible, en fonction du contenu du fichier de configuration que vous avez peut-être modifié.
Voici une petite liste, non-exhaustive des raccourcis de ma configuration :
- < préfixe > +
d
: Détacher la session courante - < préfixe > +
b
: Diviser l'écran horizontalement - < préfixe > +
v
: Diviser verticalement - < préfixe > +
c
: Ajouter un nouvel onglet - < préfixe > +
,
: Renommer l'onglet actuel - < préfixe > +
t
: Afficher l'heure - < préfixe > +
r
: Recharger le fichier de configuration - < préfixe > +
MAJ
+1
: Accéder à l'onglet 1 (puis 2 pour le deuxième onglet, etc.) - < préfixe > +
flèche gauche / droite
: Changer de panel (section divisée de l'écran) - < préfixe > +
m
: Activer l'utilisation de la souris CTRL
+flèches
: Modifier la taille d'un panel
Utilisation de la souris
Si vous avez activé le mode d’utilisation de la souris (< préfixe > + m
), vous pourrez cliquer au lieu de faire certains raccourcis comme modifier la taille d'un panel, ou changer d'onglet.
C'est aussi ce mode qui vous permettra de scroller dans les résultats précédents par exemple.
A la connexion SSH
Pour lancer automatiquement tmux à la connexion SSH, ajouter les lignes suivantes à la fin du fichier /home/UTILISATEUR/.bashrc
:
# Launching TMUX
if [[ -z "$TMUX" ]] && [ "$SSH_CONNECTION" != "" ]; then
tmux attach-session -t ssh_tmux || tmux new-session -s ssh_tmux
fi
Cela va créer un nouveau tmux nommé ssh_tmux, ou le rattacher.