* feat(power): lower refresh rate on battery (#1203)
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.
* fix(quickshell): debounce display refresh sync
* chore: regenerate settings_search_index.json for pre-commit CI fix
* fix: translator context is missing for lowerDisplayRefreshRateOnBattery
* fix: activeDisplayProfileModes is missing from SettingsSpec
* feat: added guard to syncRefreshRates function
* refactor(display): move refresh sync listeners to display service
* fix(display): publish active profile modes after config write
* feat(display): persist previous refresh modes
* fix(display): route refresh mode writes through compositor backends
* fix(display): detect preferred niri refresh modes
* some small cleanups
---------
Co-authored-by: bbedward <bbedward@gmail.com>
- Note: We do not convert your existing conf configs to lua. This update only reflects DMS defaults state
- Updated README.md to reflect changes
- Updated Keyboard shortcut support
* fix(niri): properly close KDL output block when disabled
* feat(display): parse off directive and sync disabled state from compositor configs
* feat(display): visual treatment and canvas filtering for disabled outputs
* feat(display): eager auto-profile generation with debounced auto-select
* refactor(display): pass target profile ID to confirmChanges and remove dead code
* fix(display): make profile dropdown reactive by binding to property directly
* i18n(display): add Disabled translation term for output state
The display config UI only applied changes for compositors with a
config-file backend (niri, hyprland, dwl). For any other compositor
that supports wlr-output-management-unstable-v1 the "Apply Changes"
button was silently a no-op.
Add WlrOutputService.applyOutputsConfig() as a high-level apply that
mirrors the generateOutputsConfig() pattern of the existing services
but applies directly via the protocol instead of writing a config file.
Route the default case in backendWriteOutputsConfig() to it.
This enables using dms-shell as a wayland compositor for emacs wayland
manager (ewm).