mikhail-m1 / illuminanced

Ambient Light Sensor Daemon for Linux
GNU General Public License v3.0
51 stars 16 forks source link
daemon illuminance light linux rust

Ambient Light Sensor Daemon For Linux

A user mode daemon for automatically changing brightness based on light sensor value designed for modern laptops. Not all devices might be supported.

How to test befor install

Run from a terminal sudo watch cat /sys/bus/acpi/devices/ACPI0008\:00/iio\:device0/in_illuminance_raw and check that number is changing (try close the sensor or add more light). If the number is still the same it means the sensor driver doesn't work. If you see file not found error try to find correct path for in_illuminance_raw inside /sys/bus/acpi/devices/.

For ZBook 15 G6, Framework laptops, and may be others, the sensor path is /sys/bus/iio/devices/iio:device0/in_illuminance_raw. So try sudo watch cat /sys/bus/iio/devices/iio:device0/in_illuminance_raw and change the config if it works for you.

Supported laptops

Works on ASUS Zenbooks with built-in driver acpi-als:

Also works on Framework laptops:

On Dell Inspiron 13 7353, need to change driver path and brightness levels.

Some times works (base on responses)

Doesn't work on Zenbooks because of driver issue:

Something wrong with Arch Linux may be related with syslog, a pull request is appreciated

Please fill a response form, it may helps other users

Keyboard back light is not adjust because my laptop doesn't have it. Want to help? Create an issue.

Install package (experimental)

Finally I found time to create deb package

To install and start run next commands after download:

sudo dpkg -i ~/Download/illuminanced_1.0-0.deb
sudo systemctl enable illuminanced.service
sudo systemctl start illuminanced.service

You can check status by running systemctl status illuminanced.service

Please open an issue if it doesn't work.

How to build & install

How to Adjust

How it works

Reads illuminance from /sys/bus/acpi/devices/ACPI0008:00/iio:device0/in_illuminance_raw, apply Kalman like filter, set back light value base on defined points. Unfortunately I cannot find a way how get events from iio buffers, for acpi-als driver, so now it polls.

<Fn> + A

Switches three modes:

Contribution

Any feedback are welcome