# 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](https://bambouville.com/docs/es/connections/#modos-de-inicio).

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](https://bambouville.com/docs/es/continuity/) 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](https://bambouville.com/docs/es/connections/#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.](https://bambouville.com/docs/assets/img/tmux-panes.png)

*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](https://bambouville.com/docs/es/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](https://bambouville.com/docs/es/port-forwarding/#mosh-y-el-reenvío) en los hosts con
mosh — y el [historial real](https://bambouville.com/docs/es/mosh/#historial-real).

## Campanas

El cableado del modo control de tmux es lo que permite a Tessera encaminar
las campanas del terminal a las [notificaciones](https://bambouville.com/docs/es/notifications/) — 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](https://bambouville.com/docs/es/continuity/#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.
