This is a WIP/RFC
This is WIP, please excuse the blunt g_print()s and naive code
gsd-power controls how the desktop changes brightness on key events, or when adjusting gnome-shell or gnome-control-center brightness sliders.
This API takes a value from 0-100, representing a 1:1 relation to the backlight's brightness level. This range is divided by default into 20 steps, this means that you have 20 equally spaced brightness settings to choose from.
However, the above presents a usability problem when trying to adjust brightness on the lowest levels, where you probably want a more nuanced and finer control.
For example, on my MacBookPro11,1 (2013, intel_backlight), gsd-power folows this progression:
* value: 11 - 82 - 152 - ... - 1328 - 1388 * step: 01 - 02 - 03 - ... - 20 - 21
On the other hand, on its native OSX, the following progression is followed:
* value: 22 - 37 - 56 - ... - 1140 - 1385 * step: 01 - 02 - 03 - ... - 15 - 16
This approach is much more usable in that it allows nuance in the lowest settings, where it is much more visible to people with sensitive eyes, or in low light situations like a dark room.
This commit introduces an ease-in curve that takes 0-100 values from the API/UI and translates them into ease'd-in values and sets those transparently to anyone using gsd-power API (shell/settings/dbus).
Note that the actual implementation follows gsd's current number of steps, and not only 16 like in the comparison
Full range of values/steps