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