Backlight et contrôle de la luminosité de l'écran

Il est toujours utile de savoir gérer la luminosité de l'écran d'un ordinateur portable, que ce soit pour la gestion de la batterie ou pour le confort.

La gestion de la luminosité étant très différente d'un constructeur à un autre, le fonctionnement de ce guide n'est pas garanti.

Les systèmes ci-dessous ont été testé et fonctionnent sous Arch Linux, avec un Lenovo ThinkPad P14s sous processeur AMD.

Sources de ce guide :

ACPI

La luminosité est ajustable en ajustant l'alimentation des LEDs (ou cathodes). Cette alimentation peut être contrôlé en utilisant le module noyau ACPI. Une interface est disponible dans /sys/class/backlight/.

Le nom du dossier dépend du modèle de votre carte graphique :

ls /sys/class/backlight/
amdgpu_bl0

Pour la suite de ce guide, amdgpu_bl0 sera utilisé à titre d'exemple.

On trouve dans /sys/class/backlight/amdgpu_bl0/ :

actual_brightness  device          scale      uevent
bl_power           max_brightness  subsystem
brightness         power           type

La puissance maximale est disponible dans max_brightness :

255

La puissance est contrôlable dans brightness, avec une valeur entre 0 et max_brightness.

echo 150 > /sys/class/backlight/amdgpu_bl0/brightness

Script

Deux types de scripts sont proposés pour contrôler de manière simple la luminosité de l'écran :

  • un script à lancer avec une valeur
  • utiliser les boutons du clavier sensés gérer la luminosité

Dans les deux cas, l'écriture dans /sys/class/backlight/amdgpu_bl0/brightness est protégé et accessible uniquement par root.

Rendre brightness éditable par tout le monde

Créer (ou modifier) le fichier /etc/udev/rules.d/backlight.rules :

sudo vim /etc/udev/rules.d/backlight.rules
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="acpi_video0", RUN+="/bin/chgrp wheel /sys/class/backlight/amdgpu_bl0/brightness"
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="acpi_video0", RUN+="/bin/chmod g+w /sys/class/backlight/amdgpu_bl0/brightness"

Cela rend le fichier /sys/class/backlight/amdgpu_bl0/brightness éditable par le groupe wheel.

-rw-rw-r-- 1 root wheel 4.0K Feb 10 11:31 /sys/class/backlight/amdgpu_bl0/brightness

Editer directement les permissions du fichier avec les commandes ne suffit pas, cette configuration ne survit pas à un redémarrage :

chmod 664 /sys/class/backlight/amdgpu_bl0/brightness
chown root:wheel /sys/class/backlight/amdgpu_bl0/brightness

Script cli

old=`cat /sys/class/backlight/intel_backlight/brightness`
max=`cat /sys/class/backlight/intel_backlight/max_brightness`
new=`expr $old + $1`

# make sure not to go below 0
if [ $new -lt 0 ]
then
	new=0
fi

# make sure not to go over the maximum brightness
if [ $new -gt $max ]
then
	new=$max
fi

echo $new | tee /sys/class/backlight/intel_backlight/brightness

Boutons

sudo vim /usr/local/bin/brightness-up
#!/bin/sh

echo $(( $(cat /sys/class/backlight/amdgpu_bl0/brightness) + 15)) | tee /sys/class/backlight/amdgpu_bl0/brightness
sudo vim /usr/local/bin/brightness-down
#!/bin/sh

echo $(( $(cat /sys/class/backlight/amdgpu_bl0/brightness) - 15)) | tee /sys/class/backlight/amdgpu_bl0/brightness

Enfin, pour rendre les boutons utilisables sous i3 :

bindsym XF86MonBrightnessDown exec "brightness-down"
bindsym XF86MonBrightnessUp exec "brightness-up"