スクリーンセーバーが現在実行されている場合に備えて、別のルートを取る必要がある bash で書かれたスクリプトがあります。これは、Xorg と KDE を備えた Linux です。スクリプトは cron から呼び出され、DISPLAY=:0 に接続します。
スクリーンセーバーの状態を確認するヒント/アイデアはありますか?
スクリーンセーバーが現在実行されている場合に備えて、別のルートを取る必要がある bash で書かれたスクリプトがあります。これは、Xorg と KDE を備えた Linux です。スクリプトは cron から呼び出され、DISPLAY=:0 に接続します。
スクリーンセーバーの状態を確認するヒント/アイデアはありますか?
実行しているのが KDE4 の場合、dbus を使用して、スクリーン セーバーが実行されているかどうかを確認できます。
$ qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive
また
$ qdbus org.kde.screensaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive
これは gnome でも機能しますが、FreeDesktop 標準に従っていないことが知られているため、次を使用する必要があります。
$ qdbus org.gnome.ScreenSaver /ScreenSaver org.gnome.ScreenSaver.GetActive
最後になりましたが、XScreenSaverQueryInfo() を使用して状態フィールドをチェックすることで、標準の X スクリーン サーバーが実行されているかどうかを確認できます。
どうやらスクリーンセーバーを実行しているとき、スクリーンセーバーのバイナリとは別に、次のプロセスも実行されています。
/usr/lib/kde4/libexec/kscreenlocker
そのため、簡単に実行しps uw -C kscreenlocker
て結果を確認できます。
Gnome 40では使用できます
dbus-send --session --print-reply=literal --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.GetActive
このようなものが印刷されます
boolean false