======TMUX======
[[https://github.com/tmux/tmux|TMUX]] est comme son nom l'indique un multiplexeur de terminaux, à l'instar de [[informatique:logiciels:screen|screen]] ou byobu. Il s'organise en sessions, qui comprennent une ou plusieurs fenêtres (window), découpées en panels (panneau ?).
Il permet donc, notamment :
* d'ouvrir une session, de lancer une commande, de se déconnecter de la session et de s'y reconnecter plus tard en récupérant son état (la commande continue de s'exécuter en arrière plan)
* d'ouvrir plusieurs terminaux dans différentes fenêtres (onglets)
* d'agencer plusieurs terminaux à l'écran (split vertical ou horizontal de panels)
On lance l'outil depuis un terminal avec la commande ''tmux'' (il va créer une nouvelle session). Pour Lister les sessions existantes qui tournent en arrière-plan :
tmux ls
0: 3 windows (created Sat Oct 17 15:37:15 2020) [161x37]
3: 1 windows (created Sat Oct 17 18:42:39 2020) [161x37]
Pour se connecter (//attach//) à la session 0 : ''tmux a -t 0''.
La barre du bas affiche, par défaut :
* l'ID de session : ''[0]''
* l'ID de la fenêtre : 0
* le nom de la commande lancée dans la fenêtre courante ; au début c'est le terminal par défaut, ''bash'' par exemple
* le flag ''*'' qui indique quelle fenêtre est affichée
Par exemple : ''[0] 0:bash*''
Lorsqu'on est dans une session ''tmux'', on utilise le préfixe (la séquence de touche) ''Controle + b'' pour indiquer à TMUX que ce qui va suivre est une instruction le concernant.
=====Les raccourcis=====
====Session====
Une fois la session lancée (''tmux'' exécuté), on obtient un terminal lancé automatiquement dans une fenêtre (ou un onglet). Toutes les commandes sont à saisir en les préfixant de ''Ctrl + b'' (par défaut) suivi de :
* ''c'' : pour **c**réer un nouvel onglet ; ceux-ci sont affichés et numérotés dans la barre en bas de la fenêtre.
* '','' : renommer l'onglet courant
* '''' : aller à l'onglet # (leur # est affiché devant leur nom, en bas de la fenêtre de la session)
* ''&'' : tuer l'onglet courant
* ''d'' : se **d**étacher de la session courante. On sort de TMUX mais notre session continue de tourner en fond, avec les commandes qu'on a lancées dedans.
* '')'' : se connecter à la session suivante, si elle existe
* ''['' : rentre dans un mode qui permet de scroller dans l'historique de la fenêtre (''q'' pour quitter ce mode). On peut même directement presser ''PgUp'' ou ''PgDown'' pour entrer directement dans ce mode.
====Panels====
Pour afficher plusieurs terminaux dans une même fenêtre, on va splitter celle-ci pour créer des panneaux ou volets (panels) :
* ''%'' split vertical
* ''"'' split horizontal
* '''' : interverti l'organisation du panel (split vertical / horizontal)
* ''flèches directionnelles'' : se déplacer entre les panels
* ''Ctrl'' ou ''Alt + flèches dir'' : redimensionner le panel courant
* ''o'' : sélectionner le panel suivant
* ''Ctrl + o'' : inverser l'emplacement de 2 panels
* ''q'' : afficher les IDs des panels
* '''' : sélectionner le panel d'ID ''''
* ''z'' : afficher le panel courant en plein écran (même chose pour quitter le plein écran)
* ''!'' : placer le panneau courant dans un nouvel onglet
* '':join'' : permet de joindre un terminal déterminé (on peut le spécifier avec ses IDs), par ex : '':join -v -s 3.0 -p 50'' pour joindre le panneau #0 de l'onglet #3 et l'ajouter dans un split **v**ertical découpé à 50% de la hauteur du panneau courant.
=====Références=====
* [[https://tmuxcheatsheet.com/|Tmux Cheatsheet]]