私はプログラム間で時間をどのように分割しているかを追跡する小さなpythonスクリプトを作成しています。現在アクティブなウィンドウ(理想的には、そのウィンドウを制御するアプリケーションですが、ウィンドウタイトルだけで行うことができます)とアイドル時間を検出する必要があります。KDEを使ってPythonでアクティブなウィンドウを検出する
現時点では、自分でコンピュータに触れていない時間を判断するのに、KIdleTimeを使用していますが、これは問題なく動作します。
また、どのウィンドウがアクティブであるかを判断するためにwnckを使用しようとしていますが、これはもう一度単独で動作します。
私は、2つを1つのプログラムにまとめて、問題に遭遇するときです。 wnckはgnomeライブラリであり、KIdleTimeはKDEライブラリであるため、起動するためにウィンドウ変更とアイドルタイムアウト信号を自分のスレッドで実行する必要があります。
私はPythonでこれを行う方法を見つけることができません - スレッドモジュールを使用して別のスレッドでそれらの1つを実行しようとすると、KDEライブラリはそれがメインスレッドにないか、 Gnomeライブラリは印象的なメルトダウンを持ち、それが得ることができるすべてのメモリを食べる(ちなみに、ulimitはこの場合非常に役に立ち、私はそれをお勧めします)。私は がDBUSはのKWinに これを公開するだろうと思っているだろうが、それはしていません -
- ウィンドウが変更されたときに を検出することができますKDEライブラリを探す:
だから、私は4つのオプションを持っています〜に見える 。
- 同じ の時間にkdeとgnomeの両方のライブラリを実行する方法を見つけてください。
- Gnomeイベントスレッドで実行されるKIdleTimeに相当するものを見つけます。
- Gnomeスレッド(これは )からKIdleTimeをポーリングするためにタイマーを使用しますが、これは理想とはかけ離れており、 のアイドル時間の判断が不正確になります。
誰でも私に解決策を提供できますか?