65c88ccf25
El kernel deja de colocar las ventanas a mano: las tesela. El motor es mirada-layout — el mismo nucleo no_std que ordena el compositor Wayland de brahman, enlazado por path cruzando la frontera de workspace. Es el primer consumo REAL del nucleo compartido brahman <-> renaser. - kernel/compositor.rs: enlaza mirada-layout y calcula un marco por app con el algoritmo MasterStack, dentro del area de pantalla. - consola::volcar_marco centra el fotograma natural de la app dentro de su marco teselado (antes lo depositaba en region.x/y fijos). - ContextoCapacidades lleva marco + natural_ancho/alto; sys_render_frame valida el fotograma contra el tamaño natural. - cargar_userspace tesela con el compositor y pinta el escenario antes de encender las apps. Las apps NO cambian: el compositor reordena la pantalla sin que ninguna toque una instruccion. Verificado en QEMU (screendump): las cinco apps de genesis teseladas en MasterStack — hola como ventana maestra, el resto apiladas a la derecha, cada lienzo centrado en su panel. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
57 lines
2.5 KiB
Markdown
57 lines
2.5 KiB
Markdown
# renaser — Fase 8 :: El compositor teselante
|
|
|
|
Plan de ataque. Para el estado general ver `ROADMAP.md`; para la arquitectura,
|
|
`ARCHITECTURE.md`.
|
|
|
|
## El objetivo
|
|
|
|
Hasta la Fase 7, cada aplicación llevaba su región escrita a mano en el
|
|
Manifiesto de Génesis: cuatro coordenadas fijas (`region_x`, `region_y`,
|
|
`region_ancho`, `region_alto`). El kernel las leía y componía cada app en su
|
|
rectángulo, inmóvil — una disposición rígida, decidida en la siembra.
|
|
|
|
La Fase 8 entrega esa decisión a un COMPOSITOR. El kernel deja de colocar las
|
|
ventanas a mano: las **tesela**. El motor del teselado es `mirada-layout` — el
|
|
mismo núcleo `no_std` que ordena las ventanas del compositor Wayland de
|
|
brahman, enlazado por `path` cruzando la frontera de workspace. Una sola lógica
|
|
de teselado sirve a dos mundos: el escritorio sobre Linux y el kernel
|
|
bare-metal.
|
|
|
|
## Sub-fases
|
|
|
|
### 8a — El compositor tesela — ✅ HECHA
|
|
|
|
- **`compositor.rs`** — enlaza `mirada-layout` y calcula un marco por app con
|
|
el algoritmo `MasterStack`, dentro del área de pantalla (todo menos la franja
|
|
superior reservada a la consola).
|
|
- El kernel **centra** el fotograma natural de cada app dentro de su marco
|
|
teselado; las apps conservan su tamaño natural y no cambian una instrucción.
|
|
- `EntradaApp.region_ancho/alto` pasa a significar el tamaño NATURAL del lienzo
|
|
de la app; `region_x/y` quedan vestigiales — el compositor decide la posición.
|
|
|
|
### 8b — Teselado interactivo
|
|
|
|
- El teclado cicla en caliente los siete modos de `mirada-layout`
|
|
(`MasterStack`, `CenteredMaster`, `Spiral`, `Grid`, `Columns`, `Rows`,
|
|
`Monocle`).
|
|
- Re-teselar exige re-componer: las apps que sólo pintan en `init` necesitan
|
|
una señal de redibujado, o el kernel debe conservar su último fotograma para
|
|
recomponerlo en el marco nuevo.
|
|
|
|
### 8c — Foco y `Workspace`
|
|
|
|
- Adoptar el `Workspace` de `mirada-layout`: foco, orden-Z, alta y baja de
|
|
ventanas en vivo.
|
|
- Una ventana enfocada, resaltada; el teclado mueve el foco y promueve apps al
|
|
área maestra.
|
|
|
|
## Estructura de archivos
|
|
|
|
| archivo | estado | rol en la Fase 8 |
|
|
| --- | --- | --- |
|
|
| `kernel/src/compositor.rs` | **nuevo (8a)** | teselado con `mirada-layout` |
|
|
| `kernel/src/consola.rs` | a modificar (8a) | composición centrada en el marco |
|
|
| `kernel/src/wasm/mod.rs` | a modificar (8a) | `marco` + tamaño natural |
|
|
| `kernel/src/wasm/env.rs` | a modificar (8a) | validación contra el natural |
|
|
| `kernel/src/main.rs` | a modificar (8a) | el compositor en el arranque |
|