如何检测锁定/解锁屏幕、进入/返回暂停和监控关闭等事件

如何检测锁定/解锁屏幕、进入/返回暂停和监控关闭等事件

我想知道是否有任何方法可以检测 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 来完成。

相关内容