Support other compositors (niri, sway) through a compositor service in the shell

Abierto
#4 1 comentario 1 reacción 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo

Línea de trabajo

Start with shell.qml, ShellState.qml, and the listed shell files that import Quickshell.Hyprland; review the architecture and conventions docs before shaping the service. Check Quickshell’s compositor modules and niri’s JSON interface, then map the current Hyprland state, actions, and events onto a proposed first-step scope. Done means the team agrees on the service boundary and initial niri support scope; the issue explicitly asks to agree on the shape before substantial implementation.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area: hyprland area: shell feature help wanted

Asked for on r/Fedora (niri and sway are in Fedora's official repositories; Hyprland comes from a COPR), and a niri user offered to help. This issue is to agree on the shape before writing a lot of code.

Proposal

A small compositor service in the shell (e.g. services/Compositor.qml) that the rest of the shell talks to instead of Quickshell.Hyprland directly, with one implementation per compositor: Hyprland first (exactly today's behaviour), then niri, maybe sway. Nothing changes for current users.

What the service needs to offer, from what the shell uses today:

  • Focused monitor (Hyprland.focusedMonitor, 12 uses): which screen a panel, popup or OSD opens on.
  • Active window (Hyprland.activeToplevel, 13 uses) and the window list (toplevels): bar title, window menu, dock, Alt + Tab, emoji paste target.
  • Workspaces: the bar's pills, scrolling, the dock.
  • Actions (Hyprland.dispatch, in 7 files, written for the Lua config's hl.dsp): focus, move, close, send a shortcut, workspace changes.
  • Events: the raw screencast event for the privacy indicator.
Where Hyprland is used today
  • Shell (20 files import Quickshell.Hyprland): shell.qml, ShellState.qml, share.qml, bar/Bar.qml, bar/WindowMenuWindow.qml, components/MenuLayer.qml, dock/DockWindow.qml, notifications/NotificationPopups.qml, panels/DisplayPanel.qml, panels/Hints.qml, panels/WindowSwitcher.qml, session/Authentication.qml, and the services Agent, Assist, BluetoothAgent, Dock, Emoji, Osd, Privacy, Zoom.
  • Scripts and helpers calling hyprctl (11): desktop-ai, desktop-area, desktop-power, and common.py, osk.py, plugins.py, portal_picker.py, recording.py, rotation.py, theme.py, wallpaper.py in libexec/desktop/.
  • Hyprland only, by nature: the Lua config itself (hypr/), the plugins (Hyprspace overview, Hyprgrass gestures, Hyprglass, HyprCapture), the drop-down AI console (a special workspace with its own layout), and the XDPH screen-share picker (share.qml).
Open questions
  • Scope of a first step: the shell running on niri with the core panels (bar, launcher, Control Center, notifications) is a realistic first PR; tablet mode, gestures and the console can stay Hyprland-only, hidden elsewhere.
  • niri's side: niri msg --json and its event stream for state; Quickshell's built-in modules cover Hyprland and i3/sway IPC (worth checking what fits niri best).
  • Config: niri and sway need their own compositor config (binds, rules, autostart), as a separate Stow package and installer profile.
  • CI: check.sh should keep passing; a niri config check if niri offers one.

Conventions to follow: architecture, conventions (every visible string through I18n.tr, in both catalogs).

Lenguaje dominante
QML
Estrellas
3
Forks
0
Merge medio
48 min
PR fusionados (30 d)
99

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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de angelobdev/dotfiles

Todos los issues de angelobdev/dotfiles

Issues similares

Más issues de Desktop Dev

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.