tmux — Guide pour humains 🖥️
tmux = terminal multiplexer. Tu peux avoir plusieurs terminaux dans une seule fenêtre, et surtout les sessions survivent à la fermeture du terminal.
Le concept clé : le préfixe
Toutes les commandes tmux commencent par Ctrl+B (le “préfixe”), puis une autre touche.
Appuie sur
Ctrl+B, relâche, puis appuie sur la touche suivante.
Les sessions
Une session = un environnement tmux indépendant qui tourne en arrière-plan.
tmux # Démarrer une nouvelle sessiontmux new -s monsite # Nouvelle session avec un nomtmux new-session -s kilo # Idem (forme longue)tmux new-session -s kilo 'kilo' # Créer ET lancer une commande directementtmux ls # Lister les sessions activestmux attach -t monsite # Rejoindre une session existantetmux kill-session -t monsite # Supprimer une sessionDetacher une session (la laisser tourner en fond) :
Ctrl+B puis D
Supprimer plusieurs sessions d’un coup
for s in session1 session2 session3; do tmux kill-session -t $s; doneLes fenêtres (comme des onglets)
| Raccourci | Action |
|---|---|
Ctrl+B C | Créer une nouvelle fenêtre |
Ctrl+B N | Fenêtre suivante |
Ctrl+B P | Fenêtre précédente |
Ctrl+B 0-9 | Aller à la fenêtre n° |
Ctrl+B W | Voir toutes les fenêtres |
Ctrl+B , | Renommer la fenêtre |
Les panneaux / panes (diviser l’écran)
| Raccourci | Action |
|---|---|
Ctrl+B % | Diviser verticalement (côte à côte) |
Ctrl+B " | Diviser horizontalement (haut/bas) |
Ctrl+B ↑ ↓ ← → | Naviguer entre les panneaux |
Ctrl+B X | Fermer le panneau actuel |
Ctrl+B Z | Zoom sur le panneau (toggle) |
Mémo ultra-court
Ctrl+B D → Detach (laisser tourner en fond)Ctrl+B C → New windowCtrl+B % → Split verticalCtrl+B " → Split horizontalCtrl+B X → Fermer paneSetup : sessions persistantes pour outils CLI
L’idée : une session tmux par outil (Claude, Gemini, Kilo…) qui tourne en permanence sur le Mac. Tu t’y connectes depuis n’importe où (iPhone via Echo/SSH, autre terminal…) et tu retrouves le contexte intact.
Script de démarrage ~/start-agents.sh
#!/bin/bash# Lance toutes les sessions si elles n'existent pas déjà
sessions=("claude:claude" "gemini:gemini" "kilo:kilo" "opencode:opencode")
for entry in "${sessions[@]}"; do name="${entry%%:*}" # Tout avant le ":" cmd="${entry##*:}" # Tout après le ":"
if ! tmux has-session -t "$name" 2>/dev/null; then tmux new-session -d -s "$name" tmux send-keys -t "$name" "$cmd" Enter echo "✓ Session '$name' démarrée" else echo "→ Session '$name' déjà active" fidonechmod +x ~/start-agents.sh./start-agents.shExplication du script
| Élément | Rôle |
|---|---|
sessions=(...) | Tableau : "nom:commande" |
%%:* | Extrait tout ce qui est avant le : → le nom |
##*: | Extrait tout ce qui est après le : → la commande |
has-session | Vérifie si la session existe déjà |
2>/dev/null | Cache le message d’erreur si elle n’existe pas |
-d | Crée en arrière-plan (detached) |
send-keys ... Enter | Simule une frappe clavier dans la session |
Connexion SSH directe vers une session (Echo / iPhone)
Dans ~/.ssh/config sur iPhone :
Host mac-claude HostName 100.x.x.x # IP Tailscale du Mac User thomas RequestTTY force RemoteCommand tmux attach -t claude
Host mac-gemini HostName 100.x.x.x User thomas RequestTTY force RemoteCommand tmux attach -t gemini
Host mac-kilo HostName 100.x.x.x User thomas RequestTTY force RemoteCommand tmux attach -t kiloTu tap le host dans Echo → t’arrives directement dans la session, outil chargé, contexte intact. 🎯
Le flag magique -A
tmux new-session -A -s kilo 'kilo'-A = attach si la session existe, crée sinon. Plus jamais d’erreur “session already exists”. Parfait pour les VPS.
Schéma de fonctionnement
Mac└── tmux session "claude" └── claude CLI en cours d'exécution ← tourne toujours ↑ ↑ attach depuis detach (Ctrl+B D) Echo / terminal ou fermer la fenêtreLa session vit sa vie sur le Mac. Toi tu fais juste te brancher (attach) ou te décrocher (detach) quand tu veux. Fermer le terminal ne tue pas la session.
Notes importantes
Ctrl+Bcapturé par l’outil ? Certains CLI (kilo, vim…) interceptent le raccourci. Insiste ou rechange le préfixe tmux.- Session vide au retour ? L’outil a planté. Relance-le manuellement depuis l’intérieur de la session.
- Taille du terminal : sans
-xet-y, tmux prend automatiquement la taille de ta fenêtre actuelle.