У меня есть cron-скрипт, который я хочу запускать регулярно, если захожу на свой Mac. Я не хочу, чтобы он запускался, если включен экран блокировки. Есть ли способ проверить из командной строки / терминала, активирован ли экран блокировки?
1 ответ
3
Это точная реализация, которую я тоже хотел. После серии исследований я поместил этот яблочный скрипт вместе с комментариями Абарнерта по адресу 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
Тогда экран в настоящее время заблокирован. Когда он не содержит эту строку, пользователь входит в систему (то есть пароль был введен на экране блокировки).