Script-Time: Auto-(Un-)Lock Laptop
Wäre es nicht angenehm, wenn der Rechner "unlocked" ist, solange man davor sitzt? Und wenn man den Raum verlässt wäre es gut, er wäre "locked" und der Bildschirm aus? Und wenn jetzt der Rechner noch aufpassen würde, falls jemand sich an meinen Arbeitsplatz setzt?
Ich habe das für mich mit einem Cronjob gelöst, der jede Minute meine Anwesenheit über die Erreichbarkeit meiner Uhr prüft. Ist sie nicht mehr zu sehen, wird der Rechner gesperrt und die Kamera angeschaltet. Bei Bewegung vor der Kamera bekomme ich ein Bild davon auf die Uhr.
Damit das Script den Bildschirm sperren kann, muss es mit Root-Rechten laufen. Dann kann es aber leider nicht den Bildschirm eines Benutzers ausschalten. Um dieses Problem zu lösen muss der Nutzer, der von dem Script profitieren möchte, mit seinem Account folgenden Befehl ausführen, um root zu erlauben den Bildschirm auszuschalten:
xhost +SI:localuser:root
Dann ist die Änderung aber leider nicht persistent. Damit die Einstellungen auch einen Reboot überleben, sollte man den Befehl in der ~/.xprofile eintragen:
echo "xhost +SI:localuser:root" > ~/.xprofile
chmod +x ~/.xprofile
Dann dieses Script ausführbar machen:
#!/bin/bash
# Use a Flag, so other tools can also use this info
FLAG=/tmp/present.flag
# You might want to use your phone instead:
WATCHMAC=12:34:56:78:90:ab
hciconfig hci0 up
# Try 10 times to reduce false positives
if ( l2ping -c 10 -t 2 $WATCHMAC > /dev/null 2>&1)
then
if [ ! -e $FLAG ]
then
echo "MM in der Nähe" > $FLAG
export DISPLAY=:0
xset dpms force on
killall motion
loginctl unlock-sessions
fi
else
if [ -e $FLAG ]
then
loginctl lock-sessions
sleep 2
export DISPLAY=:0
xset dpms force off
motion
rm $FLAG
fi
fi
... und via cron minütlich aufrufen. In der motion.conf kann man dann u.A. auch die Benachrichtigung einrichten. Ich habe da einen Shellbefehl hinterlegt, der in etwa so aussieht:
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" -d "chat_id=${CHAT_ID}&text=${MESSAGE}"
Wenn ich jetzt an meinen Rechner zurück komme, öffnet er alle Bildschirme nur für mich...