Gnome3

如何告訴 gnome-session(3) 或 gnome-screensaver 有活動?

  • June 14, 2022

在某些情況下,我不希望我的螢幕鎖定。(通常情況下:當計算正在執行時,我會離開辦公桌,但我不會離開房間並且仍然關注它為什麼處於活動狀態;有時,我會將更多任務添加到隊列中,所以它不是“完成後完成”)

是否有機制告訴 GNOME 會話或 ~ 螢幕保護程序不要鎖定?我期待有一個聰明的 DBUS API,但 GNOME 的文件似乎依賴於刪除它的人的私人主目錄:https ://wiki.gnome.org/Projects/SessionManagement/GnomeSession#D-Bus_API連結到 404 https://www.gnome.org/~mccann/gnome-session/docs/gnome-session.html

更好的是:是否有用於此的 Freedesktop 標準化 API?我主要使用很棒的 WM 處理 Cinnamon 會話,但我遇到的這個問題主要是在我只能訪問 Gnome 會話的機器上;但是,如果有一個萬能的解決方案,我會非常喜歡。

至少在 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 如何做到這一點

引用自:https://unix.stackexchange.com/questions/706167