feat(renaser): Fase 14 — identidad del escritorio (nombres + barra de tareas)
Las ventanas eran anónimas: el escritorio no sabía nombrar lo que mostraba. Esta fase le pone un nombre a cada cuarto y una barra al pie con la lista de quienes lo habitan. - Cada `Ventana` lleva un `nombre: String` —del manifiesto, o del orquestador al engendrarla en vivo—. `Plantilla` lo guarda para las copias que `Alt+N` instancia. - Franja `FRANJA_TASKBAR=40px` reservada al pie. `area_apps` la descuenta — las ventanas teselan y flotan sin tapar la barra. - `consola`: tipos `Taskbar` / `CeldaTaskbar` + métodos `pintar_taskbar` y `pintar_etiqueta` (rasteriza una cadena en (x, base_y) sobre un fondo conocido, sin tocar la pluma). La pestaña enfocada se pinta con el índigo del foco, las desalojadas con su color de baliza, el resto con el slate del panel. - `compositor::recomponer` arma las celdas y las pasa junto a las capas a la consola; un único repintado, una única presentación. - `atender_raton`: si el clic cae en la franja de la barra, `celda_taskbar_en` localiza la pestaña pulsada y la enfoca (sin iniciar arrastre). Verificado en QEMU: al arrancar, la barra al pie muestra las 7 pestañas con sus nombres; `tonada` enfocada en índigo, `discola` y `glotona` en sus colores de baliza. Un clic sobre `pulso` traslada el foco al instante — el borde del compositor envuelve `pulso` y su pestaña se ilumina. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -946,3 +946,65 @@ enfocar y arrastre del marco de las ventanas flotantes.
|
||||
envuelve a `pulso`. `Alt+F` la flota; el ratón la agarra y la arrastra de
|
||||
la esquina superior izquierda al centro-abajo de la pantalla con el botón
|
||||
sostenido. El kernel sigue estable a través de los gestos.
|
||||
|
||||
## Mapeador MMIO en el kernel — 2026-05-23
|
||||
|
||||
OVMF aloja los BAR prefetchables 64-bit de virtio en la ventana PCI de 64
|
||||
bits, que el `bootloader_api` no mapea. `KernelHal::mmio_phys_to_virt`
|
||||
devolvía `phys + offset` a ciegas y el primer registro MMIO leído reventaba
|
||||
con #PF, dejando una franja roja sin pista visible. La autopsia: el commit
|
||||
anterior añadió el dump del panic-handler por COM1, que sacó a la luz el IP
|
||||
en `unchecked_mul::precondition_check` y la dirección de fallo
|
||||
`offset + 0x800000014` — phys 32 GiB, donde OVMF había puesto el BAR.
|
||||
|
||||
### Añadido
|
||||
- `memory::mmio`: envuelve la tabla L4 activa (vía `Cr3` + el mapeo de
|
||||
memoria física del cargador) en un `OffsetPageTable`. `mapear(fisica,
|
||||
tam)` abre páginas hacia la región pedida con `PRESENT | WRITABLE |
|
||||
NO_CACHE | WRITE_THROUGH`, tratando `PageAlreadyMapped` y
|
||||
`ParentEntryHugePage` como éxito silencioso.
|
||||
- Los marcos para tablas intermedias salen del banco DMA del disco
|
||||
(`asignar_marco_para_tabla`, sin pánico).
|
||||
- `KernelHal::mmio_phys_to_virt` llama a `memory::mmio::mapear` antes de
|
||||
devolver el puntero, asegurándose de que el BAR sea accesible.
|
||||
|
||||
### Cambiado
|
||||
- `baliza::Serie` es ahora `pub(crate)`: cualquier módulo puede dejar
|
||||
trazas por COM1. El panic-handler y el OOM-handler dejan en COM1 su
|
||||
mensaje y ubicación además de pintar la franja. `kernel_main` traza
|
||||
cada hito del arranque para diagnóstico remoto.
|
||||
|
||||
## Fase 14 — La identidad del escritorio: nombres y barra de tareas — 2026-05-23
|
||||
|
||||
Las ventanas eran anónimas: el escritorio reía con sus colores pero no sabía
|
||||
cómo se llama lo que muestra. La Fase 14 le da nombre a cada cuarto y una
|
||||
barra al pie con la lista de quien vive en la casa.
|
||||
|
||||
### Añadido
|
||||
- Cada `Ventana` lleva un `nombre: String` —el que dicta su `EntradaApp` del
|
||||
manifiesto, o el que el orquestador pasa al engendrarla en vivo (Fase 10)—.
|
||||
`Plantilla` se acuerda del nombre para los lanzamientos posteriores.
|
||||
- **`FRANJA_TASKBAR`** (40 px al pie) y `area_taskbar`: la barra de tareas
|
||||
vive en su propia franja. `area_apps` la descuenta — las ventanas teselan
|
||||
y flotan SIN tapar la barra ni la consola de la cima.
|
||||
- `consola`: tipos `Taskbar` y `CeldaTaskbar`; métodos `pintar_taskbar`
|
||||
(fondo + línea divisoria + una pestaña por ventana viva) y
|
||||
`pintar_etiqueta` (rasteriza una cadena en un punto fijo, sin tocar la
|
||||
pluma de la consola). La pestaña enfocada lleva el índigo del foco; las
|
||||
desalojadas, su color de baliza; las demás, el slate del panel.
|
||||
- `compositor::recomponer` arma la lista de celdas y la pasa a la consola
|
||||
junto con las capas: un único repintado, una única presentación.
|
||||
- `atender_raton`: un clic dentro de la franja de la barra busca su pestaña
|
||||
con `celda_taskbar_en` y enfoca la ventana correspondiente (sin iniciar
|
||||
arrastre). El comportamiento sobre el área de apps queda intacto.
|
||||
|
||||
### Cambiado
|
||||
- `compositor::fundar` y `nacer_ventana` exigen un nombre para cada ventana.
|
||||
`cargar_userspace` lo toma de `EntradaApp.nombre`; `lanzar_app`, de
|
||||
`Plantilla.nombre`.
|
||||
|
||||
### Verificado
|
||||
- QEMU. Tras arrancar se ve la barra al pie con las 7 pestañas (`tonada`
|
||||
enfocada, índigo), las desalojadas en sus colores de baliza. Un clic
|
||||
sobre `pulso` cambia el foco al instante: el borde índigo del compositor
|
||||
deja la maestra y envuelve a `pulso`, y la pestaña `pulso` se ilumina.
|
||||
|
||||
Reference in New Issue
Block a user