Repository navigation
Description
Objetivo y motivo
Ofrecer una experiencia de escritorio Linux utilizable dentro de la matriz aprobada en #105, no inferir paridad por compilar Tauri.
Alcance
- Bandeja, widget y paneles: visibilidad, clic, foco, transparencia, anclaje a bordes, multimonitor y escala; comprobar comportamiento real del compositor.
- Notificaciones, atajos globales y arranque al iniciar sesión con política de permisos/soporte definida para la matriz X11/Wayland.
- Ajustes y estados de error en Linux sin textos ni rutas Windows engañosos; coordinar traducciones propias con #66.
- Excluye prometer soporte universal Wayland/compositores, nuevos efectos/audio, rediseño UI, alterar Windows/macOS y distribución pública.
Dependencias
#105 integrado y matriz/contrato de escritorio aprobados. Independiente técnicamente de #106 tras #105; coordinar superficies compartidas.
Criterios de aceptación
- Bandeja, widget y paneles accesibles, correctamente posicionados y recuperables en la sesión gráfica seleccionada, incluida segunda pantalla/escala cuando pertenezcan a la matriz.
- Foco, transparencia y cierre/reapertura no dejan ventanas inaccesibles ni interrumpen el escritorio en los casos verificados.
- Notificaciones, atajos y autostart se verifican o se declaran limitaciones claras por sesión/compositor; fallos no se presentan como activación exitosa.
- Textos/rutas específicos de Linux no indican Windows; ajustes existentes conservan datos.
- Tests deterministas de geometría/estado más comprobación visual/funcional real Linux; regresión Windows aplicable.
Orientación
src-tauri/src/lib.rs, src-tauri/tauri.conf.json, src/lib/dock.ts, src/Widget.tsx, src/Settings.tsx; conservar los contratos públicos de configuración y tratar las diferencias del compositor como resultados observados, no supuestos.
Comprobaciones y ODD
Observar widget/bandeja/servicios en la matriz #105 → decidir comportamiento y degradación explícita por compositor → desarrollar por superficies con pruebas RED/GREEN donde proceda → verificar en escritorio real con ventanas, bandeja, multimonitor/escala y permisos, además de npm test, tipos/build, cargo test y regresión Windows pertinentes. Salida: evidencia y límites documentados.
Coordinación y entrega
Planificada y bloqueada por #105. Puede avanzar en paralelo con #106 después de #105. Sin assignee inicial; revalidar issue, PR y responsables antes del inicio explícito. No desplazar el primer objetivo nuevo recomendado #66. Tests/docs junto al código; planificación no autoriza PR/merge/release.
Activity
feat(linux): add window-manager detection for Ajustes (F3 egdev6#107)
fix(linux): make wm_compat tests thread-safe (pure Env, no global env)
docs(linux): document intentional clones in wm_compat
fix(linux): wm_compat normalises empty env strings to None
feat(linux): port egdev6#106 CLI login + secrets + keyring hint (egde…
ci(linux): retirar el pin de linuxdeploy (TAURI_BUNDLER_TOOLS no lo c…
sosan commentedon Oct 17, 2026
Preparación de PR (sin autoasignación)
El trabajo de la unidad 2 está preparado en la rama
sosan:feat-linux-l2-107(fork privado, ya empujada). La PR se abrirácuando se fusione #114 (#105), según la decisión coordenada de no
tomar la issue como asignación.
Alcance: degradación estructurada y explícita por superficie de escritorio
(estado/nota para X11, GNOME/Mutter, KDE Wayland, Hyprland/WLR y Wayland
genérico), bloque «Sesión de escritorio» en Ajustes (solo Linux), textos de
almacén de secretos neutros, docs con límites y diagnóstico; incluye el fix
del pánico de
taoque la parte Linux necesita para arrancar. Sindistribución ni updater.
Evidencia de validación ya ejecutada:
cargo test --lockeden Linux CI: 171 passed / 0 failed (run38961455193)npm test311/311;typecheckybuilden verdetaoaplicado: run38981116643Pendiente para cierre completo: verificación en sesión real (bandeja,
foco, multimonitor/escala, atajos) y coordinación con el mantenedor sobre
el orden #114 → #122 → #107.
feat(linux): reconocer niri/river/wayfire como Wayland y test de UA v…
feat(linux): separar protocolo Wayland de identidad de escritorio y n…
feat(linux): port #106 CLI login + secrets + keyring hint (#106) (#122)
feat(linux): límites de escritorio por superficie y bloque «Sesión de…
feat(linux): land egdev6#128/egdev6#129 review adjustments + fix merg…
16 remaining items
docs(linux): record real Wayland matrix run results (39333298554)
fix(linux): mutter D-Bus session + kwin virtual without headless
docs(linux): record Mutter and KWin as validated in Wayland matrix
docs(linux): only Hyprland remains pending in Wayland matrix
docs(linux): W0 Wayland evidence — workflow + validated matrix (issue e…
sosan commentedon Oct 20, 2026
@egdev6 @Rafaeldelinares,
Complementando el smoke X11 (Arch/Xvfb), dejo evidencia de la matriz Wayland en CI (
ubuntu-latest, runs39333298554y39339723250) en el PR #151 (sosan:wayland-matrix-107, commite8e4c0d).Workflow + doc
.github/workflows/w0-wayland.yml(nuevo): 4 jobs que instalan y lanzan compositores Wayland reales headless y capturan env vars + socket.docs/wayland-evidence/W0-WAYLAND-EVIDENCE.md(nuevo): F11 + matriz con resultados.Matriz Wayland validada en CI
wayland-0,XDG_SESSION_TYPE=wayland,westonwayland-0,XDG_SESSION_TYPE=wayland,XDG_CURRENT_DESKTOP=GNOMEwayland-0,XDG_SESSION_TYPE=wayland,XDG_CURRENT_DESKTOP=KDELos 3 validados corren compositor real headless:
--use-pixman --backend=headless-backend.so→Using Pixman renderer,Output 'headless' enabled,weston-keyboard+weston-desktop-shelllanzados, socketwayland-0.mutter --headless --waylandcondbus-run-sessionen background (fix del session bus) → socketwayland-0, envGNOME.kwin_wayland --virtual --no-lockscreen(sin--headless, que 5.27 rechaza) → llvmpipe OK, socketwayland-0, envKDE.Pendiente
Hyprland (self-hosted/PPA) y el smoke en sesión real (bandeja visible, atajos, click-through con WM/compositor real) siguen como criterio de cierre de #107.
egdev6 commentedon Oct 20, 2026
@egdev6 @Rafaeldelinares — revisé el comentario de @sosan y el PR #151 (
e8e4c0d) contra la evidencia real. Veredicto: la contribución es válida y avanza #107, con cuatro ajustes menores antes de considerarla evidencia definitiva.Qué se sostiene ✅
.github/workflows/w0-wayland.yml+docs/wayland-evidence/W0-WAYLAND-EVIDENCE.md.39339723250): socketwayland-0creado, env capturado, artefactos publicados.Ajustes solicitados⚠️
failure, no en éxito.39339723250(forksosan/quorb) falló por el job Hyprland (paquete ausente). Sugierocontinue-on-error: true(o skip explícito con aviso) en ese job para que el run de evidencia quede verde y se cite limpio, documentando Hyprland como pendiente self-hosted/PPA.egdev6/quorb(404 desde aquí: son runs del fork). Pediría aclararlo en el comentario/doc, o adjuntar los logs/artefactos directamente.WESTON_PIDse define en un step y se consulta en otro, donde está vacío →kill -0falla siempre yraw/status.txtsiempre dice "weston exited" aunque el compositor esté vivo. La evidencia de "weston alive" es inválida tal como está; basta persistir el PID en un archivo (echo $! > raw/weston.pid) y leerlo en el step siguiente.ubuntu-latest. Además conviene dejar explícito queXDG_CURRENT_DESKTOP/DESKTOP_SESSION(GNOME/KDE) se fijan manualmente víaGITHUB_ENVcomo simulación, no porque los emita el compositor.Alcance vs. criterios de #107
Esto es evidencia de entorno (env vars + socket de compositor real), no valida bandeja/widget/atajos/notificaciones en sesión real. El propio comentario lo reconoce como pendiente, en línea con la matriz de #105. Con los 4 ajustes anteriores, considero la parte de matriz Wayland de CI lista para revisión/merge del PR #151.
docs(linux): aplicar 4 ajustes del owner en evidencia Wayland (issue e…
sosan commentedon Oct 20, 2026
Ajustes aplicados tras tu veredicto en PR #151 (commit
749283a, ramawayland-matrix-107):continue-on-error: truecon comentario explícito: el paquetehyprlandno existe en ubuntu-24.04 universe, el job falla enapt instally el run de evidencia queda en success con los 3 jobs validados (weston, Mutter, KWin).39333298554y39339723250se ejecutaron ensosan/quorb(donde se iteró el workflow antes del PR). Desdeegdev6/quorbdevuelven 404; en el doc quedó la URL de verificacióngithub.com/sosan/quorb/actions/runs/<id>y la forma de re-ejecutarlos (gh workflow run w0-wayland.yml --repo sosan/quorb).echo $! > raw/weston.piden el step de lanzado yWESTON_PID=$(cat raw/weston.pid 2>/dev/null || echo 0)+kill -0 "$WESTON_PID"en el de captura (persistencia entre steps por archivo, no env var).ubuntu-latest; solo Hyprland queda self-hosted/PPA) y queda explícito queXDG_CURRENT_DESKTOP/DESKTOP_SESSION(GNOME/KDE) se fijan manualmente vía$GITHUB_ENVcomo simulación — el compositor headless no los emite; lo que sí emite y captura es el socket Wayland real.He lanzado un run de validación del workflow en
sosan/quorb(ramawayland-matrix-107) para confirmar los fixes; los 4 ajustes están en el PR #151.sosan commentedon Oct 20, 2026
Validación en CI real — run
39417560610(forksosan/quorb, ramawayland-matrix-107): run general ✅ success.raw/status.txt:weston alive (pid 3416)+ socketsrwxr-xr-x /run/user/1001/wayland-0(el fix del PID funciona)E: Unable to locate package hyprlandenapt install; el run queda en success gracias acontinue-on-error: trueArtefacto
w0-wayland-evidencedescargado:env.txtcon las 4 env vars (WAYLAND_DISPLAY=wayland-0, XDG_SESSION_TYPE=wayland, XDG_CURRENT_DESKTOP=weston, DESKTOP_SESSION=weston) +weston.pid= 3416 (coincide con el status.txt).Con esto quedan cubiertos los 4 ajustes del veredicto y la evidencia es reproducible desde el fork.
docs(linux): W0 Wayland evidence — workflow + validated matrix (issue #…
fix(linux): gates de plataforma para recovery/presence/open-delay y a…
SrStamm commentedon Oct 25, 2026
Dejo constancia de la toma de esta unidad para el smoke en sesión real, tal como
se pidió para poder cerrar #107.
Alcance: verificación de escritorio real, sin cambios de código. Ubuntu
26.04.1 LTS + GNOME Wayland (Mutter), ejecutando
main @ 404dca5connpm run app:dev. Cobertura prevista: arranque, posicionamiento del widget,bloque «Sesión de escritorio», bandeja, siempre encima, click-through, atajos,
notificaciones, monitor externo y cierre/reapertura.
Fuera de alcance: sonido de alertas (requiere personalización con vídeo) y
autostart XDG (escribe en
~/.config/autostart/), que quedarán declarados comono cubiertos.
Baseline previo en verde: 669 vitest + 225 node + 265
cargo test(1 ignored,el smoke de Secret Service), typecheck y build limpios.
GitHub:
SrStamm. Dejo esta unidad sin asignar por ahora: primero reviso elcómo corregir cada hallazgo y después retomamos la toma formal si procede.
Publico la evidencia en un segundo comentario con la tabla de criterios y las
mediciones.
SrStamm commentedon Oct 25, 2026
Evidencia de smoke en sesión real (Ubuntu 26.04.1 + GNOME Wayland,
main @ 404dca5)Entorno:
XDG_SESSION_TYPE=wayland,XDG_CURRENT_DESKTOP=ubuntu:GNOME,WebKitGTK 2.52.6 / GTK 3.24.52 / tao 0.37.1, lanzado con
npm run app:dev.Criterios de aceptación
dockEdge: "right". Bandeja invisible (ver abajo).config.jsonqueda enshortcuts.enabled: true. Autostart no probado.config.jsonantes/después del ciclo.Hallazgos
arrastre no lo mueve y no se puede llevar a una segunda pantalla. Cadena
verificada:
Widget.tsx:831 setPosition()→tao window.rs:472→event_loop.rs:301 window.move_(x, y)→gtk_window_move(), que es no-open Wayland. El origen del arrastre ya venía arreglado en fix(linux): gates de plataforma y cálculo del arrastre en Wayland (#168) #169, pero el lado
de salida no puede surtir efecto en este backend. Esto contradice la matriz
de
docs/build-linux.md§6, que daWidget: sípara Ubuntu 26.04 Wayland.GDK_BACKEND=x11el arrastre sí transportala ventana (medido allí: 406×270 px). Misma codebase, mismo archivo de
arrastre, distinto backend. El fallo se aísla en la vía Wayland.
org.kde.StatusNotifierWatcher(verificado por D-Bus) y el aviso recomiendainstalar una extensión que ya está instalada.
activos.
autoHide: trueno hay franja que retraer niforma de quedar por encima, así que la recomendación del propio bloque no se
cumple en este compositor.
Settings.tsxy el arrastre tampoco llega.Lo que sí quedó verificado
Arranque sin panic tao#1204 (los dos warnings del log son los documentados como
benignos en
build-linux.md§4). Bloque «Sesión de escritorio»: detectaWayland · ubuntuy lista las siete superficies con estadosok/limitedcoherentes. Click-through no atraviesa, exactamente como lo declara el propio
aviso («Mutter puede ignorar la región de input»), así que ahí la limitación
está bien declarada. Notificaciones visuales correctas. Persistencia de
ajustes correcta.
Pendiente declarado
Autostart XDG y sonido de alertas: no probados, con el motivo. Multimonitor solo
probado en GNOME; KDE y Hyprland fuera de esta ronda.
Coordinación
El síntoma de arrastre en Wayland coincide con el punto 4 de #168 y su fix en
#169 ya está en
main; lo que queda es el lado de salida descrito arriba. Lamedición de #179 bajo X11 es la contraparte de este caso. Propongo cerrar esta
unidad con los hallazgos 1 a 6 documentados en la matriz §6 y abrir dos issues
de bug separadas (una por clase: posicionamiento y feedback), que enlazo aquí en
cuanto estén creadas.
SrStamm commentedon Oct 25, 2026
Las dos issues de clase creadas a partir de esta evidencia:
bug(linux/wayland): la ventana no se puede posicionar (tiracentrada, arrastre y cambio de monitor inoperativos).
bug(linux): degradaciones informadas como éxito o conindicaciones que no resuelven (atajos, bandeja, auto-hide).
Quedan sin asignar por ahora: primero reviso cómo corregir cada hallazgo y
después retomamos la toma formal si procede. La matriz §6 de
docs/build-linux.mdhabría que actualizarla con lo que diga el mantenedor unavez se decida el alcance de cada fix.