OS X のコマンド ラインからロック画面がアクティブかどうかを確認するにはどうすればよいですか?

OS X のコマンド ラインからロック画面がアクティブかどうかを確認するにはどうすればよいですか?

Mac にログインしているときに定期的に実行したい cron スクリプトがあります。ロック画面が表示されているときは実行したくありません。コマンド ラインまたはターミナルからロック画面がアクティブになっているかどうかを確認する方法はありますか?

答え1

これはまさに私が望んでいた実装です。たくさんの調査の後、私はabarnertの貢献とともにこのAppleScriptを作成しました。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

すると、画面は現在ロックされています。その行が含まれていない場合は、ユーザーはログインしています(つまり、ロック画面でパスワードが入力されています)。

関連情報