backlight sur lenovo L520, LXDE et Debian stable
Article mis en ligne le 1er octobre 2021

par Rémi

N’ayant pas réussi facilement à faire fonctionner les touches de changement de luminosité sur mon portable lenovo, voila comment je m’y suis pris.

  1. Préparation des actions de touches .
    Pour ça, j’ai modifié le fichier
    .config/openbox/lxde-rc.xml
    afin d’ajouter ces deux lignes pour gérer les touches dédiées à la luminosité :
        <!-- Luminosite plus  -->
        <keybind key="XF86MonBrightnessUp">
          <action name="Execute">
            <command>/usr/local/sbin/luminosite.sh up</command>
          </action>
        </keybind>
        <!-- Luminosite moins -->
        <keybind key="XF86MonBrightnessDown">
          <action name="Execute">
            <command>/usr/local/sbin/luminosite.sh down</command>
          </action>
        </keybind>

    Il faut placer ces lignes entre les balises <keyboard> et </keyboard>

  2. Préparation de l’action.
    C’est un script qui va agir sur la luminosité en fonction de la touche appuyée : up/down.
    Celle ci correspond à la commande
    /usr/local/sbin/luminosite.sh:
    #!/bin/bash
    # --------------------------------------------------------------
    # modification de la luminosité sur LDXE et lenovo
    # R. Suinot <remi{at}suinot.org>
    # 1ère version 23 sept 2021
    # rev : 25 sept 2021
    # rev : 30 sept 2021
    # --------------------------------------------------------------
    
    val=100 # valeur d'incrément pour la uminosité en plus ou moins
    max=$(cat /sys/class/backlight/intel_backlight/max_brightness)
    min=0
    actual=$(cat /sys/class/backlight/intel_backlight/brightness)
    icone="/usr/share/icons/Papirus/48x48/status/notification-display-brightness-full.svg"
    tmp="notif.png"
    if [ $1 == "up" ]
    then
            new=$(($actual+$val))
            notif=$(($new*100/$max))"%" 
            convert $icone -font Bookman-DemiItalic -draw "text 10,24 $notif" $tmp
            if [ $new -le $max ]
            then 
                    echo $new > /sys/class/backlight/intel_backlight/brightness
                    notify-send -i $tmp " "
            else
                    echo $max > /sys/class/backlight/intel_backlight/brightness
                    notify-send "Max"
            fi
    elif [ $1 == "down" ]
    then
            new=$(($actual-$val))
            notif=$(($new*100/$max))"%" 
            convert $icone -font Bookman-DemiItalic -draw "text 10,24 $notif" $tmp
            if [ $new -ge $min ]
            then
                    echo $new > /sys/class/backlight/intel_backlight/brightness
                    notify-send -i $tmp " "
            else
                    echo $min > /sys/class/backlight/intel_backlight/brightness
            fi
    fi

    C’est relativement simple : le script récupère la valeur en entrée, il cherche les valeurs max possible et actuelle de la luminosité, et en fonction de la touche appuyée (valeur en entrée), je baisse ou non la lumière, avec une notification. Celle ci affiche une icône, et le texte de la valeur en % dans le centre de l’image.
    Ne pas oublier de rendre le script exécutable !

  3. Modifier les droits sur la gestion de la luminosité de l’écran
    Le script fonctionne, mais les premiers tests échouaient car les droits utilisateurs n’étaient pas correct. Il faut donc optimiser. Modification des droits sur /sys/class/backlight/intel_backlight/brightness et ajout de mon mon utilisateur sur la machine au groupe video
    vi /etc/udev/rules.d/backlight.rules
    ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
    ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"

    puis

    usermod -aG video [mon utilisateur]

    Si vous voulez utiliser ce que j’ai fait, regarder si pour vous aussi, vous disposez de /sys/class/backlight/intel_backlight/ . Cela dépend de votre carte vidéo (chez moi, carte vidéo Intel, donc intel_backlight comme répertoire).

A noter
Mes notifications avec notify-send, était purement un cadre noir...
Il m’a fallut installer lxqt-notificationd alors que ce n’est pas lxqt que j’utilise mais lxde . Ca fonctionne, c’est le principal.

Dommage que ce ne soit pas plus direct, mais comme d’habitude, avec les problèmes à résoudre, j’ai apris pas mal d’astuce. Reste à faire pareil pour le son