¿Cómo puedo saber si la pantalla de bloqueo está activa desde la línea de comando en OS X?

¿Cómo puedo saber si la pantalla de bloqueo está activa desde la línea de comando en OS X?

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).

información relacionada