feat(mirada): xdg-decoration — ventanas sin marco en el compositor

Un escritorio teselante no quiere barras de título de cliente. El
compositor anuncia ahora `xdg-decoration` y a todo toplevel le impone
`Mode::ServerSide`; como el servidor no dibuja decoración alguna, las
ventanas quedan sin marco.

Sin esto, clientes como `foot` se dibujan su propia barra (CSD) con
botones de minimizar/maximizar/cerrar — ruido en un WM teselante.

- `XdgDecorationHandler` para `App`: `new_decoration`, `request_mode`
  y `unset_mode` fijan siempre `ServerSide` y reenvían el configure.
- `delegate_xdg_decoration!(App)`; el global se anuncia en `build_app`.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 03:37:56 +00:00
parent b4ddab9c06
commit ae81399857
3 changed files with 40 additions and 6 deletions
+5 -3
View File
@@ -116,9 +116,11 @@ En modo enlazado el socket de control lo abre el Cerebro (la app
## Qué implementa
`wl_compositor`, `xdg_shell` (toplevels y popups), `wl_shm`, `wl_seat`
(teclado, y ratón en el backend DRM), `wl_output` y `wl_data_device`
(selección). Composición con `GlesRenderer` — en `winit` sobre la
ventana, en `drm` con un `DrmCompositor` por salida.
(teclado, y ratón en el backend DRM), `wl_output`, `wl_data_device`
(selección) y `xdg-decoration` — fuerza decoración del servidor y no
dibuja ninguna, así las ventanas van sin barra de título. Composición
con `GlesRenderer` — en `winit` sobre la ventana, en `drm` con un
`DrmCompositor` por salida.
Reusa `mirada-body` para la contabilidad de salidas y superficies, y
`mirada-link` para el cable hacia un Cerebro externo. Toda la lógica