Remodel auxiliary properties data flow
Problem statement
Certain properties we have and need to evaluate in the backend are not meant to be passed on through the windowing system. At the moment these are:
- Scale value on X11 and KWinFT backends.
- Replication source on any backend.
- In the near future likely additional flags for scale, resolution, refresh rate that tell if the property was set manually to some specific value or an optimal one should be chosen by the system.
In practice the values of such properties are currently instead saved and loaded by KDisplay directly to so-called control files. But in any case the API of Disman becomes less intuitive and functional because of that:
- A different set of values is relevant when sending a configuration to the backend as when receiving one.
- The logic to save and load the auxiliary "control" values is currently not in Disman.
Solution ideas
Document API
Improve documentation of Disman API so it is clear some values must be side-loaded by the consumer in one direction.
Disman Control
Move auxiliary data storing from KDisplay to Disman and declare a new type Disman::Control that can be composed into a Disman::Config and side-loads the relevant additional values through one or two backends (for example via file reads/writes directly or a central control manager process via D-Bus if D-Bus is available).
