Como posso saber se a tela de bloqueio está ativa na linha de comando do OS X?

Como posso saber se a tela de bloqueio está ativa na linha de comando do OS X?

Tenho um script cron que desejo executar regularmente se estiver conectado ao meu Mac. Não quero que ele seja executado se a tela de bloqueio estiver ativa. Existe uma maneira de verificar na linha de comando/Terminal se a tela de bloqueio está ativada?

Responder1

Esta é a implementação exata que eu também queria. Depois de muita pesquisa, juntei este applescript com contribuições de abarnert emhttps://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!

Agora, eu sei que você pediu uma verificação de terminal para ver se a tela está bloqueada; é implementado no código.

Vou apontar aqui:

Se o resultado do comando do terminal:

python -c 'import sys,Quartz; d=Quartz.CGSessionCopyCurrentDictionary(); print d'

contém a entrada

CGSSessionScreenIsLocked = 1

Então a tela está bloqueada no momento. Quando não contém essa linha, o usuário está logado (ou seja, a senha foi inserida na tela de bloqueio).

informação relacionada