feat(renaser): Fase 16 — la barra viva: botón lanzador + reloj

La barra de tareas era pasiva: nombraba pero no hacía. Ahora lleva
en sus extremos los dos adornos de toda barra digna.

- Botón «+» indigo a la izquierda (36 px). Un clic incrementa
  `PARTOS` — el mismo contador que `Alt+N` — y la tarea del
  compositor lo recoge para lanzar la siguiente app de la rotación.
  Teclado y ratón comparten ya la misma vía para crear ventanas.
- Reloj `mm:ss` a la derecha (80 px), leído de
  `reloj::milisegundos()`. Tinta blanca sobre slate.
- `compositor::tick_reloj()` lo invoca la tarea del compositor cada
  fotograma; recompone solo cuando el segundo del reloj monótono
  cambia respecto al último mostrado (`ULTIMO_SEGUNDO: AtomicU64`).
  Cero coste mientras no toca refrescar.
- `Taskbar` crece con `launcher`, `reloj` y `reloj_region`; el
  layout de las pestañas se ajusta entre ambas cuñas. La cruz del
  lanzador se dibuja en píxeles directos —dos rectángulos cruzados,
  independiente de la tipografía—.

Verificado en QEMU con dos capturas separadas: la barra muestra el
«+» indigo, las siete pestañas (con `glotona` ya legible) y el
reloj. En la primera marca `0:17`; diez segundos después, `0:29` —
la barra se refrescó doce veces sin intervención.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-23 03:36:46 +00:00
parent 0422780dd9
commit 71ebcea899
7 changed files with 208 additions and 27 deletions
+39
View File
@@ -1046,3 +1046,42 @@ propia voz, prioritaria sobre las de los apps.
desalojadas), y después la escala de `tonada` tomando la bocina.
- Captura: la pestaña de `glotona` (crema) muestra ahora su nombre legible
en tinta oscura; la de `discola` (púrpura) sigue clara, como antes.
## Fase 16 — La barra viva: lanzador y reloj — 2026-05-23
La barra de tareas era informativa pero pasiva: nombraba a los inquilinos sin
ofrecerse a ningún gesto propio. La Fase 16 le añade los dos accesorios de
toda barra de tareas digna: un **botón lanzador** a la izquierda y un **reloj**
a la derecha, y le pone el reloj a latir cada segundo.
### Añadido
- **Botón lanzador («+»)** a la izquierda de la barra (36 px de ancho, fondo
índigo del foco, cruz blanca). Un clic incrementa `PARTOS` — el mismo
contador que `Alt+N` —, así que la tarea del compositor lo recoge y lanza
la siguiente app de la rotación. El teclado y el ratón comparten ahora la
misma vía para crear ventanas.
- **Reloj** a la derecha de la barra (80 px), formato `mm:ss` desde el
arranque, leído de `reloj::milisegundos()`. Tinta blanca sobre slate.
- **`compositor::tick_reloj()`** — la invoca la tarea del compositor cada
fotograma. Si el segundo del reloj cambió respecto al último mostrado
(`ULTIMO_SEGUNDO: AtomicU64`), recompone; si no, vuelve. Cero coste cuando
no hace falta refrescar.
- `Taskbar` gana los campos `launcher: RegionPantalla`, `reloj: &str` y
`reloj_region: RegionPantalla`. `pintar_taskbar` los pinta como dos cuñas
fijas de la barra: el lanzador con su cruz dibujada en píxeles directos
(independiente de la tipografía), el reloj con la etiqueta de costumbre.
### Cambiado
- El layout de la barra se recalcula: `cells_x0` empieza tras el lanzador,
`cells_x_max` termina antes del reloj. `celda_taskbar_en` respeta esos
límites; un clic en el lanzador (`clic_en_launcher`) tiene su propia rama
en `atender_raton`, antes que la búsqueda de pestaña.
- `CELDA_TASKBAR_ANCHO` baja de 156 a 150 para que el lanzador, las siete
pestañas y el reloj quepan holgados en una pantalla de 1280 píxeles.
### Verificado
- QEMU. La barra al arrancar muestra el botón «+» indigo a la izquierda, las
siete pestañas (con `glotona` ya legible en tinta oscura sobre crema), y el
reloj `0:17` a la derecha (el tiempo que el kernel lleva vivo al capturar).
Diez segundos después, el reloj marca `0:29` — la barra se ha refrescado
doce veces sin intervención del ratón ni del teclado.