2010-12-01 44 views
3

私はbashで書かれたスクリプトを持っています。これは、スクリーンセーバーが現在実行中の場合に別のルートを取る必要があります。これはXorgとKDEのLinuxです。スクリプトはcronから呼び出され、DISPLAY =:0に接続します。スクリーンセーバーが実行されているかどうかを確認するには?

ヒント/アイデアスクリーンセーバーの状態を確認する方法はありますか?

/usr/lib/kde4/libexec/kscreenlocker 

だから、私は単にps uw -C kscreenlockerを行い、結果を確認することができます:スクリーンセーバーのバイナリとは別に、スクリーンセーバーを実行しているとき

+0

もっとも近いのは 'xdg-screensaver status'ですが、実行中ではなく、有効になっているかどうかだけを伝えます。 GNOMEのスクリーンセーバーには、これを公開する不安定なDBusインターフェースがあるようですが、私はそれにアクセスする方法がわかりません。 KDEには特定の方法があるかもしれませんが、他の人がそれを見つけなければなりません。 :) –

+0

私はこれをKDE 3.5と 'qdbus' KDE 4で' dcop'を使って行っていますが、シェルスクリプトが存在する私のホームマシンにはアクセスできません。 kdesktopを検査するために 'kdcop'または' qdbusviewer'をチェックアウトします。いくつかの試行錯誤はそれを理解するのに十分なはずです。 – meagar

答えて

3

はどうやら、また、このプロセスが実行されています。

6

それはあなたが実行している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 

最後に、標準のXスクリーンサーバーがXScreenSaverQueryInfo()を使用して実行されており、状態フィールドをチェックしています。

関連する問題