防止系統進入睡眠/掛起 - Xviewer/VLC 如何做到這一點
當
Xviewer
或VLC
在 Linux Mint 上處於全屏模式時,我的筆記型電腦不會進入睡眠狀態。其他一些應用程序(例如mpv
全屏)不會阻止睡眠。GUI中沒有
Xviewer
關於保持喚醒狀態的選項。如何
Xviewer
預防和如何關閉?例如,如何為我認為這種行為有益的應用程序打開睡眠預防
Transmission
?
Linux 應用程序通過D-Bus呼叫來禁止掛起
org.gnome.SessionManager.Inhibit
對比抑制與防止
請注意,抑制與阻止不同。禁止螢幕保護程序、螢幕鎖定或掛起僅在電腦空閒時阻止該操作發生,而不是在使用者或其他程序手動啟動時阻止該操作發生。
特定應用程序如何禁止掛起
傳送
傳輸有一個用於禁止睡眠的複選框:
Preferences
->Desktop
選項卡 ->Inhibit hibernation when torrents are active
。我下載了 Transmission 的原始碼,發現它呼叫了一個 D-Bus 方法 (
org.gnome.SessionManager.Inhibit
) 到 Cinnamon D-Bus 會話。火狐
我使用dbus-monitor來發現 Firefox 在播放影片時做了什麼。當影片開始播放時,Firefox 會發送兩個呼叫:
$ dbus-monitor . . . # disable screensaver method call time=1523976795.844938 sender=:1.104 -> destination=org.freedesktop.ScreenSaver serial=9 path=/ScreenSaver; interface=org.freedesktop.ScreenSaver; member=Inhibit string "firefox" string "video-playing" # disable sleeping method call time=1523976795.893407 sender=:1.21 -> destination=:1.3 serial=61 path=/org/gnome/SessionManager; interface=org.gnome.SessionManager; member=Inhibit string "firefox" uint32 0 string "video-playing" uint32 8 . . .
呼叫最後一個方法後,創建了以下抑製劑:
$ dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.GetInhibitors method return time=1523969881.311742 sender=:1.3 -> destination=:1.188 serial=491 reply_serial=2 array [ object path "/org/gnome/SessionManager/Inhibitor6" ]
影片停止後,將刪除抑製劑:
$ dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.GetInhibitors method return time=1523969881.311742 sender=:1.3 -> destination=:1.188 serial=493 reply_serial=2 array [ ]
VLC
VLC 以與 Firefox 相同的方式抑制睡眠/掛起:
$ dbus-monitor . . . method call time=1523977809.526716 sender=:1.8017 -> destination=org.freedesktop.ScreenSaver serial=3 path=/ScreenSaver; interface=org.freedesktop.ScreenSaver; member=Inhibit string "vlc" string "Playing some media." method call time=1523977809.527152 sender=:1.21 -> destination=:1.3 serial=91 path=/org/gnome/SessionManager; interface=org.gnome.SessionManager; member=Inhibit string "vlc" uint32 0 string "Playing some media." uint32 8 . . . $ dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.GetInhibitors method return time=1523977813.424421 sender=:1.3 -> destination=:1.8018 serial=85789 reply_serial=2 array [ object path "/org/gnome/SessionManager/Inhibitor7750" ]
瀏覽器
當您播放幻燈片時,Xviewer 會呼叫類似於上述程序的 D-Bus 方法。
如何手動禁止掛起
有兩個流行的小程序用於抑制睡眠/掛起:咖啡因和抑制小程序(內置肉桂小程序:右鍵點擊底部面板 ->
Add Applets to Panel
->Inhibit Applet
。但是這些小程序手動打開和關閉抑制掛起功能,而不是自動打開它在某些應用程序執行時打開和關閉。