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