diff --git a/docs/evidencia/cosmic-super-w-workspaces-qemu-2026-08-04.png b/docs/evidencia/cosmic-super-w-workspaces-qemu-2026-08-04.png new file mode 100644 index 00000000..b43b0219 Binary files /dev/null and b/docs/evidencia/cosmic-super-w-workspaces-qemu-2026-08-04.png differ diff --git a/docs/runbooks/cosmic-desktop.md b/docs/runbooks/cosmic-desktop.md index 37be2abe..d50b1c29 100644 --- a/docs/runbooks/cosmic-desktop.md +++ b/docs/runbooks/cosmic-desktop.md @@ -94,13 +94,13 @@ Más `cosmic-settings-daemon` y `xdg-desktop-portal-cosmic` fuera de esa lista. | `cosmic-session` | ✅ sellado | `b3:81f02351` | | `cosmic-icons` | ✅ sellado (671 SVGs) | `b3:94d06f77` | | `dav1d` 1.5.4 | ✅ sellado (dep arrastrada, ver gotcha 8) | `b3:aab7a874` | -| **`cosmic-comp`** | ✅ **SELLADO — el gate** | `b3:b8abc52f` | +| **`cosmic-comp`** | ✅ **SELLADO — el gate** (filtra `ScreenReader`, ver atajos) | `b3:e871eee4` | | `cosmic-bg` (dinámico, PINTA) | ✅ sellado | `b3:b2cfc410` | | `cosmic-idle` (dinámico) | ✅ sellado | `b3:e1806acc` | | `pulseaudio` · `pipewire` (cadena del settings-daemon) | ✅ sellados | `b3:e1ff4736` · `b3:338d1d8c` | | `cosmic-panel` | ✅ sellado | `b3:ac5e48c5` | | `cosmic-osd` | ✅ sellado | `b3:f15cb9c1` | -| `cosmic-settings-daemon` | ✅ sellado | `b3:0263288e` | +| `cosmic-settings-daemon` | ✅ sellado (filtra `ScreenReader`, ver atajos) | `b3:642919a5` | | `cosmic-notifications` | ✅ sellado | `b3:3e2a5478` | | `cosmic-launcher` | ✅ sellado | `b3:c17b4956` | | `cosmic-app-library` | ✅ sellado | `b3:b2a163e7` | @@ -366,11 +366,12 @@ Se reproduce así (headless y automatizable; **el `-vga none` no es opcional**, ```sh COSMIC_MODE=session bash scripts/cosmic/qemu-desktop-image.sh -qemu-system-x86_64 -machine q35,accel=kvm -cpu host -smp 4 -m 4096 \ +qemu-system-x86_64 -machine q35,accel=kvm -cpu host -smp 8 -m 8192 \ # 8 vCPU: ver el deadline del panel -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd \ -drive if=pflash,format=raw,file=/tmp/OVMF_VARS.fd \ -drive file=work/hammer-cosmic-qemu.img,format=raw,if=virtio \ -vga none -device virtio-gpu-pci,xres=1280,yres=800 \ + -device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0 -device usb-tablet,bus=xhci.0 \ -display none -serial file:/tmp/cosmic.serial -qmp unix:/tmp/qmp.sock,server,nowait # y después, por QMP: {"execute":"screendump","arguments":{"filename":"/tmp/shot.ppm"}} ``` @@ -419,22 +420,51 @@ applets y componentes de sesión, no aplicaciones—, así que no hay nada que l devuelva resultados no es un fallo del escritorio: es que la distro todavía no tiene ni una sola aplicación gráfica. Se sabrá arreglado cuando entre `cosmic-files` o un terminal. -### 🔑 El atajo que no era: 29 ligaduras caídas por UNA línea de datos +### 🔑 Los atajos: dos ficheros envenenados por la misma línea -`Super` no abría el lanzador, **teniendo `(modifiers: [Super]): System(Launcher)` en el fichero**. -La causa: `data/keybindings.ron` de epoch-1.5.0 liga `Super+Alt+S` a `System(ScreenReader)`, una -acción que `cosmic-settings-config` —el crate que parsea el fichero, pineado por cargo en la rev -`8c54bbbc`— todavía no tiene en su enum. **RON no ignora lo que no conoce: falla la deserialización -del MAPA COMPLETO**, y con ella se caen las 29 ligaduras. +`Super+A` abre la biblioteca y `Super+W` la vista de espacios de trabajo +(`cosmic-super-w-workspaces-qemu-2026-08-04.png`, con **miniatura viva** del escritorio dentro — o +sea que el camino DMA-BUF→GBM del gotcha 11 anda de verdad). Para llegar ahí hubo que sanear DOS +ficheros de datos, no uno: -Lo que hace este bug difícil es cómo se presenta: apretás una tecla, no pasa nada, y el único rastro -es un `WARN` de *cosmic-idle* —ni siquiera del compositor— a doscientas líneas del arranque, hablando -de un enum. El síntoma no nombra ni la tecla, ni el fichero, ni el componente que lo sufre. +| fichero | lo instala | qué liga | +|---|---|---| +| `…Shortcuts/v1/defaults` | `cosmic-comp` | tecla → acción | +| `…Shortcuts/v1/system_actions` | `cosmic-settings-daemon` | acción → comando | -**Es el riesgo del pin lockstep asomando desde adentro de upstream**: acá el dato y el parser del -*mismo* epoch no coinciden. El fix va en el install de `cosmic-comp` y filtra esa única línea -(`grep -v 'System(ScreenReader)'`): se cae la acción que no existe, no las 28 que sí. El screen -reader no está en la imagen de todas formas. +Los dos traen una entrada `ScreenReader`, una variante que `cosmic-settings-config` —el crate que los +parsea, pineado por cargo en la rev `8c54bbbc`— todavía no tiene en su enum. **RON no ignora lo que +no conoce: falla la deserialización del MAPA COMPLETO.** Con `defaults` roto no hay ligaduras; con +`system_actions` roto hay ligadura pero ningún comando que ejecutar. Hacen falta los dos `grep -v`. + +**Y acá me equivoqué de fichero teniendo el dato exacto delante.** El error decía +`3:5-3:17: Unexpected variant named 'ScreenReader'` — con línea y columna. Busqué el *token* en vez +de preguntarme *qué fichero lo tiene en esa posición*, di con `keybindings.ron` (que también lo +traía, en la línea 94), lo arreglé, reconstruí `cosmic-comp` **cuarenta minutos** y el error salió +igualito. Era otro fichero, de otro paquete. *Cuando el error trae coordenadas, la primera pregunta +es de qué fichero son, no dónde más aparece esa palabra.* + +**Es el riesgo del pin lockstep asomando desde adentro de upstream**: el dato y el parser del *mismo* +epoch no coinciden. + +**`Super` a secas sigue sin abrir nada, y no es un bug nuestro**: liga `System(Launcher)`, y +`cosmic-launcher` es sólo la interfaz — el motor de búsqueda es **`pop-launcher`**, un binario aparte +que el catálogo todavía no tiene (`pop-launcher failed to start: No such file or directory`). Los +atajos andan; lo que falta es el paquete. + +### ⏱ El panel tiene un DEADLINE de arranque: con 4 vCPU sale mutilado + +Medido: con `-smp 4` el panel arranca **sin ala izquierda, sin reloj y sin dock** —sólo la bandeja +derecha— y el único rastro es `Failed to setup panel dbus server deadline has elapsed`. Con +`-smp 8 -m 8192`: **4 arranques de 4 con el escritorio completo y cero deadlines vencidos**. +No es carga del anfitrión (falla con el anfitrión ocioso) sino la estampida del arranque: el panel +registra su servidor D-Bus mientras catorce clientes de iced escanean fuentes al mismo tiempo. + +**Y una lección de medición que costó horas: el conteo de procesos NO sirve como veredicto.** +Perseguí una regresión inexistente comparando «48 procesos» contra «31», revirtiendo uno por uno +tres cambios míos que no tenían nada que ver — cuando un escritorio completo y sano muestra **32**. +El número de procesos no distingue «arrancó» de «dibujó». El framebuffer sí, y sin ambigüedad: +**894 colores = completo, 130 = mutilado.** ## Lo que falta, en orden diff --git a/recipes/incoming-cosmic/cosmic-settings-daemon.toml b/recipes/incoming-cosmic/cosmic-settings-daemon.toml index 31085834..b783b368 100644 --- a/recipes/incoming-cosmic/cosmic-settings-daemon.toml +++ b/recipes/incoming-cosmic/cosmic-settings-daemon.toml @@ -43,7 +43,15 @@ mkdir -p /out/usr/bin \ /out/usr/share/polkit-1/rules.d cp target/release/cosmic-settings-daemon /out/usr/bin/cosmic-settings-daemon chmod 755 /out/usr/bin/cosmic-settings-daemon -cp data/system_actions.ron /out/usr/share/cosmic/com.system76.CosmicSettings.Shortcuts/v1/system_actions +# ⚠ SE FILTRA LA LÍNEA DE `ScreenReader`, Y ES LA QUE DEJA EL ESCRITORIO SIN TECLADO. +# `system_actions` es la tabla acción→comando: `Launcher: "cosmic-launcher"`, `Terminal: …`. La +# entrada `ScreenReader` nombra una variante que el enum de `cosmic-settings-config` (rev 8c54bbbc, +# la que pinea cargo) todavía no tiene, y **RON no ignora lo que no conoce**: falla el mapa COMPLETO. +# Resultado medido: `Super` tiene su ligadura en `defaults` y no pasa nada, porque el compositor sabe +# QUÉ acción disparar y no CON QUÉ comando. Dos ficheros, dos preguntas: `defaults` liga tecla→acción, +# `system_actions` liga acción→comando, y hay que sanear los dos —los dos traen la misma entrada. +grep -v 'ScreenReader:' data/system_actions.ron \ + > /out/usr/share/cosmic/com.system76.CosmicSettings.Shortcuts/v1/system_actions cp data/polkit-1/rules.d/cosmic-settings-daemon.rules /out/usr/share/polkit-1/rules.d/ '''