Adjust external monitor brightness
Script to adjust external monitor brightness⚑
If you want to adjust the external monitor brightness according to the main display, you can run the following script after every brightness change to the main monitor.
#!/usr/bin/env bash
# check if external monitor connected
xrandr -q | grep -q "DisplayPort-4 connected" || exit 0
(
# Wait for lock on /var/lock/adjust_external_monitors_brightness.exclusivelock (fd 200) for 20 seconds
flock -x -w 20 200 || exit 1
# main screen brightness (from 0 to 255)
main=$(cat /sys/class/backlight/amdgpu_bl0/brightness)
# external monitor
l27_max=100 # max brightness
l27_0=40 # equivalent brightness of main for l27 min brightness
l27_100=255 # equivalent brightness of main for l27 max brightness
# equivalent brightness for the external monitor
l27=$(( 100 * ( (main > l27_0 ? main : l27_0) - l27_0 ) / (l27_100 - l27_0) ))
# try to set it until success
until ddccontrol -r 0x10 -w $l27 dev:/dev/i2c-11 | grep -q "Writing 0x10";
do
sleep 1;
done
) 200>/var/lock/adjust_external_monitors_brightness.exclusivelock
You will need to make a few adjustments:
- Change
DisplayPort-4
to whatever corresponds to your external monitor. - Change
/sys/class/backlight/amdgpu_bl0/brightness
if you use Intel. - Adjust the variables (
l27_max
,l27_0
,l27_100
). - Get the corresponding i2c device (change
i2c-11
) by runningddccontrol -p
.