Linux

防止系統進入睡眠/掛起 - Xviewer/VLC 如何做到這一點

  • July 6, 2020

XviewerVLC在 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。但是這些小程序手動打開和關閉抑制掛起功能,而不是自動打開它在某些應用程序執行時打開和關閉。

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