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

Đang mở
#4 1 bình luận 1 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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).

Ngôn ngữ chính
QML
Star
3
Fork
0
Merge trung bình
48 phút
Pull request đã merge (30 ngày)
99

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của angelobdev/dotfiles

Tất cả issue của angelobdev/dotfiles

Issue tương tự

Thêm issue về Desktop Dev

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.