是否有一种可编程的方式可以判断屏幕是否被新 Unity 界面锁定?

是否有一种可编程的方式可以判断屏幕是否被新 Unity 界面锁定?

我的 crontab 中有很多东西,包括一些与我的屏幕对话的东西。如果我不在那里等待通知,我真的不想让它运行。

有没有办法检查计算机是否已锁定,这样当我不在办公桌旁时,我就可以阻止它执行任何操作?或者,只有当我不在办公桌旁时,它才执行其他操作?

是的,我之前问过这个问题。我现在使用的是 Ubuntu 14.04 和 Unity,环境已经改变。当我运行 时gnome-screensaver-command -q,我会得到The screensaver is inactive工作站是否被锁定。新的环境需要新的答案。

答案1

unity我查看了提到( )的软件包apt-cache search unity,忽略了名称中带有、等的lib任何内容。lensunity-services引起了人们的注意。此包中的一个文件是/usr/share/upstart/sessions/unity-panel-service-lockscreen.conf,这是一个 Upstart 作业,包含:

description "Backing Service for the Unity Panel"
author "Andrea Azzarone <[email protected]>"

start on desktop-lock
stop on desktop-unlock

respawn
exec /usr/lib/unity/unity-panel-service --lockscreen-mode

您可能已经猜到了,此作业在屏幕锁定时运行。这为您提供了几个选项:

检查行中的命令是否exec正在运行:

检查是否/usr/lib/unity/unity-panel-service正在使用选项运行--lockscreen-mode。请注意,它unity-panel-service始终在运行,但当您锁定屏幕时,将使用该选项启动另一个实例。因此,如下所示:

if pgrep -cf lockscreen-mode
then 
    # do stuff
fi

pgrep -f搜索完整的命令行,因此我们可以搜索选项。

我认为在这种情况下手册页unity-panel-service错误的或过时的。它说:

unity-panel-服务不采取任何选择。


使用 Upstart 作业

你可以使用上面的作业配置来编写你的 Upstart 作业。创建一个会话作业(说some-job~/.config/upstart/some-job.conf包含:

description "Some script to be run when screen gets locked"

start on desktop-lock
stop on desktop-unlock

script
    # do stuff
end script

start可以使用将和事件交换的逆脚本stop来在屏幕解锁时运行。

相关内容