Repository navigation
docs(linux): W0 Wayland evidence — workflow + validated matrix (issue #107) - #151
Conversation
…s antes de promoverlas
…taje); testeo de ramas por test-linux.yml manual y releases por build-linux (egdev6#108)
…anic de tao#1204 en Wayland
…e mod wm_compat Owner feedback on PR (egdev6#107) asked for four adjustments from egdev6#128/egdev6#129 and flagged the missing UpdatesSection early-return (already absent from the actual diff — verified, not present on this branch). This commit lands the four: 1. is_wayland_only_session now also recognizes labwc and cosmic (both Wayland-only compositors) alongside hyprland/sway/wlroots/ niri/river/wayfire. 2. recommendation() receives the is_kde flag computed once in detect_wm_info_from_env (same source of truth as surfaces_for) instead of re-matching kde-plasma/plasma inline on desktop_session, fixing the KDE-detection inconsistency the reviewer pointed out. 3. The play_effect click-through comment now references the canonical OVERLAY-builder note in setup() as the single source of truth for the show()-before-set_ignore_cursor_events ordering (tao#1204), instead of duplicating it. 4. wm-detect.ts gains the missing trailing newline. Also fixes a merge casualty: lib.rs lost `mod wm_compat;` during the merge of main (the file exists and get_wm_info is registered, so the crate did not compile). Restored the module declaration. Refs egdev6#107
The owner flagged the `mode !== 'native'` early-return in UpdatesSection as a macOS behavior that must not be dropped by Linux PRs. This test (final) pins that the code from main stays in this branch: - UpdatesSection exists with its exact signature. - The `if (mode !== 'native') return (` early return is present. - The macOS manual-mode message is literal. - The native branch keeps "Versión instalada". Registered in the `test` script so every `npm test` run guards it. Refs egdev6#107
Owner feedback (egdev6, PR egdev6#130) flagged two outstanding P2 issues plus missing commits from this branch. Land the fixes: Cherry-pick from feat-linux-l2-107 (Refs egdev6#107): - 327337c land the four egdev6#128/egdev6#129 review adjustments (labwc/cosmic in is_wayland_only_session, is_kde in recommendation, micro-window for OVERLAY click-through, wm-detect.ts trailing newline) and fix the mod wm_compat casualty of the main merge. - 7f69bda add the merge-regression test for the UpdatesSection early-return so the guard can never be dropped silently again. P2 #1 — Updater in manual mode: UpdatesSection was rendering the native branch unconditionally because the merge with main dropped the `mode !== 'native'` guard. Restore the guard from main (commit 1dbc5fb) so the manual-mode branch on macOS shows the explanation instead of a non-functional "Buscar ahora" CTA. The regression test added above locks this in. P2 egdev6#2 — Click-through of the strip: wm_compat.rs claimed `click_through = ok` in X11, Hyprland, KDE, and the generic Wayland branch, but the only set_ignore_cursor_events call in the app is in play_effect for the effects overlay, NOT for the widget. Mark `click_through` as `limited` in all four branches with an honest note (the widget does not implement click-through; only the effects overlay uses it). Update x11_surfaces_are_all_expected_complete and gnome_xorg_is_not_wayland to assert `limited` for click_through in X11. Refs egdev6#107
The merge with main brought changes that need rustfmt rewrap (several multi-line let bindings in detect_wm_info_from_env and the test assertions). This commit reformats just wm_compat.rs so the project's cargo fmt --check passes on this branch without touching the rest of the tree. No logic changes.
en feat-linux-wm-adjustes-107 Merge de fork/main (0d46ff1 UI egdev6#143, bdc9bbf W0 egdev6#90, c5a30f9 tao#1204) en la rama del PR. Resueltos los conflictos: - src-tauri/src/lib.rs: conservo los mods nuevos (window_clip, windows_backdrop) + mi mod wm_compat; tomo theirs para el comentario canónico de show() antes de set_ignore_cursor_events en play_effect; tomo theirs para el invoke_handler con la separacion Windows/non-Windows (windows_backdrop::finish_shutdown). - src-tauri/src/wm_compat.rs: mantengo HEAD (los fixes P2 del PR): is_kde en la firma de recommendation, click_through: limited en las 5 ramas, labwc/cosmic en is_wayland_only_session, test regression UpdatesSection y tests X11/GNOME actualizados. Verificado: cargo test --locked 219 passed; npm test 568 passed (44 files); cargo check compila (warnings preexistentes de main).
P2 #1 del owner (PR egdev6#128): con DESKTOP_SESSION=hyprland y las otras 3 env vars ausentes, is_hyprland=true pero is_wayland=false -> surfaces_for tomaba la rama X11 y presentaba bandeja/atajos/always-on-top como completos en vez de los límites de Hyprland. Fix: reordenar detect_wm_info_from_env para calcular is_hyprland antes de is_wayland, y usar is_hyprland como señal adicional de Wayland (Hyprland es compositor Wayland-only). Asi surfaces_for entra en la rama Hyprland. Test ampliado desktop_session_hyprland_signals_hyprland: verifica is_wayland=true, always_on_top=limited, tray_icon=limited (con la nota "vuelve a abrir Quorb"), click_through=limited, global_shortcuts=limited, autostart=ok. cargo test --locked: 219 passed, 0 failed, 1 ignored.
…gdev6#107) Squash of the wayland-matrix-107 branch (8 commits) into one unit. Adds: - .github/workflows/w0-wayland.yml (nuevo): workflow_dispatch on ubuntu-latest with 4 jobs that install and launch real Wayland compositors headless and capture env vars + socket: * weston --use-pixman --backend=headless-backend.so --socket=wayland-0 * mutter --headless --wayland (dbus-run-session in background keeps the session bus alive via exec) * kwin_wayland --virtual --no-lockscreen (KWin 5.27 has no --headless) * hyprland (apt install hyprland not found on ubuntu-24.04) - docs/wayland-evidence/W0-WAYLAND-EVIDENCE.md (nuevo): hallazgo F11 (Wayland genérico) + matriz Wayland real con resultados de runs 39333298554 y 39339723250. Matriz Wayland validada en CI: - Weston (Wayland genérico): VALIDADO (pixman + headless-backend, desktop-shell + weston-keyboard launched, socket wayland-0). - Mutter (GNOME Wayland): VALIDADO (wayland-0 socket, GNOME env, fix D-Bus). - KWin (KDE Wayland): VALIDADO (wayland-0 socket, KDE env, fix --virtual --no-lockscreen). - Hyprland: pendiente self-hosted/PPA (paquete ausente en ubuntu-24.04). Refs egdev6#107
egdev6
left a comment
There was a problem hiding this comment.
@egdev6 @sosan — revisé el PR completo (solo workflow + doc, no toca código de la app; checks en verde). Buena base, pero pido request changes antes de merge: un PR cuya función es ser evidencia documental no puede llevar el comando equivocado ni un bug en su propia captura de "alive".
🔴 Bloqueantes
-
Bug
WESTON_PIDentre steps (w0-wayland.yml): se define en el step de arranque y se consulta en el siguiente, donde está vacío →kill -0 "$WESTON_PID"falla siempre yraw/status.txtsiempre imprime "weston exited" aunque el compositor esté vivo. La evidencia de "alive" queda invalidada. Fix:echo $! > raw/weston.piden el step de arranque ykill -0 "$(cat raw/weston.pid)"en el step de captura. -
Comando documentado ≠ comando real (iteración 2): el doc muestra
weston --headless --use-pixman --backend=headless-backend.so, pero el workflow omite--headless(su propio comentario explica que weston 13 lo rechaza junto a--backend). El doc reproduce el comando de la iteración que fallaba. -
Contradicciones internas del doc:
- El header dice "la matriz completa (Mutter/KDE/Hyprland) requiere self-hosted; este workflow valida solo weston" — pero el workflow ejecuta los 4 jobs y Mutter/KWin quedaron validados en CI (la propia tabla lo dice).
- "No se compila Mutter/KDE/Hyprland en CI" — falso: se instalan vía apt y Mutter/KWin corren de verdad.
- "Run reproducible:
--repo sosan/quorb" — instrucción específica del fork; indicar el equivalente para este repo o aclarar el origen.
🟡 Recomendados
- El run de evidencia citado (
39339723250) está enfailurepor el job Hyprland (paquete ausente, esperado). Concontinue-on-error: trueen ese job —o skip explícito con aviso— el run queda verde y citable limpio, documentando Hyprland como pendiente self-hosted/PPA. - Los run IDs dan 404 desde
egdev6/quorb(son runs del fork). Indicar el repo origen junto a cada ID, o adjuntar logs/artefactos. - Menores: falta newline al final en ambos archivos; el env
XDG_CURRENT_DESKTOP=GNOME/KDEse fija manualmente víaGITHUB_ENV(no lo emite el compositor) — decirlo explícitamente en la doc para no presentarlo como salida real del compositor.
Lo que está bien ✅
- Evidencia real de compositor headless: socket
wayland-0, logs, artefactos por job. - Referencias de código correctas (
wm_compat.rs:289,:215) contramain. permissions: contents: read, timeouts, SHA pinneado, sin tocar workflows existentes.
Con 1–4 resueltos y la aclaración del origen de los runs, listo para merge. El pendiente de sesión real (bandeja, atajos, click-through) sigue como criterio de cierre de #107, en línea con la matriz de #105.
|
@egdev6 @sosan — dejé la revisión formal del PR como review con changes requested (ver pestaña "Files changed"). Resumen de lo bloqueante antes de merge:
Recomendado: El resto está muy bien: evidencia real de compositor headless, referencias de código correctas contra |
…gdev6#107) Ajustes del veredicto en egdev6#107 (comentario 6280263933 sobre PR egdev6#151): 1. Job Hyprland con continue-on-error: true (paquete ausente en ubuntu-24.04, run de evidencia queda en success con 3 jobs validados). 2. Run IDs documentados como del fork sosan/quorb (404 desde egdev6/quorb; URL de verificacion github.com/sosan/quorb/actions/runs/<id>). 3. Bug de PID entre steps corregido: echo $! > raw/weston.pid y lectura con fallback (cat raw/weston.pid 2>/dev/null || echo 0) + kill -0. 4. Doc actualizada: encabezado ya no dice "matriz completa requiere self-hosted" (weston/Mutter/KWin corren en ubuntu-latest); nota de que XDG_CURRENT_DESKTOP/DESKTOP_SESSION (GNOME/KDE) se fijan manualmente via GITHUB_ENV como simulacion (el compositor headless no las emite). Ademas: comando real de weston en la doc (sin --headless, fix iter 2) y comentario del workflow alineado con la matriz actual. Co-Authored-By: Claude Code <noreply@anthropic.com>
egdev6
left a comment
There was a problem hiding this comment.
@egdev6 @sosan — re-revisé el commit 749283a y los 4 bloqueantes están resueltos y verificados:
WESTON_PIDpersistido enraw/weston.pidy leído en el step de captura — la evidencia de "alive" ya es válida.- Doc actualizado al comando real (sin
--headless, con la explicación del rechazo de weston 13). - Header coherente con el workflow: weston/Mutter/KWin en CI, env GNOME/KDE aclarado como simulación manual vía
GITHUB_ENV, Hyprland pendiente concontinue-on-error. - Origen del fork documentado con URLs verificables;
continue-on-error: trueverificado en ejecución real (run39417560610: success global, 3 jobs green).
Menores no bloqueantes que quedan: newline final en ambos archivos y añadir el run post-fix 39417560610 como evidencia definitiva en la doc (puede hacerse en un seguimiento).
Apruebo; mergeo a continuación.
Context
Issue #107 (feat(linux): hacer funcional el escritorio y widget nativos) necesita evidencia de la matriz Wayland. Este PR aporta un workflow que levanta compositores Wayland reales en runner CI (ubuntu-latest) y el doc de evidencia.
Cambios
.github/workflows/w0-wayland.yml(nuevo): 4 jobs (workflow_dispatch) que instalan y lanzan compositores Wayland headless y capturan env vars + socket.docs/wayland-evidence/W0-WAYLAND-EVIDENCE.md(nuevo): hallazgo F11 (Wayland genérico) + matriz Wayland con resultados de runs 39333298554 y 39339723250.Matriz Wayland validada en CI
Pendiente
Smoke en sesion real (bandeja visible, atajos, click-through con WM/compositor real) sigue siendo el criterio de cierre de #107.
Refs #107