Construire en live, puis freeze đź§Š

Construire en live, puis freeze đź§Š

Une session tmux prend souvent sa forme en situation réelle: des panes changent de rôle, des fenêtres se regroupent, et des commandes sont corrigées, retirées ou conservées.

tmuxp devient utile quand cette structure se stabilise. Au lieu de figer la session trop tôt, construisez d’abord dans tmux, puis ne gardez que ce qui mérite d’être rejoué.

Projet tmuxp

Projet officiel: tmuxp/tmuxp

Configuration YAML spéculative au début, avant stabilisation en usage live

Workflow pratique

1. Démarrer une session tmux nommée

Créer ou rattacher une session tmux nommée. Le nom de session donne une cible stable pour se reconnecter, exporter et recharger.

Terminal zsh
$ tmux new-session -As sensors

sensors est un nom d’exemple dans cet article; la même approche fonctionne pour toute session tmux à préserver.

2. Façonner la session en usage réel

Utilisez la session et ajustez-la volontairement: gardez les panes réellement utiles, redimensionnez pour la lisibilité, renommez les fenêtres quand cela aide, puis réaffectez les panes au fil du travail.

Session tmux live après itérations sur panes et fenêtres, au moment où le layout est prêt à être sauvegardé

3. Exporter le layout validé

Quand le layout et les rĂ´les de panes sont assez stables, exportez la session en cours vers un workspace tmuxp.

Terminal zsh
$ tmuxp freeze sensors -o sensors.yaml

Workspace tmuxp exporté depuis la session en cours

Important

tmuxp freeze exporte une définition de workspace réutilisable depuis la session en direct et conserve une base structurelle fiable pour le reload. Ce n’est pas un checkpoint complet du runtime shell ni de l’état des processus de longue durée. Les commandes exportées peuvent inclure de l’activité temporaire de session en direct, qui peut nécessiter un cleanup.

Un export freeze peut avoir la bonne structure, mais contenir des commandes inadaptées à un démarrage reproductible. Gardez la structure panes/fenêtres et réécrivez uniquement la politique de replay.

YAML du workspace après ajustement de la politique de replay avec panes d’action staged et panes observateurs en auto-run

Dans ce sensors.yaml mis Ă  jour, la politique de replay devient explicite:

  • enter: false est appliquĂ© aux panes d’action pour prĂ©charger les commandes sans exĂ©cution automatique.
  • Les deux panes watch restent en auto-run car ce sont des panes d’observation.
  • start_directory: /workspace stabilise le contexte, et focus: 'true' atterrit sur une pane d’action staged.

Le YAML gelé reflète ce qui était actif au moment du freeze. C’est utile pour la structure, mais souvent trop bruité pour un démarrage reproductible.

4. Affiner le replay de façon optionnelle

L’affinage est optionnel. Si le comportement au reload est déjà correct, le fichier freeze suffit.

Quand un cleanup est nécessaire, traitez-le comme une phase d’édition explicite après export: conservez la structure, puis réécrivez seulement le comportement de replay.

  • Remplacez les commandes ponctuelles capturĂ©es en live par des commandes de dĂ©marrage intentionnelles, et utilisez les multi-line commands quand la lisibilitĂ© compte.
  • Gardez les panes manuelles explicites avec null / blank / pane.
  • PrĂ©chargez les commandes avec enter: false quand elles doivent ĂŞtre visibles sans auto-run.
  • DĂ©placez le setup partagĂ© vers shell_command_before (aussi ici).

Vérifier avant usage régulier

Avant usage régulier, faites un reload depuis YAML et vérifiez que le comportement correspond au fichier.

Terminal zsh
$ tmux has-session -t sensors 2>/dev/null && tmux kill-session -t sensors; tmuxp load ./sensors.yaml

Vérifiez que le reload passe, que la structure de panes correspond au layout gelé, et que le comportement des commandes suit la politique de replay définie. Sinon, ajustez le YAML concerné puis relancez.

Session rechargée depuis le workspace tmuxp et prête pour un usage répétable

Travaillez en direct jusqu’à stabiliser le layout, sauvegardez-le avec tmuxp freeze 🧊, puis affinez le YAML seulement là où la réutilisation crée encore de la friction.