这两个只有在被锁定的屏幕变黑后才有效;但他们有时也会失败,当出于任何原因屏幕不空白时......
gnome-screensaver-command --query
gnome-screensaver-command --time
我也试过qdbus
:
qdbus org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.GetActiveTime
但同样失败了。
我才发现,真正锁屏的是Unity!
qdbus com.canonical.Unity /com/canonical/Unity/Session com.canonical.Unity.Session.Lock
相关问题:
https ://unix.stackexchange.com/questions/28181/run-script-on-screen-lock-unlock
https://unix.stackexchange.com/questions/80143/how-to-create-a-将监听 dbus 和消息上的脚本的守护进程
Aquarius Power 的回答似乎很有效。以下是我可能对他的解决方案所做的一些补充。
仅查询锁定状态
如果您只需要一行代码来查询锁定状态,那么如果锁定,这应该评估为 true,如果解锁,则评估为 false。
查询自上次状态更改以来的锁定状态和跟踪时间
现在,如果您需要跟踪屏幕锁定了多长时间,您可能需要采用不同的方法。
本质上,此脚本监视屏幕锁定状态的变化。发生更改时,时间和状态将转储到文件中。如果你喜欢或者使用我写的函数,你可以手动阅读这个文件。
如果您想要时间戳而不是秒数,请尝试:
不要忘记
-u
强制日期程序忽略您的时区的开关。屏幕实际上被 Unity 锁定了,我们需要使用
gdbus
这将显示它何时被锁定,如:
我在这里有一个类似的问题
我得到的帮助与 Aquarius Power 之前所说的类似,只是它包含在一个 bash 脚本守护进程中,可以在后台运行。我发现它非常有帮助。所以,看看我的问题和答案,看看这是否对你也有帮助。