xscreensaver: Befehl/Script ausführen, wenn Bildschirmschoner startet/beendet wird

PiTFT montiert auf einem RPiWie zuvor erwähnt, arbeite ich gerade an einem Adafruit PiTFT, dass auf einen Raspberry Pi gesteckt ist.

Mein Problem: Der Bildschirmschoner geht nach einigen Minuten an und schaltet den Bildschirm schwarz, die Hintergrundbeleuchtung des Displays bleibt aber angeschaltet.

Ich habe Stunden damit verbracht eine Möglichkeit zu finden, um ein Script oder Befehl auszuführen, wenn der Bildschirmschoner aktiviert oder deaktiviert wird. Anscheinend ist diese Möglichkeit selten gefragt, den ich habe keine passende Lösung finden können und mich selbst um Marke-Eigenbau bemüht…Der Bildschirmschoner des Raspbian besitzt selbst keine Konfigurationsmöglichkeiten, um spezielle Befehle vor oder nach der Ausführung abzusetzen.

Allerdings ist es möglich die Aktivität des xscreensavers mit dem Befehl „xscreensaver-command -watch“ zu überwachen. Hierfür muss zuerst das komplette Paket installiert werden:

Danach solltet ihr euren Raspberry neu starten und euch auf dem Desktop anmelden (ggf. tightvncserver installieren oder RPI per HDMI an einen Monitor anschließen).

Im Startmenü unter Einstellungen taucht nun der Punkt „Screensaver“ auf – hier habe ich lediglich ausgewählt, dass der Bildschirmschoner nach 1 Minute aktiviert wird und den Bildschirm schwärzt (also keine Farbeffekte o.ä.).

Nun startet in einer ersten Putty-Sitzung den Befehl:

Öffnet nun eine zweite Sitzung und führt folgende Befehle aus, um den Bildschirmschoner testweise an- und abzuschalten:

Daraufhin erscheint im ersten Putty-Fenster folgender Output:

Ich habe daraufhin ein einfaches Python3-Script geschrieben (wie üblich: ich bin kein Programmierer und das ist nur ein Entwurf) das die Ausgabe von „xscreensaver-comand -watch“ auf die Strings „BLANK“ und „UNBLANK“ überwacht:

Ihr könnt das ganze auf Basis des obigen Scripts auf eure Bedürfnisse anpassen.

Mein Script zum Steuern der Hintergrundbeleuchtung des Adafruit PiTFT sieht wie folgt aus:

 

Bastian
Bastian

Seit 2006 bin ich täglich im IT-Umfeld unterwegs und interessiere mich für technische Lösungen im Hard- und Softwarebereich, die einem den Alltag erleichtern. Zu meinen Hobbies zählt der 3D-Druck, das Tüfteln, Scripten, eine eigene Holzwerkstatt, sowie der unqualifizierte Umgang mit dem Lötkolben.

Artikel: 126

Ein Kommentar

  1. Vielen Dank für die super Anleitung Bastian!
    Ich habe lange nach einer Möglichkeit gesucht um die Beleuchtung meines Waveshare Touch Displays auszuschalten.

    Mein Code sieht folgendermaßen aus:


    import subprocess

    process = subprocess.Popen([‚xscreensaver-command‘,‘-watch‘], stdout=subprocess.PIPE)
    for line in iter(process.stdout.readline, “):
    read_line = line.decode(„utf-8“)
    if „BLANK“ in read_line and not „UNBLANK“ in read_line:
    print(„Bildschirmschoner aktiviert“)
    subprocess.call([‚gpio‘,‘-g‘,’pwm‘, ’18‘, ‚0‘])
    if „UNBLANK“ in read_line:
    print(„Bildschirmschoner deaktiviert“)
    subprocess.call([‚gpio‘,‘-g‘,’pwm‘, ’18‘, ‚1024‘])

    # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert