Contents
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
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
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:
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:
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:
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:
Mode Copie
Ce mode permet (au moins?) deux fonctionnalités particulièrement intéressantes:
- parcourir l'historique
- copier / coller du texte entre les différentes fenêtres
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.