cosmic: la entrada anda — click y teclado por QMP; y 29 atajos caídos por UNA línea
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) <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
@@ -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
|
||||
|
||||
@@ -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
|
||||
'''
|
||||
|
||||
|
||||
Reference in New Issue
Block a user