Catégories
Devops

tmux

tmux comme Screen sont des multiplexeur de terminaux, ils permettent d’exploiter plusieurs terminaux sous forme d’onglets ou en écran partagé (split screen) au sein d’un seul et même terminal et surtout de créer des sessions distinctes (qui survivent aux déconnections).

Une fois tmux lancé, nous pouvons créer de nouveaux onglets ou splitter l’écran dans ces onglets en panneaux, combiné aux possibilités de créer des sessions les combinaisons sont nombreuses !

Sessions tmux

Il faut tout d’abord lancer tmux (qui fait apparaitre la barre tmux en bas du terminal) qui va créer une session par défaut, à partir de là il est possible d’envoyer des instructions à tmux (via la combinaison de touches CTRL + B) comme ouvrir un onglet, renommer l’onglet, partager l’écran etc.

  • tmux : lance tmux avec une session nommée 0 par défaut
  • tmux new -s nom_de_ma_session : lance tmux avec le nom de session spécifié
  • tmux a -t nom_de_ma_session : permet de se raccrocher à une session existante (suite à une déconnexion par ex)
  • tmux ls : liste les sessions
  • tmux kill-session -t nom_de_ma_session : kill la session (contenant toutes les fenêtres et onglets) nommé

Commandes tmux

La séquence CTRL + B permet d’envoyer une commande à tmux, suivi de la touche qui donnera l’instruction.
ex: CTRL + B puis c (pour créer un nouvel onglet)

Basics

  • c : créer un nouvel onglet (create)
  • , : renommer l’onglet en cours
  • x : killer le panneau en cours
  • d : se détacher d’une session

Écran splitté

  • % : split vertical
  • " : split horizontal
  • espace : cycle entre des layouts différents des panneaux
  • ALT + flèches : redimensionne le panneau en cours avec les flèches

Navigation

  • p et n : naviguer entre les onglets (previous et next)
  • w : liste les fenêtres et panneaux avec un aperçu et permet de naviguer graphiquement
  • o : passe au panneau suivant (cycle)
  • [ : permet de naviguer avec les flèches et Page Up/Down (et démarrer un copier/coller voir ci-dessous)

Trucs et astuces

copier/coller

tmux comporte une sort de presse-papier (clipboard) qui nous permet de faire du copier/coller entre les différents onglets/panneaux, par exemple si on souhaite copier du texte ou lien depuis lynx, il suffit:

  • d’être dans une session tmux
  • se positionner dans lynx pour copier le texte voulu avec
    CTRL + B + [
  • activer la sélection:
    Espace
  • sélectionner le texte à copier avec les flèches ou PageUp/Down
  • copier:
    Entrée
  • se positionner dans l’onglet/panneau tmux souhaité, dans un vim ou autre pour y coller le texte:
    CTRL + B + ]

source

Configuration avec ~/.tmux.conf

La configuration de tmux est définie dans le fichier ~/.tmux.conf.

scroll avec souris

Pour pouvoir scroller et utiliser un menu contextuel avec la souris dans le terminal:

set -g mouse on
setw -g aggressive-resize on

UI

set -g status-bg black
set -g status-fg white

conservation de l’historique

Lorsqu’on commence à utiliser tmux, on se rend vite compte que l’historique des commandes n’est pas conservée (dans le .bash_history par ex). C’est une fonctionnalité qu’il faut configurer:

set -g history-file ~/.tmux_history

env bash

Pour obtenir votre shell bash avec toutes ses variables d’env et la coloration:

set -g default-command bash
set -g default-terminal "tmux-256color"

Liens