How to deal with the increasing amount of display settings
The KCM is slowly getting crowded as we support more display capabilities and workarounds, and I think it's worth looking into how to manage this better design wise. This is how things look on my system with !289, HDR enabled and RGB range forcefully shown (because amdgpu doesn't support it yet):
We currently have these options, already grouped because they're a lot:
- the usual basic output stuff: enable/disable, position, mode (resolution + refresh rate), scale, rotation, mirroring
- output "priority" ("primary" screen setting in 2-monitor setups)
- variable refresh rate
- overscan (workaround for horrible displays, usually old TVs)
- rgb range (workaround for horrible displays and/or drivers, sadly not that uncommon)
- HDR + some settings for it, or color management based on ICC profiles, or color management based on the EDID
And the global settings
- scaling for X11 apps
- allow / disallow screen tearing
I also want to still add:
- maximum bits per color (workaround for horrible displays/cables/drivers that can make a screen randomly flicker to black or not work at all)
- a setting to reduce brightness flicker for VRR displays (also a workaround for displays)
- a page for HDR calibration / color adjustments / profiling
- a setting to make outputs "audio only" (workaround for HDMI being used for audio transfer, when it's a video cable. Check https://bugs.kde.org/show_bug.cgi?id=473685 for details)
- a setting to reduce power usage by reducing color accuracy on laptop displays
- maybe a setting for automatic brightness
- a setting for automatic whitepoint adjustment (based on ambient color sensors some laptops and phones have)
- a setting for manual whitepoint adjustment
- not a setting but still: information about how the display is connected: the actually used bpc, the physical connector type, the GPU it's connected to
One of the options for how to deal with this would be to split this into three pages:
- the main page, with the options that a lot of people will know and be interested in: the basic stuff like position, mode, scale etc, probably variable refresh rate, and the global settings
- a "workarounds" page, which users should only need to open if they have some problem with their display. This would contain overscan, rgb range, maximum bits per color, maybe the brightness flicker thing for VRR, the "audio only" thing. The information about the display would also be useful in here, with a button to copy it for bug reports perhaps
- a "HDR and color management" page, for all the color related stuff (minus the "rgb range" thing)
To make the more esoteric options understandable, I'd like to have always-visible explanations directly on the page - at least for the workarounds. Something in the direction of
RGB Range: [automatic]
Determines whether or not the range of possible color values should be limited for this display, which is often needed with old TVs. Try changing it if colors look washed out
would imo be a lot better than ContextualHelpButton
s next to every option.
What do you think? Do you have any alternatives in mind? @teams/vdg