gnome-session(3)またはgnome-screensaverにアクティビティがあることをどのように知っていますか?

gnome-session(3)またはgnome-screensaverにアクティビティがあることをどのように知っていますか?

画面がロックされたくない状況があります。 (通常:計算が実行されている間はデスクから退きますが、部屋を離れずにそれがアクティブになっている理由に焦点を当てます。時には「完了時に完了」しないようにキューに追加のタスクを追加します。)

GNOMEセッションやスクリーンセーバーがロックされないようにするメカニズムはありますか?私はこれを達成するための賢いDBUS APIがあると思いましたが、GNOMEのドキュメントは後でそれを削除する人のために個人のホームディレクトリに依存しているようです:https://wiki.gnome.org/Projects/SessionManagement/GnomeSession#D-Bus_API404 リンクhttps://www.gnome.org/~mccann/gnome-session/docs/gnome-session.html

より良い点は、これを達成できるFreedesktop標準化されたAPIがありますか?私は主にCinnamonセッションを処理するために優れたWMを使用しますが、主にGnomeセッションにのみアクセスできるコンピュータでこの問題が発生します。解決策。

答え1

少なくとも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で行う方法

関連情報