Introduction
With Wayland KWin needs to provide certain services, which were provided before that by the Xserver. One of these is gamma correction, which includes the - by many people beloved - functionality to reduce the blue light at nighttime. This patch provides the KWin part of that. It is self contained, but in the end will work in tandem with a lib in Plasma Workspace and a KCM in Plasma Desktop, which can be used to configure Night Color. Diffs for these parts will be posted this weekend.
Features:
- Three modi:
- Automatic: The location and sun timings are determined automatically (location data updates will be provided by the workspace)
- Location: The sun timings are determined by fixed location data
- Timings: The sun timings are set manually by the user
- Color temperature value changes are smoothly applied:
- Configuration changes, which lead to other current values are changed in a quick way over a few seconds
- Changes on sunrise and sunset are applied slowly over the course of few minutes till several hours depending on the configuration
- The current color value is set immediately at startup or after suspend phases and VT switches. There is no flickering.
- All configuration is done via a DBus interface, changed values are tested on correctness and applied atomically
- Self contained mechanism, speaks directly to the hardware by setting the gamma ramps on the CRTC
- Currently working on DRM backend, extensible to other platform backends in the future
- The code is written in a way to make the classes later easily extendable to also provide normal color correction, as it's currently done by KGamma on X
This patch solves the redshift part of T4465 and lays the foundations to solve the task in total in the near future.