我想知道是否有任何方法可以检测 Linux 下的系统范围事件,例如:
- 用户解除/锁定会话
- 用户登录/退出
- 机器已发送暂停
- 屏幕保护程序继续
- 并且显示器因不活动而关闭
我需要这个来开发一个 Qt 项目,以便以编程方式对此类事件做出反应,但我不确定如何以及从哪里开始。也许有一个我还不知道的 API。
有什么提示吗?我会很感激任何帮助!
答案1
gnome-screensaver-command
将为您提供有关屏幕锁定事件的信息
gnome-screensaver-command -q | grep "is active"
如果命令返回任何结果,则屏幕被锁定。您可以使用 gnome-screensaver-command -l
没有关于暂停状态的任何信息
答案2
您可以使用 dbus API 来跟踪此信息。
查看使用该dbus-monitor
命令的一些示例:如何通过屏幕保护程序活动/非活动时间来测量计算机使用情况? - 询问 Ubuntu。
例如:
dbus-monitor 'path=/org/gnome/ScreenSaver, member=ActiveChanged'
这也可以直接从 c++、python 程序等中使用 dbus API 来完成。