feat(mirada): mirada-layout — motor de teselado del compositor Wayland

Rect + split (reparto exacto de píxeles), 4 modos de layout
(MasterStack, Monocle, Grid, Columns) con tile(), y Workspace:
ventanas en orden de teselado, foco cíclico, reordenado y
resolución de geometría. Determinista, agnóstico de Wayland/smithay.

22 tests. #![forbid(unsafe_code)].

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-20 17:24:48 +00:00
parent 737ae5a696
commit b975dc7919
9 changed files with 623 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
# modules/mirada/ — Compositor Wayland
**Propósito.** Un compositor Wayland teselante con aislamiento de
clientes (sobre `arje-incarnate`) y delegación de regiones. El cerebro
espacial —cómo se reparte la pantalla— se mantiene puro y aislado de
Wayland para poder probarlo sin un servidor gráfico.
## Crates
| crate | tipo | rol |
| --------------- | ---- | ------------------------------------------------------------ |
| `mirada-layout` | lib | Motor de teselado: `Rect`, modos de layout, `Workspace` (ventanas, foco) |
## mirada-layout
- `Rect` + `split` — reparto exacto de píxeles (sin pérdidas).
- `LayoutMode``MasterStack`, `Monocle`, `Grid`, `Columns`; `tile`
calcula el rectángulo de cada ventana.
- `Workspace` — ventanas en orden de teselado, foco cíclico, reordenado
(`move_focused_forward/backward`) y `layout` que resuelve la geometría.
- Determinista: misma pantalla + mismas ventanas → misma distribución.
## Dependencias
- `mirada-layout` ← sólo `serde`. `#![forbid(unsafe_code)]`.
- Cero Wayland, cero `smithay` — ese acoplamiento vive en los crates de
integración pendientes.
## Estado
`mirada-layout` implementado y verde (22 tests). **Pendiente** (la capa
que toca hardware/protocolo, no verificable en modo desatendido):
| crate pendiente | rol |
| ------------------ | ---------------------------------------------------- |
| `mirada-compositor`| integración `smithay`: superficies, buffers, salidas |
| `mirada-input` | teclado/ratón, atajos, asignación de foco |
| `mirada-sandbox` | aislamiento de clientes sobre `arje-incarnate` |
CRIU (congelar/restaurar ventanas) queda anotado como futuro.