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