Skip to content

Implementation of "Fullscreen Only" VRR toggle #1649

Description

@JamesFromFL

Feature Description

The addition of a third state for Variable Refresh Rate in the DMS Monitor Settings GUI. Currently, the GUI only supports a binary toggle (On/Off). I would like an option for "vrr, 2", which enables VRR only when an application is in fullscreen.

I am opening this new issue as a properly detailed follow-up to #1548. I wanted to provide a complete and clear feature request to help prioritize this addition.

Use Case

On many high-refresh monitors, such as my Samsung Odyssey series panels and other VA or OLED displays, enabling Variable Refresh Rate (VRR) on the desktop causes noticeable gamma flicker. This is especially distracting during productivity tasks, such as using a terminal or a web browser, where the refresh rate fluctuates slightly, triggering brightness changes.

Currently, DankMaterialShell only implements a binary on/off switch in its GUI, which limits users to the vrr, 0 and vrr, 1 states. While vrr, 1 is great for gaming, it is the direct cause of this desktop flicker.

Compositor(s)

  • All compositors
  • Niri
  • Hyprland
  • MangoWC (dwl)
  • Sway
  • Other (specify below)

Proposed Solution

Hyprland natively supports a third state to solve this: vrr, 2 (Fullscreen Applications Only). When this setting is utilized, the compositor intelligently toggles VRR only when an application takes over the entire display. This allows the desktop to remain stable and flicker-free at a fixed refresh rate while still allowing games to benefit from variable sync once they go fullscreen.

Update the DMS configuration generator to include a "Fullscreen Only" toggle when VRR is toggled on.

Example:

monitor = desc:Samsung Electric Company LC34G55T, 3440x1440@164.999, 900x1440, 1, vrr, 2

Image

Alternatives/Existing Solutions

I have been manually editing the outputs.conf generated by DMS to change vrr, 1 to vrr, 2. However, because DMS manages this file, any change in the GUI or a reload overwrites these manual edits. A native GUI option is the only way to make this setting persistent within DMS and Hyprland.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions