Traduction(s): ?Anglais - Français - |

Tmux

Tmux est un multiplexeur de terminal au même titre que screen. J'essaye actuellement de le prendre en main pour pouvoir le comparé avec screen au niveau des perf mais aussi pour les fonctionnalités =)

À défaut de voir le gain de performances dans l'immédiat, je vais déjà essayer de retrouver un fonctionnement proche de celui que j'avais avec screen.

Installation

   1 aptitude install tmux

Utilisation

Commandes

   1 # Créer une session
   2 tmux
   3 # Se connecter automatiquement à une session (si une seule existante)
   4 tmux attach

Raccourcis

La combinaison par défaut pour appeler les raccourcis avec CTRL+b:

CTRL+b ,

Renommer le terminal courant

CTRL+b "

Split vertical du terminal courant en deux + ouverture d'un terminal dans le nouveau panel

CTRL+b %

Split horizontal du terminal courant en deux + ouverture d'un terminal dans le nouveau panel

CTRL+b o

Aller au panel suivant

CTRL+b

Aller au panel précédent

CTRL+b {flèches directionnelles}

Aller au prochain panel qui se trouve dans la direction de la flèche

CTRL+b ;

Basculer dans le dernier panel actif

CTRL+b !

Créer un nouveau terminal à partir du panel courant

CTRL+b x

Fermer le panel courant

CTRL+b c

Créer un nouveau terminal

CTRL+b n

Aller au terminal suivant

CTRL+b p

Aller au terminal précédent

CTRL+b w

Afficher la liste des terminaux disponibles

CTRL+b d

Détacher tmux

CTRL+b :

Ouvrir l'invite de commande

CTRL+b (

Aller à la session précédente

CTRL+b )

Aller à la session suivante

Options et paramètres

  1. Pour commencer une configuration personnalisée de Tmux, il faut savoir qu'il existe des options dites globales, qui correspondent aux options qui sont appliquées partout, suivi des options non-globales qui si elles sont définies permettent de redéfinir le comportement dans un cas précis (pour telle fenêtre, ...). Pour spécifier une options globales, il suffit d'utiliser l'argument -g:

       1 # Background bleu pour toutes les fenêtres dans la barre de statut
       2 setw -g window-status-bg blue
       3 # Background vert pour la fenêtre en cours dans la barre de statut
       4 setw window-status-bg green
    
  2. Ensuite, il y a deux types d'options, les options de sessions et les options de fenêtres. Les options de sessions gèrent la façon dont sont gérées les sessions (... logique =)) et le fonctionnement général de Tmux. Mais le point à retenir, c'est que les fenêtres sont incluses dans une session d'où l'intérêt d'avoir des options propres à celles-ci. On utilise respectivement:

       1 # Pour les options de sessions: set alias de set-option
       2 set -g status-bg blue
       3 set-option -g status-fg white
       4 # Pour les options de fenêtres: setw alias de set-window-option
       5 setw -g window-status-bg black
       6 set-window-option -g window-status-fg red
    
  3. D'autres paramètres sont disponibles, comme -d, -t, .... Quelques uns sont expliqués avec exemple dans le fichier de configuration ci-dessous, sinon le manuel permettra de ravir ceux qui recherchent les meilleures configurations =)

Fichier de configuration

Dans le fichier de configuration, il y a possibilités d'utiliser plusieurs sessions (chacune aura des terminaux spécifiques qui sont définis en fin de fichier cf ci-dessous). Pour me connecter à la session 0, j'utilise:

   1 tmux attach -d -t 0

Si on ne spécifie pas de session, Tmux lira tout de même le fichier ~/.tmux.conf et créera une nouvelle session. Ça permet au minimum de retrouver sa configuration.

