Sobre toda a sessão da área de trabalho:
Existem dois miniaplicativos populares para evitar suspensão / suspensão: Caffeine
e Inhibit Applet
(miniaplicativo Cinnamon integrado: Clique com o botão direito no Painel inferior - > Adicionar miniaplicativos ao painel - > Inhibit Applet
. são prevenir a todo (não é possível definir lista de aplicativos próprios inibir).
Sobre a aplicação específica:
Eu baixei as fontes de Transmission
e vi que a prevenção é fornecida pelo método de chamada DBUS ( org.gnome.SessionManager.Inhibit
) para a sessão do Cinnamon DBUS. Portanto, deve ser um aplicativo que armazene uma lista de programas e monitore se pelo menos um dos programas da lista estiver sendo executado. Se estiver em execução, chame o método DBUS para a sessão Cinnamon. Mas eu não encontrei o programa como acabei de descrever.
Pelo que entendi, todo programa que deseja evitar o sleep / suspend / screensaver, deve implementar a chamada do método DBUS . Eu não descubro fontes do Firefox, mas eu acho que se ele não implementa a chamada DBUS, então esta parte é implementada por desenvolvedores da equipe Mint por patch (é possível tocar em qualquer programa que não implementa métodos DBUS).
No entanto, descubro o Firefox no trabalho (com dbus-monitor
) sobre o que acontece quando o vídeo no youtube está sendo reproduzido. Quando o vídeo começa a ser reproduzido, o Firefox envia duas chamadas:
$ 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
. . .
Depois de chamar o último método, foi criado o seguinte inibidor:
$ 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"
]
Quando o vídeo do youtube foi interrompido, o inibidor está sendo removido:
$ 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 [
]
Sobre a transmissão:
Transmission
tem caixa de seleção para impedir a suspensão: Preferences
- > Desktop
tab- > Inhibit hibernation when torrents are active
.
Sobre o VLC:
O VLC impede o modo de suspensão / suspensão da mesma maneira que o 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"
]
Sobre o Xviewer :
Quando você inicia o slideshow, ele chama o método DBUS como os programas descritos anteriormente. Eu não vou postar nenhum dos DBUS sobre o Xviewer porque ele gosta do anterior.