Как узнать, активен ли экран блокировки, с помощью командной строки в OS X?

Как узнать, активен ли экран блокировки, с помощью командной строки в OS X?

У меня есть скрипт cron, который я хочу запускать регулярно, если я вошел в свой Mac. Я не хочу, чтобы он запускался, если включен экран блокировки. Есть ли способ проверить из командной строки / терминала, активирован ли экран блокировки?

решение1

Это именно та реализация, которую я тоже хотел. После ОЧЕНЬ долгих исследований я собрал этот applescript вместе с вкладом abarnert наhttps://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!

Я знаю, что вы просили проверить терминал, чтобы убедиться, что экран заблокирован; это реализовано в коде.

Я здесь отмечу:

Если результат команды терминала:

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

содержит запись

CGSSessionScreenIsLocked = 1

Тогда экран в данный момент заблокирован. Если он не содержит этой строки, пользователь вошел в систему (то есть пароль был введен на экране блокировки).

Связанный контент