From 39b91b51467d216731e7ba15603bdef880e42738 Mon Sep 17 00:00:00 2001 From: sergio Date: Tue, 4 Aug 2026 01:08:41 -0400 Subject: [PATCH] =?UTF-8?q?cosmic:=20la=20entrada=20anda=20=E2=80=94=20cli?= =?UTF-8?q?ck=20y=20teclado=20por=20QMP;=20y=2029=20atajos=20ca=C3=ADdos?= =?UTF-8?q?=20por=20UNA=20l=C3=ADnea?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El click sobre «Applications» abre la biblioteca (el color dominante pasa de fondo 91% a 27,27,27 84%) y tecleando aparece «cosmic» en el buscador. Se maneja entero por QMP con input-send-event, sin humano y sin ver la pantalla. USB HID, no virtio-input: el kernel de hammer no trae VIRTIO_INPUT, así que -device virtio-keyboard no crea ni un /dev/input/event*. Con qemu-xhci + usb-kbd + usb-tablet anda, y además es lo que se va a usar en metal. Y el hallazgo de fondo: Super no abría el lanzador TENIENDO la ligadura en el fichero. keybindings.ron de epoch-1.5.0 liga Super+Alt+S a System(ScreenReader), acción que el crate que lo parsea (cosmic-settings-config, rev 8c54bbbc) no tiene en su enum. RON no ignora lo desconocido: falla el mapa entero y se caen las 29 ligaduras. El único rastro era un WARN de cosmic-idle a 200 líneas del arranque hablando de un enum — el síntoma no nombra ni la tecla ni el fichero. El pin lockstep fallando desde adentro de upstream. Co-Authored-By: Claude Opus 5 (1M context) --- ...smic-app-library-click-qemu-2026-08-04.png | Bin 0 -> 29976 bytes ...osmic-teclado-busqueda-qemu-2026-08-04.png | Bin 0 -> 28574 bytes docs/runbooks/cosmic-desktop.md | 62 +++++++++++++++++- recipes/incoming-cosmic/cosmic-comp.toml | 12 +++- 4 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 docs/evidencia/cosmic-app-library-click-qemu-2026-08-04.png create mode 100644 docs/evidencia/cosmic-teclado-busqueda-qemu-2026-08-04.png diff --git a/docs/evidencia/cosmic-app-library-click-qemu-2026-08-04.png b/docs/evidencia/cosmic-app-library-click-qemu-2026-08-04.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3195a93b0bcf04b6796b8aa40727994f3246c5 GIT binary patch literal 29976 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 P-tU(YmSzQT=Rf}kp&H;S literal 0 HcmV?d00001 diff --git a/docs/evidencia/cosmic-teclado-busqueda-qemu-2026-08-04.png b/docs/evidencia/cosmic-teclado-busqueda-qemu-2026-08-04.png new file mode 100644 index 0000000000000000000000000000000000000000..3b71512ca34de32c46474742a3ab431d1f4befb7 GIT binary patch literal 28574 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 Cc3qJG literal 0 HcmV?d00001 diff --git a/docs/runbooks/cosmic-desktop.md b/docs/runbooks/cosmic-desktop.md index b55d0c8f..37be2abe 100644 --- a/docs/runbooks/cosmic-desktop.md +++ b/docs/runbooks/cosmic-desktop.md @@ -378,11 +378,67 @@ qemu-system-x86_64 -machine q35,accel=kvm -cpu host -smp 4 -m 4096 \ El veredicto es **contar colores distintos del PPM**, no leer el log: con dos GPUs el log salía impecable y la pantalla estaba lisa. +## 🖱 LA ENTRADA: se usa, no sólo se ve (2026-08-04) + +**Hay que usar USB HID, no virtio-input.** El kernel de hammer no trae `VIRTIO_INPUT` (mirá el +`-e …` de `recipes/linux-generic.toml`), así que `-device virtio-keyboard` no produce ni un +`/dev/input/event*`. Sí trae `USB_XHCI_HCD` + `USB_HID` + `INPUT_EVDEV`, y además es lo que se va a +usar en metal, así que la prueba es más fiel: + +``` +-device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0 -device usb-tablet,bus=xhci.0 +``` + +`usb-tablet` y no `usb-mouse`: reporta coordenadas ABSOLUTAS, y QMP sólo sabe mandar eventos `abs` +(el eje va de 0 a 32767 sobre el ancho/alto de la pantalla, no en píxeles). + +**Se maneja entero por QMP**, sin ver la pantalla y sin humano: + +```jsonc +// mover el puntero a (155,16) — el botón «Applications» +{"execute":"input-send-event","arguments":{"events":[ + {"type":"abs","data":{"axis":"x","value":3968}}, + {"type":"abs","data":{"axis":"y","value":655}}]}} +// click +{"execute":"input-send-event","arguments":{"events":[{"type":"btn","data":{"down":true,"button":"left"}}]}} +{"execute":"input-send-event","arguments":{"events":[{"type":"btn","data":{"down":false,"button":"left"}}]}} +// una tecla +{"execute":"input-send-event","arguments":{"events":[ + {"type":"key","data":{"down":true,"key":{"type":"qcode","data":"c"}}}, + {"type":"key","data":{"down":false,"key":{"type":"qcode","data":"c"}}}]}} +``` + +**El veredicto también es de píxeles, y conviene medirlo por REGIÓN.** El click en *Applications* +llevó el color dominante de `(33,74,135)` (fondo, 91 %) a `(27,27,27)` (84 %): la biblioteca de +aplicaciones se abrió a pantalla casi completa. Y para el teclado, contar colores del rectángulo del +buscador (440..840 × 80..112) bastó: 155 → 118 colores al reemplazarse el placeholder por lo tecleado. +Evidencia: `cosmic-app-library-click-qemu-2026-08-04.png` y `cosmic-teclado-busqueda-qemu-2026-08-04.png`. + +**La biblioteca sale vacía y está BIEN.** Los 20 `.desktop` de la imagen son `NoDisplay=true` —son +applets y componentes de sesión, no aplicaciones—, así que no hay nada que listar. Que la búsqueda no +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 + +`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. + +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. + +**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. + ## Lo que falta, en orden -1. **Entrada real**: el escritorio está dibujado pero nadie probó un click ni una tecla. `virtio-tablet` - + `virtio-keyboard` y verificar que el launcher abre (es lo que separa «pinta» de «se usa»). -2. `xdg-desktop-portal-cosmic` — sin él no hay captura de pantalla, ni file-chooser, ni compartir. +1. `xdg-desktop-portal-cosmic` — sin él no hay captura de pantalla, ni file-chooser, ni compartir. 3. `cosmic-settings` (el panel de control) y `cosmic-files`: la suite tiene aplicaciones y el catálogo todavía no. 4. `cosmic-greeter` (hoy `cosmic-session` lo lanza y falla con ENOENT, sin consecuencias) y diff --git a/recipes/incoming-cosmic/cosmic-comp.toml b/recipes/incoming-cosmic/cosmic-comp.toml index 888d0cec..2f184d2b 100644 --- a/recipes/incoming-cosmic/cosmic-comp.toml +++ b/recipes/incoming-cosmic/cosmic-comp.toml @@ -65,7 +65,17 @@ mkdir -p /out/usr/bin \ /out/usr/share/cosmic/com.system76.CosmicSettings.WindowRules/v1 cp target/release/cosmic-comp /out/usr/bin/cosmic-comp chmod 755 /out/usr/bin/cosmic-comp -cp data/keybindings.ron /out/usr/share/cosmic/com.system76.CosmicSettings.Shortcuts/v1/defaults +# ⚠ SE FILTRA UNA LÍNEA, Y ES LA DIFERENCIA ENTRE 28 ATAJOS Y NINGUNO. +# `data/keybindings.ron` de epoch-1.5.0 liga Super+Alt+S a `System(ScreenReader)`, una acción que el +# crate que PARSEA el fichero —`cosmic-settings-config`, que cargo pinea 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, incluida `(modifiers: [Super]): System(Launcher)`. +# Se ve así: apretás Super, no pasa NADA, y el único rastro es un WARN de cosmic-idle a 200 líneas +# del arranque que habla de un enum. Medido: sin el filtro, Super no abre el lanzador. +# Es el riesgo del pin lockstep asomando desde adentro de upstream: el dato y el parser del MISMO +# epoch no coinciden. Se cae la acción que no existe, no las 28 que sí. +grep -v 'System(ScreenReader)' data/keybindings.ron \ + > /out/usr/share/cosmic/com.system76.CosmicSettings.Shortcuts/v1/defaults cp data/tiling-exceptions.ron /out/usr/share/cosmic/com.system76.CosmicSettings.WindowRules/v1/tiling_exception_defaults '''