I have always wanted cool features in Linux because I use it day to day as my OS. I have always wanted to implement this feature and do it properly: one that automatically adjusts keyboard and LCD backlights using data from the Ambient Light Sensor.
I enjoy low-level programming a lot. I delved into writing this program in C. It came out well and worked seamlessly on my device. Currently, it only works for keyboard lights. I designed it in a way that the support for LCD will come in seamlessly in the future.
But, in the real world, people have different kinds of devices. And I made sure to follow the iio implementation on the kernel through sysfs. I would like feedback. :)
FWIW, iio-sensor-proxy gives you a user-accessible dbus API for ambient light sensors. GNOME has had a feature to auto-adjust screen brightness based on it for ages (though their implementation leave much to be desired and hasn't changed despite of several attempts to rework it over the years).
$ monitor-sensor Waiting for iio-sensor-proxy to appear +++ iio-sensor-proxy appeared === Has accelerometer (orientation: normal) === Has ambient light sensor (value: 56.200000, unit: lux) === Has proximity sensor (near: 0) Light changed: 56.200000 (lux) Light changed: 55.100000 (lux) Light changed: 58.500000 (lux) Light changed: 48.800000 (lux)What strategy does this apply? For the display I assume it should increases the brightness as the ambient light rises. But for keybord light it's the opposite: I'd want it off in a lit environment and on in a dark one.