如何告诉 gnome-session(3) 或 gnome-screensaver 有活动?

如何告诉 gnome-session(3) 或 gnome-screensaver 有活动?

在某些情况下,我不希望屏幕锁定。 (通常:当计算正在运行时,我离开办公桌,但我不会离开房间,并且仍然关注它为什么处于活动状态;有时,我会向队列添加更多任务,所以它不是“完成时完成”)

有没有一种机制可以告诉 GNOME 会话或屏幕保护程序不要锁定?我期待有一个聪明的 DBUS API 来实现这一点,但 GNOME 的文档似乎依赖于后来删除它的人的私有 homedir:https://wiki.gnome.org/Projects/SessionManagement/GnomeSession#D-Bus_API404 链接https://www.gnome.org/~mccann/gnome-session/docs/gnome-session.html

更好的是:是否有一个 Freedesktop 标准化 API 可以实现这一点?我主要使用一个很棒的 WM 来处理 Cinnamon-session,但是我遇到的这个问题主要是在我只能访问 Gnome 会话的机器上;但是,如果有一种一刀切的解决方案,我会非常喜欢。

答案1

至少在X下,你可以使用xdg-screensaver只要给定窗口存在就禁止兼容的屏幕保护程序:

xdg-screensaver suspend <window-id>

用于屏幕保护程序的 Freedesktop D-Bus 接口,你可以使用类似的东西来调用

dbus-send --session --dest=org.freedesktop.ScreenSaver --type=method_call --print-reply \
          /ScreenSaver org.freedesktop.ScreenSaver.Inhibit \
          string:"myapplication" string:"displaying long computations"

但这是行不通的,dbus-send因为它与调用者绑定在一起——从长时间运行的 Python 脚本调用它应该可以解决问题。

--print-reply包含在内是因为返回值很重要——它是一个用于取消禁止屏幕保护程序的 cookie。)

也可以看看防止系统进入睡眠/挂起 - Xviewer/VLC 如何做到这一点

相关内容