El escritorio se podía recorrer con el foco, pero no reordenar. La 8d lo hace manipulable: el orden de teselado se separa de la identidad. - Escritorio gana `orden: Vec<usize>` — una permutacion que dice que ventana ocupa cada celda. Mover una ventana cambia su celda, no su indice_app: conserva su canal de teclado y su ranura de estado. - aplicar_teselado reparte los marcos segun el orden. - Alt+Enter promueve la ventana enfocada a la celda maestra; Alt+H/Alt+L la reordenan. mover_foco recorre ahora el orden, no los indices crudos. Verificado en QEMU (sendkey): con memoriosa enfocada, Alt+Enter la promueve a maestra y hola baja a la pila; Alt+L la devuelve a la pila. El foco —el borde indigo— viaja siempre con la ventana, no con la celda. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
3.4 KiB
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— enlazamirada-layouty calcula un marco por app con el algoritmoMasterStack, 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/altopasa a significar el tamaño NATURAL del lienzo de la app;region_x/yquedan vestigiales — el compositor decide la posición.
8b — Teselado interactivo — ✅ HECHA
Alt+Espaciocicla en caliente los siete modos de teselado demirada-layout(MasterStack,CenteredMaster,Spiral, …).- Re-teselar exige re-componer. La solución: el kernel guarda una CACHÉ del
último fotograma de cada app —acotada al lienzo natural, reservada una sola
vez— y recompone desde ella. Una app que sólo pintó en su
initconserva su imagen a través de cualquier reordenación, sin enterarse del cambio.
8c — Foco y enrutamiento selectivo — ✅ HECHA
- Una ventana ENFOCADA, con borde índigo brillante; las demás, borde gris
mate.
Alt+J/Alt+Kpasean el foco entre las ventanas vivas. - El teclado deja de difundir a ciegas: una tecla ordinaria se entrega sólo a
la app enfocada; los mandos
Alt+…se consumen en la IRQ. - El registro
ESCRITORIOdel compositor cumple el papel delWorkspacedemirada-layout—ventanas, marcos, foco— sin adoptar su tipo: el kernel necesita además la caché de respaldo, que elWorkspaceno contempla.
8d — Manipulación de ventanas — ✅ HECHA
Escritoriosepara el ORDEN de teselado de la IDENTIDAD de las ventanas (orden: Vec<usize>): una ventana puede cambiar de celda sin perder su canal de teclado ni su ranura de estado.Alt+Enterpromueve la ventana enfocada a la celda maestra;Alt+H/Alt+Lla mueven atrás / adelante en el orden. El foco viaja con la ventana.
Pendiente
- Orden-Z y solapamiento (ventanas flotantes); alta y baja de apps en vivo.
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 |