Redhat 6.6 上如何在屏幕保护程序处于活动状态时检测屏幕是否被锁定?

Redhat 6.6 上如何在屏幕保护程序处于活动状态时检测屏幕是否被锁定?

有两个屏幕保护选项红帽6.6菜单“系统->首选项->屏幕保护程序”:

  1. “计算机空闲时激活屏幕保护程序”选项。勾选此选项将导致当空闲时间达到限制时屏幕保护程序被激活;
  2. “屏幕保护程序处于活动状态时锁定屏幕”选项。勾选此选项将导致屏幕保护程序激活时屏幕锁定;否则,当屏幕保护程序处于活动状态时,屏幕将不会锁定。

我的问题是,如果选中选项(1),如何监控屏幕锁定/解锁?我尝试使用 dbus 命令:

dbus-monitor --session "interface='org.gnome.ScreenSaver'"  

不幸的是,结果不正确,因为它只捕获消息“ActiveChanged”,即使我选中选项(2)并且屏幕实际上已锁定。

signal sender=:1.37 -> dest=(null destination) serial=25 path=/org/gnome/ScreenSaver;
interface=org.gnome.ScreenSaver; member=ActiveChanged

布尔值 true

如果我gnome-screensaver-command -l手动运行该命令,dbus-monitor 可以捕获以下消息:

method call sender=:1.99 -> dest=org.gnome.ScreenSaver serial=3 path=/org/gnome/ScreenSaver;
interface=org.gnome.ScreenSaver; member=Lock  
signal sender=:1.37 -> dest=(null destination) serial=23 path=/org/gnome/ScreenSaver;
interface=org.gnome.ScreenSaver; member=ActiveChanged
boolean true  

我参考了org.gnome.ScreenSaver的文档:
https://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html
看来方法调用“Lock”的意思是“请求锁定屏幕”。
信号“ActiveChanged”仅表示屏幕保护程序是否处于活动状态。

所以我怀疑这是一个红帽6.6bug:
当屏幕保护程序处于活动状态并且通过上述两个选项锁定屏幕时,会错过“锁定”消息。
这导致我无法检测到在这种情况下屏幕是否锁定。

对于这个问题有任何解决方案吗?我是否可以读取存储上述两个选项的配置文件?

谢谢。

答案1

运行gconftool-2 --get /apps/gnome-screensaver/lock_enabled将返回一个布尔值,告诉您当前用户是否启用了屏幕锁定。如果是true,您就会知道当“ActiveChanged”信号为真时,屏幕也被锁定。

由于您询问了这两个选项的配置文件,您还可以检查屏幕保护程序是否设置为使用gconftool-2 --get /apps/gnome-screensaver/idle_activation_enabled.

相关内容