2012-02-20 5 views
2

X11にはxsetコマンドで制御できるスクリーンセーバーの仕組みがあります。私のX11アプリケーションの中からスクリーンセーバーを無効にするかハートビートするために外部コマンドを呼び出さなくても、スクリーンセーバーメカニズムをハートビートしてモニターをシャットダウンできないようにするにはどうすればいいですか?X11スクリーンセーバーをハートビートするには?

答えて

3

これは現代のLinuxシステムでは、希望のFreeDesktopの方法は、必要に応じて、org.freedesktop.ScreenSaver.SimulateUserActivity()または公開されたインターフェイスの別の部分をDBusインターフェイスにpingすることです。

+0

また、スクリーンセーバーを特に禁止するためのDBus(私はそう思う)の設定もあります。例えばトーテムはこれを設定します。 – BRFennPocock

+0

ええ、それは 'org.freedesktop.ScreenSaver.Throttle(string appName、string localizedReason)'だと思います。クッキーを返します。 'UnThrottle(int cookie)'を使用してスクリーンセーバーを再び有効にします(アプリが終了すると再開します)。 – Kitsune

+0

'$ qdbus org.freedesktop.ScreenSaver/ScreenSaver'を実行しようとすると、"サービス 'org.freedesktop.ScreenSaver'が存在しません。私は実際にこのDBusのことに慣れていないので、私がやっていることは分かっていませんでしたが、私のシステムではこのインターフェースが利用できないようです。私のシステムは新しくLinux Mint 12(Ubuntu 11.10ベース)です。これらのサービスを提供するプロセスは何ですか? – lvella

0

@Kitsuneによって提案されたD-Busソリューションと同様に。いくつかのメディアプレーヤーがやっているアプローチを取って、一定の間隔でキー(例えば、Alt)を押すことをシミュレートすることもできます。

このコードはtotem:http://git.gnome.org/browse/totem/tree/lib/totem-scrsaver.cはコードベース(LGPL v2.1)にドロップするように設計されており、D-Busインターフェイスと、XTestの両方を使用して30秒ごとにAltキーを押して合成します。

関連する問題