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

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

当Linux Mint 处于全屏模式时,我的笔记本电脑不会进入睡眠状态XviewerVLC其他一些应用程序(例如mpv全屏应用程序)不会阻止睡眠。

GUI中没有Xviewer关于保持唤醒状态的选项。

如何Xviewer预防以及如何关闭?

Transmission例如,如何为我认为这种行为有益的应用程序启用睡眠预防?

答案1

Linux 应用程序通过以下方式禁止挂起D总线拨电至org.gnome.SessionManager.Inhibit

对比抑制防止

注意抑制不同于防止抑制屏幕保护程序、屏幕锁定或挂起仅防止在计算机空闲时发生操作,而不会在用户或其他程序手动激活时发生。

特定应用程序如何抑制挂起

传播

Transmission 在以下位置有一个用于抑制睡眠的复选框:Preferences-> Desktoptab -> Inhibit hibernation when torrents are active

我下载了 Transmission 的源代码,发现它调用了org.gnome.SessionManager.InhibitCinnamon D-Bus 会话的 D-Bus 方法 ( )。

火狐浏览器

我用了dbus监控器了解 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 抑制睡眠/暂停的方式与 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"
  ]

X查看器

当您播放幻灯片时,Xviewer 会调用与上述程序类似的 D-Bus 方法。

如何手动禁止挂起

有两个流行的小程序用于抑制睡眠/挂起:咖啡因禁止小程序(内置肉桂小程序:右键单击底部面板 -> Add Applets to Panel-> Inhibit Applet。但这些小程序手动打开和关闭抑制挂起功能,而不是在某些应用程序运行时自动打开和关闭它。

答案2

systemd-inhibit --what=idle mpv将禁止空闲超时。

您还可以禁止睡眠(包括通过盖子开关等)或关机(包括通过电源按钮)。看man systemd 抑制。该命令自 2012 年起在 systemd 中可用。

相关内容