Tengo un script cron que quiero ejecutar regularmente si inicio sesión en mi Mac. No quiero que se ejecute si la pantalla de bloqueo está activa. ¿Hay alguna manera de verificar desde la línea de comando/Terminal si la pantalla de bloqueo está activada?
Respuesta1
Esta es la implementación exacta que también quería. Después de MUCHA investigación, preparé este manuscrito con contribuciones de abarnert enhttps://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!
Ahora, sé que solicitaste una verificación del terminal para ver si la pantalla está bloqueada; está implementado en el código.
Lo señalaré aquí:
Si el resultado del comando de terminal:
python -c 'import sys,Quartz; d=Quartz.CGSessionCopyCurrentDictionary(); print d'
contiene la entrada
CGSSessionScreenIsLocked = 1
Entonces la pantalla está actualmente bloqueada. Cuando no contiene esa línea, el usuario ha iniciado sesión (es decir, se ha introducido la contraseña en la pantalla de bloqueo).