I auto-adjust the brightness on my display using a cron which runs at 7 pm everyday.
xrandr --output eDP-1 --brightness 0.9
This sets the brightness to 90% of maximum brightness.
Working with Linux Display environments in a cron
The above command works when run from my terminal. But when run on a cron, it does not produce any effect. We need to explicitly mention the "display number" as an environment variable DISPLAY
.
8 19 * * * DISPLAY=:0 xrandr --verbose --output eDP-1 --brightness 0.9
How to get the display number of your monitor?
Running xrandr
will give you a lot of output like
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis)
In my case, the display number is :0
Adjusting backlight brightness vs perceived brightness
If xrandr
is unable to find backlight, it only changes "perceived" brightness i.e it does software color correction. If we want to save battery, we will need to reduce the backlight brightness.
In Linux, the backlights can be found in /sys/class/backlight
. In my case, it was /sys/class/backlight/intel_backlight
. In this folder, there are many files like
actual_brightness
max_brightness
brightness
max_brightness
shows highest possible level of brightness for the display. We can adjust the value in brightness
file to reduce backlight brightness.
Here's what I do to adjust it: echo 1800 > /sys/class/backlight/intel_backlight/brightness
(in root crontab)
Unlike the xrandr command, this does not require setting any DISPLAY variable in the cron file.
Other tools
- brightnessctl is an easy to use tool which integrates well with systemd. It is also available in the package managers of various distributions like Debian, Ubuntu, Arch Linux.
Top comments (0)