bambouville

tmux

Tessera parle nativement le mode contrôle de tmux (tmux -CC) : fenêtres et volets sont des éléments d'interface à part entière, pas un simple relais de texte. Cela nécessite tmux installé sur le serveur.

Pourquoi tmux

Avec une session adossée à tmux, le shell vit sur le serveur. Fermez Tessera, perdez le Wi-Fi, passez au cellulaire, mettez l'appareil en veille — rien de tout cela ne tue votre travail. Reconnectez-vous et vous êtes exactement là où vous vous étiez arrêté.

Attachement

Le mode de lancement tmux automatique s'attache à (ou crée) une session par hôte au nom déterministe tessera-XXXXXXXX, retenu même après une réinstallation de l'app. tmux nommé s'attache à un nom de session que vous choisissez. Les deux se règlent par hôte dans l'éditeur d'hôtes.

Le nom déterministe fait que deux de vos appareils utilisant la même entrée d'hôte arrivent dans la même session tmux — c'est ce qui rend le transfert d'une session entre eux transparent.

Si tmux ne démarre pas, Tessera ne vous laisse pas attendre : un hôte sans tmux installé, une session tmux qui échoue au démarrage ou des dotfiles qui font déjà exec tmux à la connexion vous déposent tous dans un shell simple, avec une bannière qui en nomme la raison (« cet hôte démarre son propre tmux à la connexion — cette session est affichée comme un terminal simple »). Voir quand une connexion bloque.

Fenêtres

Les fenêtres tmux apparaissent en onglets dans la barre supérieure de la session, dans l'ordre des index. Un bouton + dans la barre ouvre une nouvelle fenêtre ; quand il y a plus d'onglets que de place, une commande de débordement liste toutes les fenêtres. Chaque onglet porte une commande de fermeture, et les fenêtres se renomment depuis la palette ⌘K — le nom est partagé avec tous les clients attachés à la session.

raccourci action
⌘T nouvelle fenêtre
⇧⌘W fermer le volet / la fenêtre
⇧⌘[ / ⇧⌘] fenêtre précédente / suivante
⌘1⌘9 aller à la fenêtre 1–9

Volets

Les volets sont de vrais volets tmux, pilotés par le mode contrôle.

raccourci action
⌘D diviser côte à côte
⇧⌘D diviser l'un au-dessus de l'autre
⌘[ / ⌘] passer d'un volet à l'autre
⇧⌘↩ agrandir / réduire le volet
Une session tmux dans Tessera, avec trois onglets de fenêtre en haut et deux volets côte à côte : à gauche un shell affichant la sortie de git log, à droite htop en cours d'exécution.
Deux volets dans une même fenêtre tmux, avec les fenêtres de la session en onglets au-dessus. Chaque volet porte sa propre barre de titre et sa commande de fermeture.

Sur iPhone

S'attacher depuis un iPhone ne réorganise jamais votre disposition : divisions et état de zoom restent tels que le plus grand écran les a laissés, et le téléphone affiche un volet à la fois via le sélecteur. Voir tessera sur iPhone.

Mosh + tmux

En mosh, le terminal tourne sur UDP tandis que les onglets tmux empruntent un second canal SSH secondaire. Ce canal secondaire porte aussi la redirection de ports pour les hôtes mosh — et le véritable historique.

Cloches

C'est le câblage du mode contrôle de tmux qui permet à Tessera d'acheminer les cloches du terminal vers les notifications — par fenêtre, avec l'onglet qui sonne signalé.

Pièges

  • Les variables d'environnement et les extraits de démarrage ne s'exécutent qu'au démarrage de la session tmux. Après les avoir modifiés, fermez la session sur le serveur (tmux kill-session) pour prendre en compte les changements.
  • S'attacher depuis Tessera et depuis un autre client en même temps fonctionne, mais les deux clients partagent les mêmes fenêtres — c'est tmux, pas un bug. Quand l'autre client est votre propre iPhone ou iPad, Tessera gère la concurrence avec tact — voir reprendre la main.
  • Si la sortie semble coincée après de gros rafraîchissements, ⌘R (iPad) force un réaffichage complet. Et si une session s'attache sans jamais s'afficher, Tessera le dit (« appuyez sur n'importe quelle touche pour le réveiller ») — votre première frappe fait apparaître l'écran.