TL;DR:
Es war ein Typo
-------------------------8<-----------------------------------------------------------------------------
(Ich bin ziemlich ahnungslos, wenn es ums Programmieren geht, das mal vorweg.)
Ich möchte das die Tastaturbeleuchtung abgeschaltet wird, wenn das Display gesperrt wird.
Dafür schreibe ich mir ein Bash Script.
Ich fülle eine Variable (kbdstate) mit dem aktuellen Status der Tastaturbeleuchtung, entweder 0 oder 1.
Ich habe eine Funktion (isiton) die guckt, ob der Status > 0 ist.
Ist er das, wird er = 0 gesetzt, damit die Tastaturbeleuchtung ausgeschaltet ist.
dbus-monitor guckt, ob die session gelockt wird.
Wird sie das, wird die Funktion (isiton) ausgeführt.
Anderenfalls passiert nichts.
#!/bin/bash
kdbstate=$(cat /sys/devices/platform/tuxedo_keyboard/state)
isiton() {
if [ "$kbdstate" -gt 0 ]; then
echo 0 > /sys/devices/platform/tuxedo_keyboard/state
fi
}
dbus-monitor --system "type='signal',interface='org.freedesktop.login1.Session',member='Lock'" | \
(
while read X; do
if [[ "$X" =~ Lock ]]; then
isiton
fi
done
)
Führe ich das Script aus, passiert erstmal garnichts. So wie geplant.
Sperre ich dann das Display, bekomme ich diese Fehlermeldung:
my_scripts/screenlock_kbdoff.sh: line 4: [: : integer expression expected
Die Variable bleibt leer. Ich verstehe nicht warum, bzw. weiss nicht, was ich falsch mache.
Fülle ich die Variable händisch im Terminal und lasse sie mir anschließend ausgeben, funktioniert es so wie zu erwarten.
# kdbstate=$(cat /sys/devices/platform/tuxedo_keyboard/state)
# echo $kbdstate
# 1
[oder eben 0, wenn die Tastaturbeleuchtung aus ist]
Die dbus-monitor Geschichte habe ich
hier hier
ausgegraben, als ich herausfinden wollte, woher ich überhaupt weiss, dass das Display gesperrt ist.
Wie bekomme ich den Status der Tastaturbeleuchtung in meine Variable?