Note: Avant de se lancer dans la rédaction d'un fichier de configuration ou pour éviter de le recharger à chaque fois, l'ensemble des paramètres peut être testé à partir de l'invite de commande de Tmux (CTRL+b :).

   1 ###############--------------------------------------------------------------
   2 ##
   3 ## Fichier de configuration : ~/.tmux.conf
   4 ## 0.2: 12-02-22
   5 ##
   6 ## By Gardouille
   7 ##
   8 ## Ce fichier est lu automatiquement par tmux si il est placé dans le homedir
   9 ##
  10 ##
  11 ## Utilisation:
  12 ##  tmux attach -d -t SESSION_ID
  13 ##
  14 ## Dépendances:
  15 ##  vlock : permet de verrouiller tmux en cas d'inactivé ou d'appel (CTRL+b x)
  16  
  17  
  18 #### statusbar --------------------------------------------------------------
  19  
  20 # Couleur du foreground (premier plan)
  21 set -g status-fg yellow
  22 # Couleur du background (arrière plan)
  23 set -g status-bg black
  24  
  25 ## Terminaux par défaut
  26 # Couleur du foreground
  27 set-window-option -g window-status-fg cyan
  28 # Couleur du background
  29 set-window-option -g window-status-bg default
  30 # Attribut
  31 #bright/bold: gras
  32 #dim:
  33 #underscore: souligné
  34 #blink: "clignotant"?
  35 #reverse: Inverse les couleurs background et foreground
  36 #hidden: caché
  37 #italics: italique
  38 set-window-option -g window-status-attr dim
  39  
  40 ## Terminal actif
  41 # Couleur du foreground
  42 set-window-option -g window-status-current-fg yellow
  43 # Couleur du background
  44 set-window-option -g window-status-current-bg cyan
  45 # Attribut (cf ci-dessus pour la liste)
  46 set-window-option -g window-status-current-attr bold
  47  
  48 ## Terminal avec notification
  49 # Couleur du foreground
  50 # Couleur du background
  51 # Attribut
  52 #setw -g window-status-alert-attr default
  53 #setw -g window-status-alert-fg red
  54 #setw -g window-status-alert-bg default
  55  
  56 ## Panel par défaut
  57 set -g pane-border-fg white
  58 #set -g pane-border-bg black
  59  
  60 ## Panel actif
  61 set -g pane-active-border-fg cyan
  62 #set -g pane-active-border-bg green
  63  
  64  
  65 # Centrer la liste des terminaux
  66 #set -g status-justify centre
  67  
  68 # Partie gauche de la barre
  69 # vide
  70 set -g status-left ""
  71  
  72 # Partie droit de la barre
  73 # %H:%M:%S : Affiche de l'heure (actualisation lors de manipulation ou en fonction de la valeur de status-interval)
  74 set -g status-right "[#[fg=cyan,bright]%H:%M:%S#[default]]"
  75  
  76 # Si tmux est lancé hors de Xorg, on affiche des informations supplémentaires
  77 ## Partie gauche de la barre
  78 # #H : le nom de la machine en vert
  79 if '[ -z "$DISPLAY" ]' 'set -g status-left "[#[fg=green]#H#[default]]"'
  80 ## Partie droite de la barre
  81 # #(cat /proc/loadavg || cut -d \" \" -f 1,2,3) : charge CPU en magenta
  82 # %a %Y-%m-%d %H:%M : Le jour, la date d'aujourd'hui et l'heure en cyan et gras
  83 if '[ -z "$DISPLAY" ]' 'set -g status-right "[ #[fg=magenta]#(cat /proc/loadavg || cut -d \" \" -f 1,2,3)#[default] ][ #[fg=cyan,bright]%a %Y-%m-%d %H:%M:%S #[default]]"'
  84 if '[ -z "$DISPLAY" ]' 'set -g status-right-length 50'
  85  
  86 # Raffraichissement de la barre d'état toutes les X secondes
  87 set -g status-interval 1
  88  
  89  
  90  
  91  
  92  
  93 #### keybindings --------------------------------------------------------------
  94  
  95 ## Redéfinition de la combinaison principale par celle de screen (CTRL+a)
  96 unbind C-b
  97 set -g prefix ^A
  98 bind a send-prefix
  99  
 100 ## Redéfinition des raccourcis:
 101 # Renommer le terminal courant
 102 unbind A
 103 bind A command-prompt "rename-window %%"
 104  
 105 # Aller au terminal précédent (CTRL+a)
 106 unbind ^A
 107 bind ^A last-window
 108  
 109 # Aller au terminal suivant (CTRL+n)
 110 unbind ^N
 111 bind ^N next-window
 112  
 113 # Aller au terminal précédent (CTRL+p)
 114 unbind ^P
 115 bind ^P previous-window
 116  
 117 # Créer un nouveau terminal (CTRL+c)
 118 unbind ^C
 119 bind ^C new-window
 120  
 121 # Détacher tmux
 122 unbind ^D
 123 bind ^D detach
 124  
 125 # Verrouiller tmux
 126 unbind ^X
 127 bind ^X lock-server
 128 unbind x
 129 bind x lock-server
 130  
 131  
 132 ## Nouveaux raccourcis clavier pour les terminaux
 133 # Aller au terminal n°{1,12} avec les touches F{1-12}
 134 #bind ... selectw -t:0
 135 #bind C-& selectw -t:0
 136 bind F1 selectw -t:1
 137 bind F2 selectw -t:2
 138 bind F3 selectw -t:3
 139 bind F4 selectw -t:4
 140 bind F5 selectw -t:5
 141 bind F6 selectw -t:6
 142 bind F7 selectw -t:7
 143 bind F8 selectw -t:8
 144 bind F9 selectw -t:9
 145 bind F10 selectw -t:10
 146 bind F11 selectw -t:11
 147 bind F12 selectw -t:12
 148  
 149 # Pour basculer entre les différents terminaux, directement avec les touches F{1,12} (sans utiliser CTRL+a), on peut utiliser ça:
 150 #bind -n F1 select-window -t 1
 151 #bind -n F2 select-window -t 2
 152 #bind -n F3 select-window -t 3
 153 #bind -n F4 select-window -t 4
 154 #bind -n F5 select-window -t 5
 155 #bind -n F6 select-window -t 6
 156 #bind -n F7 select-window -t 7
 157 #bind -n F8 select-window -t 8
 158 #bind -n F9 select-window -t 9
 159 #bind -n F10 select-window -t 10
 160 #bind -n F11 select-window -t 11
 161 #bind -n F12 select-window -t 12
 162  
 163  
 164 ## Nouveaux raccourcis clavier pour les splits/panels
 165 # split windows comme vim
 166 # Définition des splits comme dans vim (s: vertical et v: horizontal)
 167 #bind s split-window -v
 168 bind v split-window -h
 169  
 170 # Permet de se déplacer entre les panels avec les touches hjkl
 171 # h: gauche
 172 # j: bas
 173 # k: haut
 174 # l: droite
 175 bind h select-pane -L
 176 bind j select-pane -D
 177 bind k select-pane -U
 178 bind l select-pane -R
 179  
 180 # Redimentionnement des panels comme vim
 181 # Possibilité de changer la valeur "2" par ce qu'on veut
 182 # < : agrandissement vers la gauche
 183 # > ''': agrandissement vers la droite
 184 # - : agrandissement vers le bas
 185 # + : agrandissement vers la haut
 186 bind < resize-pane -L 2
 187 bind > '''resize-pane -R 2
 188 bind - resize-pane -D 2
 189 bind + resize-pane -U 2
 190  
 191 # Aller au panel suivant avec Tab
 192 unbind Tab
 193 bind Tab select-pane -t:.+
 194 # Aller au panel précédent avec SHIFT+Tab
 195 unbind BTab
 196 bind BTab select-pane -t:.-
 197  
 198 ## Raccourcis clavier pour les sessions
 199 # Proposer la liste des sessions avec choix possible
 200 unbind _
 201 bind _ choose-session
 202 unbind C-_
 203 bind C-_ choose-session
 204  
 205  
 206  
 207 #### Configuration --------------------------------------------------------------
 208 # Numéroter les terminaux à partir de 1
 209 #set -g base-index 1
 210  
 211 # Verrouillage de la session après inactivité (en s)
 212 set -g lock-after-time 3600
 213 # pour que le lock marche sous linux (apt-get install vlock)
 214 set -g lock-command vlock
 215  
 216  
 217 #### Session --------------------------------------------------------------
 218 # -sX : numéro de la session
 219 # -nNOM_TERMINAL : nom du terminal
 220 # -d : indique à tmux de ne pas attacher la session et de ne pas prendre les
 221 #   nouvelles fenêtres comme une fenêtre courante
 222 # -t0:X : modifier les paramètres de la fenêtre X de la session 0. !Attention
 223 #   la fenêtre doit exister avant de pouvoir modifier ses paramètres!
 224 # monitor-activity : permet de mettre en avant une fenêtre quand son contenu reçoit un événement
 225 #
 226 # Nouvelle session avec la première fenêtre qui exécute su
 227 new -d -s0 -nr00t 'exec su'
 228 #setw -t0:0 aggressive-resize on
 229 # Nouvelle fenêtre 0:1 avec htop
 230 neww -d -nht0p 'exec htop'
 231 #setw -t0:1 monitor-activity on
 232 # Nouvelle fenêtre 0:2 avec irssi
 233 neww -d -nIrssI 'exec irssi'
 234 #neww -d -nNO_IRSSI
 235 # Nouvelle fenêtre 0:3 dans /media
 236 setw default-path /media/
 237 neww -d -nUdata
 238 # Nouvelle fenêtre 0:4 dans ~
 239 setw default-path /home/darker/
 240 neww -d -nh0me
 241 setw -t0:4 aggressive-resize on
 242  
 243 # Fenêtre par défaut: 2
 244 select-window -t 2
 245  
 246 new -d -s1 -ntest
 247 #neww -d -nht0p 'exec htop'
 248 #neww
 249  
 250 # Pour se connecter à une session, on peut utiliser:
 251 # tmux attach -d -t Xj
 252 

Un petit aperçu du rendu:

tmux_01.png

Utilisation Avancées

Les panels

En plus des quelques raccourcis vu ci-dessus, les panels offrent de nombreuses autres fonctionnalités:

La commande suivante: (CTRL+b : )

set-window-option synchronize-panes on

Activer la synchronisation de la saisie clavier entre tous les panels présent

Les sessions

Pour les gros aficionados de la ligne de commande, Tmux permet de disposer de plusieurs sessions. Pour rappel la session est ce qui inclut les différentes fenêtres. Mais avec Tmux, c'est surtout la possibilité de switcher facilement entre les différentes sessions.

CTRL+b (

Basculer à la session précédente

CTRL+b )

Basculer à la session suivante

CTRL+b s

Lister les sessions disponibles

choose-session

Propose une liste des sessions disponibles avec la possibilité d'en sélectionner une

CTRL+b d

Détacher la session

Pour se connecter à une session, on peut utiliser:

   1 # Se connecter automatiquement à la dernière session détachée:
   2 tmux attach
   3 # Se connecter à la session 3
   4 tmux a -t 3
   5 # a, attach et attach-session sont similaires
   6 

Mode Copie

Ce mode permet (au moins?) deux fonctionnalités particulièrement intéressantes:

CTRL+b [

Ouvrir le mode copie à l'emplacement du curseur

CTRL+b PG_UP

Ouvrir le mode copie en remontant d'une page dans l'historique de la fenêtre

CTRL+b ]

Copier le dernier buffer

CTRL+b ='

Ouvrir la liste des buffers disponibles et copie celui sélectionné

en mode copie CTRL+SPACE

Commencer la sélection

en mode copie RETURN

Copier la sélection

en mode copie q,Échap

Quitter le mode copie sans copier la sélection dans le buffer

en mode copie Flèches directionnelles

Déplacer le curseur

en mode copie PAGE_{UP,DOWN}

Remonter/Descendre d'une page dans l'historique

en mode copie CTRL+a

Aller en début de ligne

en mode copie CTRL+e

Aller en fin de ligne

Le déplacement et plus généralement le comportement de Tmux peut être modifié pour ressembler à ceux que l'on retrouve dans vi ou emacs, voir le manuel pour appliquer ces modifications.

Voir aussi