atuq: la ventana SI esta — mide 117x70 px (lo dice el protocolo)
Como cosmic-comp no emite DEBUG (macros compiladas fuera), se le pregunto por el protocolo con WAYLAND_DEBUG=1. Manda configure_bounds(0,0) al mapear, despues bounds(1280,692) y configure(117,70): la ventana queda de 117x70. El pixel lo confirma — restando el cuadro de antes aparece un cluster de 286x86 con la decoracion de COSMIC en (496,115). Cae la hipotesis del §6.10.nonies: hay 43 wl_callback.done, o sea que SI hay frame callbacks. Y la tasa 2 de 10 no medía «pinto/no pinto» sino «ventana grande / ventana de 117x70». Arnes: --wayland-debug y --set-rust-log (perilla por /etc/cosmic-mode, que cosmic-start lee antes de RUST_LOG); margen de espera 420->780s porque con carga ~13 la VM no llegaba al shell.
This commit is contained in:
@@ -1917,6 +1917,83 @@ diez corridas no se separa**.
|
||||
nueva sobrescribió los crudos de la anterior (se salvaron 9 de 10 en `work/serie-dos-tarjetas/`).
|
||||
Arreglado después de la serie — no durante: bash lee el guion a medida que lo ejecuta.
|
||||
|
||||
#### 6.10.decies El log del compositor a `info` NO puede contestar — y por qué hizo falta una perilla (2026-09-14)
|
||||
|
||||
La hipótesis del §6.10.nonies —«nadie le devuelve frame callbacks»— se contesta del lado de
|
||||
`cosmic-comp`, así que el arnés ahora vuelca **`/var/log/cosmic/cosmic-session.log`**, que ya existía
|
||||
desde el primer día y nunca se había mirado. Corrida fallida (91 % de azul de escritorio, sin
|
||||
ventana), y el log entero:
|
||||
|
||||
92 líneas. Todas de 21:17:48 — los segundos del arranque. Ni una superficie, ni un toplevel,
|
||||
ni una salida. Termina en:
|
||||
ERROR cosmic_comp::xwayland: Failed to start Xwayland
|
||||
err=Custom { kind: AddrInUse, error: "Could not find a free socket for the XServer." }
|
||||
|
||||
Dos cosas, y conviene no confundirlas:
|
||||
|
||||
1. **el ERROR de Xwayland es ruido aquí** — la distro es Wayland-only por decisión (§frente-gnome), y
|
||||
`atuq` es cliente Wayland nativo: que no haya X no le quita ni un frame. Es una pista falsa
|
||||
esperando a que alguien la agarre;
|
||||
2. **a `RUST_LOG=info` el compositor no dice NADA de ventanas.** El log no es que muestre algo raro:
|
||||
es que no habla del tema. Un log en silencio no es evidencia de nada — lo mismo imprime cuando
|
||||
todo anda.
|
||||
|
||||
⇒ para responder hace falta subirle el nivel, y eso **no se puede hacer desde fuera**: `cosmic-comp`
|
||||
lo lanza `cosmic-start` desde el getty, en el arranque, sin ambiente heredable. La perilla existe y
|
||||
estaba a la vista: `cosmic-start` hace `. /etc/cosmic-mode` **antes** de
|
||||
`export RUST_LOG="${RUST_LOG:-info}"`, así que ese fichero manda. Y la imagen se arranca sin
|
||||
`-snapshot`, o sea que **lo que se escribe adentro persiste**. De ahí
|
||||
`atuq-en-imagen.py --set-rust-log VALOR`: entra por el serial, escribe `/etc/cosmic-mode` y apaga; lo
|
||||
usa el arranque SIGUIENTE. Con la cadena vacía lo quita, que es como se deja la imagen después de
|
||||
medir — subirle el log a una imagen compartida y olvidárselo es dejar una trampa para el próximo.
|
||||
|
||||
#### 6.10.undecies **La ventana SÍ está: mide 117×70 px** — y la hipótesis de los frame callbacks era falsa (2026-09-14)
|
||||
|
||||
Como el compositor no habla por su log (§6.10.decies), se le preguntó por el **protocolo**:
|
||||
`atuq-en-imagen.py --wayland-debug` lanza el navegador con `WAYLAND_DEBUG=1`, que registra cada
|
||||
mensaje en los dos sentidos. Corrida fallida (91 % de azul de escritorio), y esto es lo que MANDA
|
||||
`cosmic-comp`:
|
||||
|
||||
xdg_toplevel#58.configure_bounds(0, 0) ← al mapear: todavía no sabe el tamaño
|
||||
xdg_toplevel#58.configure(0, 0, array[0])
|
||||
xdg_toplevel#58.configure_bounds(1280, 692) ← después sí
|
||||
xdg_toplevel#58.configure(117, 70, array[16]) ← y la ventana queda de 117×70
|
||||
wl_surface#52.enter(wl_output#16)
|
||||
wl_callback#76.done(…) × 43
|
||||
|
||||
Y el píxel lo confirma, restando el cuadro de ANTES del de DESPUÉS: aparece un cluster en
|
||||
**(496,115), de unos 286×86 con sombra**, con el blanco `#fafafb` y el acento cian `#63d0df` de la
|
||||
decoración de COSMIC. Una ventanita.
|
||||
|
||||
⇒ **`atuq` no deja de pintar: pinta una ventana de 117×70 px.** Con eso caen dos cosas que este mismo
|
||||
documento daba por buenas hace dos secciones:
|
||||
|
||||
| lo que decía | lo que mide el protocolo |
|
||||
|---|---|
|
||||
| «nadie le devuelve frame callbacks» (§6.10.nonies) | **43 `wl_callback.done`**. Los devuelve |
|
||||
| «deja de trabajar a los ~40 s» | deja de **escribir**: con la ventana de 117×70 no hay casi nada que redibujar |
|
||||
| «7 de 10 no tienen ventana» (§6.10.nonies) | **la tienen**. Mi contador de magenta no la ve porque es 0,7 % de la pantalla |
|
||||
|
||||
**La tasa 2 de 10, entonces, tampoco mide lo que decía.** No es «pintó / no pintó»: es «la ventana
|
||||
salió grande / salió de 117×70». El fenómeno es real y sigue estando —una ventana así es inusable—
|
||||
pero el nombre estaba mal, y con el nombre mal la causa que se busca es otra.
|
||||
|
||||
**De dónde sale 117×70, y qué es hipótesis.** El primer `configure` llega con `bounds(0,0)`: en ese
|
||||
instante el compositor todavía no le puede decir al cliente de qué tamaño es la pantalla, y el
|
||||
protocolo dice «elegí vos». La medida NO prueba quién eligió 117×70 —para eso hay que ver qué
|
||||
tamaño de buffer commitea el cliente ANTES de ese configure—, pero el orden es compatible con una
|
||||
**carrera**: `atuq` dimensiona su ventana antes de tener la geometría de la salida y cae en un
|
||||
mínimo. En las corridas que salen bien la ventana mide 1073×549 (§6.10.quater), que es lo que se ve
|
||||
cuando la geometría llegó primero. **Eso es lo próximo a medir, y se mide con el mismo arnés.**
|
||||
|
||||
⚠ **Método, tercera vez en el mismo frente:** el primer vuelco del protocolo filtró por `' -> '`
|
||||
creyendo que era «lo que manda el compositor». En `WAYLAND_DEBUG` la flecha marca los **pedidos del
|
||||
cliente**; los eventos son las líneas SIN flecha. O sea que volví a leer al navegador —la mitad que
|
||||
ya sabíamos que miente— con un filtro nuevo. Y las cuentas dieron cinco ceros porque los nombres
|
||||
llevan `#id` en el medio (`wl_surface#30.commit`), así que `wl_surface.commit` no engancha: **un
|
||||
grep que devuelve 0 puede ser una ausencia o puede ser un patrón mal escrito, y las dos se ven
|
||||
igual.**
|
||||
|
||||
### 6.11 Y ahora la pregunta que faltaba: ¿REPRODUCE? (2026-09-07)
|
||||
|
||||
El §6.10 preguntó «¿qué NO puede hacer?» y contestó leyendo cadenas. Media pregunta. La otra mitad
|
||||
|
||||
Reference in New Issue
Block a user