Macにログインしている場合に定期的に実行したいcronスクリプトがあります。ロック画面が表示されている場合は実行したくありません。ロック画面が有効になっているかどうかをコマンドライン/ターミナルから確認する方法はありますか?
これは私も望んでいた正確な実装です。たくさんの調査の後、私はこの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
その後、画面は現在ロックされています。その行が含まれていない場合、ユーザーはログインしています(つまり、パスワードはロック画面で入力されています)。