我有一个 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
那么当前屏幕是锁定的。当不包含该行时,表示用户已登录(即在锁定屏幕上输入了密码)。