Es werde mehr Licht
|
💡
|
In Desktop-Umgebungen wie LXDE, Gnome, KDE, XFCE kann die Helligkeit in der Regel über einen entsprechenden Dienst der Umgebung, der über Applets und Tastenkürzel angesteuert werden kann, eingestellt werden. |
Die Helligkeit von Bildschirmen (gemeint sind hier die von Laptops und ähnlichen Geräten) wird unter Linux durch die Datei /sys/class/backlight/<Gerätename>/brightness dargestellt.
Der konkrete Pfad hängt davon ab wie der entsprechende Kernel-Treiber das Gerät nennt, auf meinem aktuellen Laptop ist es zum Beispiel /sys/class/backlight/amdgpu_bl1/brightness .
Ließt man die Datei:
cat /sys/class/backlight/<Gerätename>/brightness
133
Bekommt man den aktuellen Wert - es handelt sich hier nicht um Prozent.
Den entsprechenden Maximal-Wert bekommt man aus der Datei:
/sys/class/backlight/<Gerätename>/max_brightness
Durch Schreiben in /sys/class/backlight/<Gerätename>/brightness kann die Helligkeit geändert werden, also zum Beispiel so:
sudo echo "255" > /sys/class/backlight/amdgpu_bl1/brightness
Allerdings ist die Datei nur durch root schreibbar.
Um sie in eigenen Scripten zu nutzen die nicht unter root laufen hat man folgende Möglichkeiten:
-
man setzt das suid-Bit auf dem Script → das führt das Script dann mit root-Rechten aus
-
man setzt über udev-Regeln (oder andere Scripte) beim Starten des Systems die Dateirechte auf den eigenen Benutzer
-
Nachteilig wenn mehrere Benutzer das System nutzen
-
-
man setzt über udev-Regeln (oder andere Scripte) beim Starten des Systems Schreibrechte für eine Gruppe, den Eigentümer auf diese Gruppe und fügt sich zu dieser Gruppe hinzu
Im folgenden Beschreibe ich wie man es über udev-Regeln und eine Gruppe Zugang zu den Helligkeitseinstellungen als "normaler" Nutzer bekommt:
In /etc/udev/rules.d/ legt man eine neue Datei an - <Nummer>-Name.rules → z.B. 51-backlight.rules.
Die genaue Bezeichnung ist unwichtig, die Dateien werden in lexikalischer Ordnung ausgeführt.
Inhalt sollte sein:
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chgrp video /sys/class/leds/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chmod g+w /sys/class/leds/%k/brightness"
-
ACTION definiert wann die Regel ausgeführt wird → add meint beim hinzufügen des Gerätes
-
SUBSYSTEM definiert zu welchem Subsystem die Geräte gehören müssen für die die Regel ausgeführt wird → backlight bzw. led
-
RUN definiert einen Befehl der ausgeführt werden soll
-
in diesem Fall sind das die Befehle:
-
/bin/chgrp video /sys/class/backlight/%k/brightness"
Welcher die Besitzer-Gruppe für die Datei auf video setzt.
%k steht für den Namen des jeweiligen Gerätes den der Kernel vergibt → das wird automatisch ersetzt.
/bin/chmod g+w /sys/class/backlight/%k/brightness"
Welcher der Gruppe Schreibrechte für die Datei setzt
%k steht für den Namen des jeweiligen Gerätes den der Kernel vergibt → das wird automatisch ersetzt.
Die darauffolgenden 2 Regeln machen das Gleiche noch mal für den Fall das die Hintergrundbeleuchtung über LEDs realisiert ist.
Anschließend den eigenen Benutzer zur video-Gruppe hinzufügen, damit er zukünftig schreibenden Zugriff auf die Datei hat:
sudo usermod -a -G video <Benutzername>
Anchließend muss das System neugestartet werden, damit die udev-Regeln aktiv werden.
Fertig
Eigenes Script
Mein persönliches Script findet man hier:
https://codeberg.org/shellkraut/brightness_control
Um es zu nutzen muss man zuvor die oben beschriebenen Schritte durchführen und zenity installieren
Danksagung
Ich habe u.a. auf folgende Resourcen zurückgegriffen/dort findet man ggf. noch weitere Informationen: