A client might want to change certain color properties, such as gamma or saturation for an output. This protocol allows modification of saturation values, as well as gamma values for RGB respectively.
On X11, clients modify CRTC properties directly via XRandR. This is
undesirable, as there is no way of limiting which properties should be
By introducing abstract color properties like
saturation_r we give
clients control over color output properties, while the compositor
handles setting the correct properties for the requested configurations.
This protocol can be used by games to change gamma on a compositor level (Source Engine games do this on X11). It would also allow other applications to control these values. Particularly, the library libvibrant I worked on would use this interface to allow easy manipulation of color saturation. This can be used to modify color saturation based on the currently running application. This would allow the user to enable a reading mode, which removes all saturation from the output. Other uses would be in games.
NOTE: This is a WIP protocol
Also, this is the first time I propose something in the Wayland space, so there might be problems with this, or things I have overlooked.
Currently there are no implementations of this in any compositor.
I drafted this interface very spontaneously, so it might change after trying to implement it in a compositor.
It currently only contains controls for saturation and gamma, while more properties could be exposed. I don't know how well this will play with 10bit-color or other things I might have overlooked.