Files
brahman/renaser/FASE8.md
T
sergio dacfbad124 feat(renaser): Fase 8d — manipulación de ventanas
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>
2026-05-22 19:25:32 +00:00

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 — 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 — HECHA

  • Alt+Espacio cicla en caliente los siete modos de teselado de mirada-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 init conserva 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+K pasean 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 ESCRITORIO del compositor cumple el papel del Workspace de mirada-layout —ventanas, marcos, foco— sin adoptar su tipo: el kernel necesita además la caché de respaldo, que el Workspace no contempla.

8d — Manipulación de ventanas — HECHA

  • Escritorio separa 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+Enter promueve la ventana enfocada a la celda maestra; Alt+H / Alt+L la 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