bambouville

tmux

Tessera habla el modo control de tmux (tmux -CC) de forma nativa: las ventanas y los paneles son elementos de interfaz de primera clase, no un passthrough de texto. Requiere tmux instalado en el servidor.

Por qué tmux

Con una sesión respaldada por tmux, el shell vive en el servidor. Cierra Tessera, pierde el wifi, cambia a datos móviles, duerme el dispositivo: nada de eso mata tu trabajo. Vuelve a conectar y estarás exactamente donde lo dejaste.

Conectarse

El modo de inicio tmux automático se conecta a (o crea) una sesión propia del host con un nombre determinista tessera-XXXXXXXX, recordado incluso si reinstalas la app. tmux con nombre se conecta a un nombre de sesión que eliges tú. Ambos se definen por host en el editor de hosts.

El nombre determinista hace que dos de tus dispositivos que usen la misma entrada de host aterricen en la misma sesión de tmux — que es lo que hace que traspasar una sesión entre ellos no tenga costuras.

Si tmux no llega a arrancar, Tessera no te deja esperando: un host sin tmux instalado, una sesión de tmux que no consigue iniciarse o unos dotfiles que ya hacen exec tmux al iniciar sesión te dejan en un shell simple con un aviso que nombra el motivo («este host arranca su propio tmux al iniciar sesión: se muestra esa sesión como un terminal simple»). Consulta cuando una conexión se atasca.

Ventanas

Las ventanas de tmux aparecen como pestañas en la barra superior de la sesión, en orden de índice. Un botón + en la barra abre una ventana nueva; cuando hay más pestañas de las que caben, un control de desbordamiento lista todas las ventanas. Cada pestaña lleva un control de cierre, y las ventanas se pueden renombrar desde la paleta ⌘K — el nombre es común a todos los clientes conectados a la sesión.

atajo acción
⌘T ventana nueva
⇧⌘W cerrar panel / ventana
⇧⌘[ / ⇧⌘] ventana anterior / siguiente
⌘1⌘9 saltar a la ventana 1–9

Paneles

Los paneles son paneles de tmux de verdad, gobernados a través del modo control.

atajo acción
⌘D dividir lado a lado
⇧⌘D dividir apilados
⌘[ / ⌘] recorrer los paneles
⇧⌘↩ ampliar / reducir el panel
Una sesión de tmux en Tessera con tres pestañas de ventana en la parte superior y dos paneles en paralelo: a la izquierda un shell con la salida de git log, a la derecha htop en marcha.
Dos paneles en una misma ventana de tmux, con las ventanas de la sesión como pestañas arriba. Cada panel lleva su propia barra de título y su control de cierre.

En el iPhone

Conectarse desde un iPhone nunca recompone tu disposición: las divisiones y el estado de zoom se quedan como los dejó la pantalla más grande, y el teléfono muestra un panel cada vez a través del selector. Consulta tessera en el iPhone.

Mosh + tmux

Con mosh, el terminal va sobre UDP mientras las pestañas de tmux usan un segundo canal lateral SSH. Ese canal lateral es también el que lleva el reenvío de puertos en los hosts con mosh — y el historial real.

Campanas

El cableado del modo control de tmux es lo que permite a Tessera encaminar las campanas del terminal a las notificaciones — por ventana, y marcando la pestaña que la emitió.

Detalles a tener en cuenta

  • Las variables de entorno y los fragmentos de inicio solo se ejecutan cuando arranca la sesión de tmux. Después de cambiarlos, cierra la sesión en el servidor (tmux kill-session) para aplicar los cambios.
  • Conectarse desde Tessera y desde otro cliente a la vez funciona, pero ambos clientes comparten las mismas ventanas — eso es tmux, no un error. Cuando el otro cliente es tu propio iPhone o iPad, Tessera gestiona la disputa con educación — consulta recuperar el control.
  • Si la salida parece atascada tras redibujados intensos, ⌘R (iPad) fuerza un repintado completo. Y si alguna vez una sesión se conecta sin pintar nada, Tessera lo dice («pulsa cualquier tecla para despertarla») — tu primera pulsación levanta la pantalla.