tmux, cmux et Starship : mon setup terminal au quotidien
Le terminal reste mon outil principal de la journée. J’y passe plus de temps que dans n’importe quel autre logiciel, IDE compris. Autant qu’il soit agréable à regarder et efficace à utiliser.
J’ai convergé vers trois briques qui tournent sur mes trois Macs : tmux pour la persistance des sessions, cmux comme terminal principal, et Starship pour le prompt. Le tout configuré de façon identique via sync manuel des fichiers de conf.
tmux : ne plus jamais perdre une session
tmux est un multiplexeur de terminal. Vous lancez une session, vous y attachez plusieurs fenêtres et panneaux, et elle continue à tourner même après avoir fermé le terminal.
Le cas d’usage qui me convertit : je lance un build long ou une session Claude Code dans tmux, je ferme mon laptop, je me reconnecte en SSH plus tard depuis un autre poste, et je retrouve exactement l’état où j’étais parti. tmux attach et c’est reparti.
Installation minimale :
brew install tmux
Les raccourcis à retenir sont Ctrl+b d pour détacher, tmux ls pour lister les sessions actives, tmux attach -t nom pour se rattacher. Avec les plugins resurrect et continuum, tmux sauvegarde automatiquement l’état des panneaux et les restaure après un redémarrage complet de la machine.
L’autre atout majeur : scripter son environnement de travail. Vous ouvrez un fichier .sh, vous décrivez la disposition une fois pour toutes, et vous retrouvez exactement le même layout à chaque fois. Un exemple sur un projet web :
#!/bin/bash
tmux new-session -d -s projet -x 220 -y 50
tmux send-keys -t projet 'claude' C-m
tmux split-window -h -t projet
tmux send-keys -t projet 'npm run dev' C-m
tmux split-window -v -t projet
tmux send-keys -t projet 'npm run server' C-m
tmux split-window -v -t projet
tmux send-keys -t projet 'tail -f logs/app.log' C-m
tmux attach -t projet
Résultat : un panneau Claude Code à gauche, le serveur UI en haut à droite, le backend dessous, les logs en bas. Un seul script à lancer, plus jamais la flemme de tout remettre en place après une mise à jour macOS ou un redémarrage. L’environnement se reconstitue en trois secondes, identique à hier.
cmux : le terminal pensé pour les agents IA
cmux est un terminal macOS natif basé sur Ghostty, avec une couche d’intégration pour les agents IA comme Claude Code. Il remplace iTerm2 dans mon setup depuis quelques semaines.
Ce qui change par rapport à un terminal classique : les workspaces sont des containers visuels qui regroupent plusieurs surfaces (onglets), avec un navigateur intégré accessible en Cmd+Shift+L. Pratique pour garder la doc d’un projet à droite et le code à gauche sans sortir du terminal.
La CLI cmux permet de scripter l’interface. cmux notify --title "Build OK" --body "Tests passés" envoie une notification système depuis un script shell. cmux send "texte" injecte du texte dans un terminal actif - utile pour piloter une session depuis un autre outil. Dans la même logique que Claude Code Remote Control, mais en local.
L’installation demande un symlink pour accéder à la CLI :
sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux
Starship : un prompt qui dit l’essentiel
Starship est un prompt shell écrit en Rust, configurable via un seul fichier TOML. Il affiche dynamiquement ce qui compte selon le contexte : branche Git, version Node ou Python du projet courant, docker context, heure, état de la dernière commande.
Ma config occupe deux lignes. La première regroupe les infos en segments colorés : logo Apple, utilisateur, dossier, branche Git, versions de langage, heure. La seconde ne contient que le chevron ❯ sur lequel vous tapez. Résultat : peu importe la profondeur du dossier, vous avez toujours la largeur complète pour saisir vos commandes.
Installation :
brew install starship
brew install --cask font-meslo-lg-nerd-font
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
Un détail qui m’a surpris : pas besoin de changer la police du terminal pour voir les icônes. Dès qu’une Nerd Font est installée dans ~/Library/Fonts/, macOS fait le fallback automatique pour les glyphes manquants. Menlo ou Monaco continuent d’afficher correctement le logo Apple et les icônes Git sans rien toucher aux préférences iTerm2 ou cmux.
Pourquoi ce trio tient la route
Les trois outils sont légers, configurables par fichiers versionnables, et fonctionnent en SSH aussi bien qu’en local. Quand j’ajoute une machine au setup, je copie trois fichiers : .zshrc, .tmux.conf, ~/.config/starship.toml. Cinq minutes plus tard, l’environnement est identique.
Pour un développeur qui alterne entre plusieurs projets, plusieurs machines et plusieurs sessions IA en parallèle, cette combinaison évite de se perdre. tmux pour la persistance, cmux pour l’interface, Starship pour savoir d’un coup d’œil où on est.
Je le conseille à toute personne qui passe plus de deux heures par jour dans un terminal et qui trouve que son setup actuel est un peu tristounet.