Ich habe ein Cron-Skript, das ich regelmäßig ausführen möchte, wenn ich bei meinem Mac angemeldet bin. Ich möchte nicht, dass es ausgeführt wird, wenn der Sperrbildschirm aktiv ist. Gibt es eine Möglichkeit, über die Befehlszeile/das Terminal zu prüfen, ob der Sperrbildschirm aktiviert ist?
Antwort1
Dies ist genau die Implementierung, die ich auch wollte. Nach einer MENGE Recherche habe ich dieses Applescript mit Beiträgen von abarnert beihttps://stackoverflow.com/questions/11505255/osx-check-if-the-screen-is-locked
set queryUserLoginState to "python -c 'import sys,Quartz; d=Quartz.CGSessionCopyCurrentDictionary(); print d'"
tell the application "SleepDisplay" to launch
set displayOff to true
delay 2
repeat while displayOff
set loginTest to do shell script queryUserLoginState
if loginTest does not contain "CGSSessionScreenIsLocked = 1" then
set displayOff to false
end if
delay 3
end repeat
-- do stuff!
Ich weiß, Sie haben nach einer Terminalprüfung gefragt, um festzustellen, ob der Bildschirm gesperrt ist; das ist im Code implementiert.
Ich weise hier darauf hin:
Wenn das Ergebnis des Terminalbefehls:
python -c 'import sys,Quartz; d=Quartz.CGSessionCopyCurrentDictionary(); print d'
enthält den Eintrag
CGSSessionScreenIsLocked = 1
Dann ist der Bildschirm momentan gesperrt. Wenn diese Zeile nicht vorhanden ist, ist der Benutzer angemeldet (d. h. das Passwort wurde auf dem Sperrbildschirm eingegeben).