Display rotation applies live but is never saved; layout save also wipes other monitors and forces VRR off #28
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
How I found it
Nested Hyprland session with BOS's own
scripts/display/monitors.lualoader. Displays > Layout: set Rotation to Right;hyprctl monitorsshowedtransform: 1, but the writtenhypr/monitors.jsoncontained only output/mode/position/scale. Also: after applying a scale change, the sandboxmonitors.jsonlost its savedeDP-1entry and contained only the connected output.Code:
src/src/commands/hyprland.rsapply_monitor_layout(around line 162).Confidence
High for rotation (reproduced and the struct has no field). High for dropped entries (reproduced; code writes only the live list). Medium for VRR (code reading).
Explanation
MonitorRulehas notransform, so rotation is lost on the next login orhyprctl reload.apply_monitor_layoutbuildsrulesonly from the currently connected monitors and callswrite_monitor_rules(&rules), replacing the file. A saved layout for an unplugged external display is deleted every time any display setting is changed.vrr = false, silently turning VRR off.Expected: merge into existing rules by output name, persist transform (and VRR), never drop rules for disconnected outputs. Also add a "Keep these display settings?" countdown that reverts, since a bad scale or rotation can make the screen hard to use.