fix(linux): hacer que el widget sea visible en todos los escritorios virtuales (paridad con macOS)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 35/100
Línea de trabajo
The relevant gate is the #[cfg(target_os = "macos")] block around set_visible_on_all_workspaces(true) in src-tauri/src/lib.rs near line 1083. Read how the widget, detail and overlay windows are created, and check the tao Linux stick() path the issue cites, since it is a dependency and not in this repo. Before editing, get the maintainer's answer on whether this should be on by default or behind a setting, because the thread is still open. Done means the widget stays visible after switching workspaces on X11 or XWayland, with the failure logged and no change on macOS.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Contexto y motivación
Quorb está concebido como una tira de estado y control continua. En Linux, al cambiar de escritorio virtual (workspaces en KDE Plasma, GNOME, etc.), la tira desaparece porque el gestor de ventanas la confina al escritorio donde se inició el proceso.
En #112 se incorporó set_visible_on_all_workspaces(true) en src-tauri/src/lib.rs:1083 con un gate #[cfg(target_os = "macos")] bajo la asunción de que en Linux bastaba con always_on_top («Windows/Linux have no Spaces and always-on-top already covers it»).
Sin embargo, en Linux (X11 / KDE / GNOME) always_on_top (_NET_WM_STATE_ABOVE) solo mantiene la ventana flotando por encima dentro del mismo escritorio virtual, pero no acompaña al usuario al cambiar de workspace. Para acompañar entre escritorios se requiere declarar la ventana como sticky (_NET_WM_STATE_STICKY / _NET_WM_DESKTOP = 0xFFFFFFFF).
Diagnóstico técnico
En el motor de ventanas de Quorb (tao 0.37.1), set_visible_on_all_workspaces(true) ya está plenamente implementado para Linux (tao/src/platform_impl/linux/window.rs:762 y event_loop.rs:424):
WindowRequest::SetVisibleOnAllWorkspaces(visible) => {
if visible {
window.stick();
} else {
window.unstick();
}
}
La llamada a window.stick() de GTK envía al gestor de ventanas los mensajes EWMH oficiales para que la ventana se proyecte en todos los escritorios.
Alcance propuesto (Centrado en Linux)
Nos centramos exclusivamente en implementar y verificar esta paridad en Linux:
- Linux (X11 / XWayland):
- Ampliar el gate en
src-tauri/src/lib.rs:#[cfg(any(target_os = "macos", target_os = "linux"))] for label in [WIDGET, DETAIL, OVERLAY] { if let Some(w) = app.get_webview_window(label) { if let Err(e) = w.set_visible_on_all_workspaces(true) { eprintln!("No pude marcar «{label}» visible en todos los escritorios: {e}"); } } } - Otorga paridad inmediata con macOS sin dependencias nuevas ni cambios en la capa de frontend.
- Ampliar el gate en
- Linux (Wayland nativo):
xdg-shellpor diseño no ofrece a clientes regulares una petición para declararse sticky sin protocolos privilegiados de compositor (wlr-layer-shell). Con el camino X11/XWayland (GDK_BACKEND=x11), queda cubierto en el entorno operativo de Linux.
Pregunta para el mantenedor / Decisión de producto
¿Preferís que este comportamiento sea predeterminado e inherente al widget (igual que en macOS desde #112), o considerás necesario que esté sujeto a un interruptor en Ajustes (ej. Ajustes > Comportamiento > Mostrar en todos los escritorios virtuales)?
Abrimos el hilo para acordar la dirección antes de preparar la PR.
- Lenguaje dominante
- TypeScript
- Estrellas
- 10
- Forks
- 2
- Merge medio
- 5 h 55 min
- PR fusionados (30 d)
- 123
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de egdev6/quorb
-
Antigravity (agy CLI): not working on macOS — wrong log path and process detectionPosiblemente ocupada @EzequielKoulaksezian la tomó hace 3 días. Abiertostatus:approved type:bug
egdev6/quorb#237 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
feat(linux): elegir el idioma desde el primer contacto con QuorbPosiblemente ocupada @SrStamm la tomó hoy. Abiertoodd status:approved type:feature
Dificultad 4/5 3-5 días Aptitud para principiantes 18/100
egdev6/quorb#235 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
odd type:feature
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Los mantenedores suelen responder en 1 día
-
odd type:feature
Dificultad 5/5 Más de una semana Aptitud para principiantes 10/100
Los mantenedores suelen responder en 1 día
-
bug(detail): el panel de detalle no ajusta su ancho al área de trabajo (seguimiento de #228)Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 50/100
Los mantenedores suelen responder en 1 día
Todos los issues de egdev6/quorb
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
vercel-labs/durable-harness#53 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: Redesign tab bars ignore clicks on Linux: hidden chat layers keep window drag regionsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
area/docs area/ui enhancement
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
melgarafael/DeskcommCRM#4098 ·
Los mantenedores suelen responder en 1 día
-
bug ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
kerti/balances-v2#801 ·
Los mantenedores suelen responder en 1 día
-
lesson-submission pending-review
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
Ikalus1988/MisakaNet#4510 ·
Los mantenedores suelen responder en 1 día