feat: add asteroidz as a supported compositor#2806
Conversation
asteroidz is a wlroots/dwl-lineage compositor that shares mango's tag model and uses a nested-KDL config. This adds first-class support for it, alongside the existing mango backend, without disturbing mango: - CompositorService: detect asteroidz via ASTEROIDZ_INSTANCE_SIGNATURE as a distinct compositor (isAsteroidz), and route the shared dwl-tag sort/filter helpers through a dwlService accessor so both mango and asteroidz work - AsteroidzService: IPC/state service for asteroidz (parallels MangoService) - core: nested-KDL config generation (conf2kdl), asteroidz window-rule parser, and asteroidz cases added to the config/windowrules/keybinds commands - assets: asteroidz icon + matugen templates Additive only: mango, niri, hyprland, sway paths are unchanged; new Go packages ship with tests (conf2kdl, asteroidz_parser) and the suite passes.
Complete the additive UI wiring for asteroidz alongside mango: - shared dwl-tag gates now fire for both: isDwlTagCompositor = isMango || isAsteroidz - shared service calls (bar/dock/workspace/keybinds/session/config) route through CompositorService.dwlService (= isAsteroidz ? AsteroidzService : MangoService), so mango keeps using MangoService and asteroidz uses AsteroidzService - asteroidz-only features (per-output HDR/VRR, special workspaces) stay gated on isAsteroidz, so mango never enters those paths - AboutTab/settings label the active compositor (asteroidz or mangowc) additively - regenerated translations + settings search index from source Verified: go build ./... + full Go test suite pass; qmllint reports no syntax errors across all changed QML. Mango/niri/hyprland/sway paths unchanged.
|
Hi there, thank you for inquiring about integrated support into DMS. At this time, the Team believes as your project is quite new, that it will be best to give it time to mature and gain a user base before implementation it into our project. It's best to open a draft or discussion for matters like these going forward before you spend the time on PR integrations. Good luck and feel free to reopen a discussion in the future. |
|
New projects with this much code dependencies just add a lot of maintenance burden and they tend to iterate a lot and break a lot (like MangoWM itself has, between 1.4 and 1.5). Personally I'd recommend keeping things tighter with MangoWM so its easier to just flip a flag (like Sway/Scroll) - once userbase and stability and adoption grows then do things like migrate to KDL configuration format and what not. But since this is so much new code to maintain, its a bit tough to want it in mainstream DMS. Maybe if we had a mechanism to make compositor support more pluggable, that would be good for stuff like this. |
|
Sounds good, thanks, I realize it is a very big PR. Let's give it some time, thank you for your work! |
Adds first-class support for asteroidz — a wlroots compositor of the dwl/mango lineage (dwm-style tags, nested-KDL config) — alongside the existing
mangobackend. The whole change is additive: nomango/niri/hyprland/swaypath is removed or repointed.Design
CompositorServicerecognizes asteroidz viaASTEROIDZ_INSTANCE_SIGNATUREas its own compositor (isAsteroidz), independent ofisMango.isDwlTagCompositor = isMango || isAsteroidz, and shared service calls (bar, dock, workspace switcher, keybinds, session, config) route through a single accessor:MangoService, asteroidz usesAsteroidzService, one code path.isAsteroidz, so mango never enters those branches.Contents
AsteroidzService.qml— IPC/state service (parallelsMangoService).core/internal/config/conf2kdl.go— DMS.conf→ asteroidz nested-KDL (+ tests).core/internal/windowrules/providers/asteroidz_parser.go— window-rule parser (+ tests); additivewindowrules.Actionsfields.asteroidzcases in theconfig/windowrules/keybindscommands.Testing status — please read
go build ./...and the full Go test suite pass (incl. newconf2kdl/asteroidz_parsertests).qmllintreports no syntax errors across all changed QML.dwlServicerouting andisMango || isAsteroidzgates should be exercised on a real mango session (to confirm no regression) and a real asteroidz session. Happy to adjust based on your testing / CI.Notes