# Tmux

[Tmux](https://github.com/tmux/tmux/wiki) est un multiplexeur de terminal.
Il permet d'utiliser plusieurs terminaux virtuels dans une seule fenêtre de terminal ou une session sur un terminal distant.

## Ligne de commande

### Lancement

Rien de plus simple :
```bash
tmux
```

Pour nommer une session :
```bash
tmux new-session -s <nom de la session>
```

### Voir les sessions tmux existantes

```bash
tmux ls
```

### Se rattacher à une session tmux existante

S’il n’y a qu’une seule session, ou si vous voulez vous rattacher à la dernière auquelle vous étiez rattaché :
```bash
tmux at
```

Si vous souhaitez cibler une autre session :
```bash
tmux at -t <nom de la session>
```

Bonus : vous pouvez être plusieurs personnes sur une même session.
C’est très pratique quand on doit faire des manipulations à plusieurs, ou dans un but didactique.

### Couper une session tmux existante

S’il n’y a qu’une seule session, ou si vous voulez couper la dernière auquelle vous étiez rattaché :
```bash
tmux kill-session
```

Si vous souhaitez cibler une autre session :
```bash
tmux kill-session -t <nom de la session>
```

## Aide

Faites `Ctrl`+`b` puis `?` et tmux vous affichera une liste de commande accesibles avec des raccourcis claviers

## Raccourcis claviers usuels

### Se détacher de la session tmux

Tmux peut continuer à fonctionner même quand on est déconnecté ou qu’on se détache de la session, ce qui est très pratique pour :
- les connexions réseaux moisies qui vous déconnectent de votre session SSH
- lancer une commande qui va durer longtemps

`Ctrl`+`b` puis `d`

### Ouvrir une nouvelle fenêtre

`Ctrl`+`b` puis `c`

### Naviguer entre les fenêtres

`Ctrl`+`b` puis `n` (-> `next`) pour passer à la fenêtre suivante.

`Ctrl`+`b` puis `p` (-> `previous`) pour passer à la fenêtre précédente

### Renommer une fenêtre

`Ctrl`+`b` puis `,`, vous aurez un prompt dans la barre en bas, tapez ce que vous voulez et appuyez sur la touche `Entrée`.

Pour sortir du prompt sans valider, appuyez sur la touche `Esc`.

### Créer un nouveau panneau

#### En coupant la fenêtre horizontalement

Le nouveau panneau sera créé à droite du panneau courant.

`Ctrl`+`b` puis `%`

#### En coupant la fenêtre verticalement

Le nouveau panneau sera créé en dessous du panneau courant.

`Ctrl`+`b` puis `"`

### Zoomer sur un panneau

Si les panneaux sont pratiques, on a parfois envie d’en prendre un et de l’avoir temporairement en plein écran. Pour ça :

`Ctrl`+`b` puis `z`

Et on utilise le même raccourci pour remettre le panneau en petit comme avant.

### Naviguer entre les panneaux

`Ctrl`+`b` puis utiliser les flèches du clavier

## Commandes

Pour entrer en mode commande, faites `Ctrl`+`b` puis `:`.
Vous aurez un prompt dans la barre en bas.

### Afficher toutes les commandes disponibles

Utiliser la commande `list-commands`.

### Changer le répertoire de départ

Quand on ouvre un tmux, chaque nouvelle fenêtre ou nouveau panneau s’ouvrira dans le répertoire depuis lequel vous avez créé le tmux.

Pour changer ce répertoire de départ, utiliser la commande `attach -c /le/dossier/que/vous/voulez`.

### Afficher les variables d’environnement de la session

Utilisez la commande `show-environnement` ou son alias `showenv`.

Ce sont les variables d’environnement de tmux : il y a aussi les variables d’environnement du système, qui sont copiées par tmux au démarrage d’une session et qui sont fusionnées avec les variables d’environnement de tmux, celles-ci ayant la priorité si une variable existe dans les deux environnements.

### Paramétrer une variable d’environnement pour la session

Pour modifier ou ajouter une variable d’environnement à la session, utilisez la commande `set-environnement NOM_VAR valeur` ou son alias `setenv NOM_VAR valeur`.