feat(power): lower refresh rate on battery#2428
Conversation
|
Need help with additional testing, as I only have a single device with multiple refresh rates display (240/60). Also, changes to DisplayService.qml might be overengineered. |
|
Here's the first issue:
Probably can be resolved with this logic:
|
Add a Power & Sleep setting that lowers eligible displays to 60 Hz on battery and restores their previous mode on AC power. Skip displays without an available 60 Hz mode, displays with a single refresh-rate option, current modes at or below 60 Hz, and VRR-enabled outputs. Apply niri changes at runtime through output commands and use wlr-output-management as fallback.
|
Implemented stateless transitions between 60hz and higher refresh rates. |
|
update after latest changes: functionality looks better, but I’m still hitting one nasty crash. I can reproduce with this flow: dumps end in same path: so this looks more like quickshell workspace/output commit race on hotplug/reconfigure. |
|
Resolved. Added minimal 300ms debounce around DisplayService refresh-rate sync, and BatteryService now routes startup/power/profile/output refresh triggers through requestSync(...). This coalesces AC + external-display event bursts and avoids repeated mode applies that were triggering quickshell crash. |
Add a Power & Sleep setting that lowers eligible displays to 60 Hz on battery and restores their previous mode on AC power.
Skip displays without an available 60 Hz mode, displays with a single refresh-rate option, current modes at or below 60 Hz, and VRR-enabled outputs.
Apply niri changes at runtime through output commands and use wlr-output-management as fallback.
Closes #1203