Repository navigation
display config: read live layout from hyprland instead of the cached wlr snapshot - #3418
Conversation
|
/claude review |
Claude reviewNo issues found. Checked: the live-overlay in |
|
/claude review |
Claude reviewNo issues found. Checked: the live-overlay in |
Description
On Hyprland the display config canvas and profile matching use position/transform/scale from the daemon's
zwlr_output_manager_v1snapshot taken at shell start. Hyprland only re-sends those head properties on a mode change, so rotating or moving an output from Settings never updates the canvas: a 90° output stays drawn as landscape until dms is restarted.HyprlandService:liveMonitor()fromHyprland.monitors, refresh monitors afterhyprctl reload, emitmonitorLayoutChangedonly when name/x/y/scale/transform actually change (Quickshell refreshes monitors on every workspace switch, so this is a no-op otherwise).CompositorService: treatconfigreloadedlikemonitoraddedv2.DisplayConfigState.buildOutputsMap(): overlay live x/y/scale/transform from Hyprland when the output is present there; rebuild onmonitorLayoutChanged. Disabled outputs keep the wlr values.niri and other compositors are untouched.
Tested on Fedora 44, dms 1.5.3 + this patch, Hyprland 0.56.2 (Lua config), DVI-I-1 1920x1080 + HDMI-A-1 3840x2160@2: Transform 90° → Normal → 90° updates the canvas without a restart, snapping against the portrait output works, no QML warnings in the journal.
Type of change
Related issues
Fixes #3417
Screenshots / video
See #3417 for the before state.
Checklist
I18n.tr()with translator context, reusing existing terms where possiblemake fmt, added/updated tests,make testpasses, andgo mod tidyis cleanmake lint-qmlwith no new warnings