問題タブ [wnck]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1225 参照

python - KDEを使用してPythonでアクティブなウィンドウを検出する

プログラム間で時間をどのように分割しているかを追跡する小さな python スクリプトを書いています。現在アクティブなウィンドウ (理想的には、そのウィンドウを制御するアプリケーションですが、ウィンドウ タイトルだけで十分です) とアイドル時間を検出する必要があります。

現在、私はKIdleTimeを使用して、自分のコンピューターに触れていない期間を判断しています。これ自体は問題なく動作します。

また、 wnckを使用してアクティブなウィンドウを特定しようとしましたが、これは単独で正常に機能します。

2 つを 1 つのプログラムに結合しようとすると、問題が発生します。wnck は gnome ライブラリであり、KIdleTime は KDE ライブラリであるため、ウィンドウの変更とアイドル タイムアウトのシグナルを発生させるには、それらを独自のスレッドで実行する必要があります。

Python でこれを行う方法を見つけるのに苦労しています - スレッド化モジュールを使用してそれらの 1 つを別のスレッドで実行しようとすると、KDE ​​ライブラリーはそれがメインスレッド上にない、または Gnome ライブラリーに印象的なメルトダウンとそれが取得できるすべてのメモリを消費します (ちなみに、ulimit はこの場合非常に便利でした。私はそれをお勧めします)。

したがって、次の 4 つのオプションがあります。

  1. ウィンドウがいつ変更されたかを検出できる KDE ライブラリを見つけてください - dbus はこれを kwin で公開すると思っていましたが、そうではないようです。
  2. kde ライブラリと gnome ライブラリの両方を同時に実行する方法を見つけてください。
  3. Gnome イベント スレッドで実行される KIdleTime に相当するものを見つけます。
  4. タイマーを使用して、Gnome スレッド内から KIdleTime をポーリングします (これは私が現在行っていることですが、理想からはほど遠いため、アイドル時間の決定が不正確になります)。

誰でも私に解決策を提供できますか?

0 投票する
2 に答える
778 参照

python - python wnckは、pdb.set_trace()が完了するまでデータを返しません。

Ubuntu Linux / Gnomeでは、Pythonのwnckバインディングを使用して、開いているすべてのウィンドウのリストを取得しようとしています。

私のコードは次のようになります。

出力は次のようになります。

最初のget_windows()呼び出しは[]、空のリストを返します。2番目のget_windows()呼び出しは、開いているウィンドウのリストを返します。ではpdb、を押しcて続行し、何もしません(pdbで)。

コメントアウトするpdbと、両方のget_windows()呼び出しが戻り[]ます。get_windows()pdbの前に何度も呼び出しを繰り返すと、何もありません。get_windows()pdbの後で何度も呼び出しを繰り返すと、完全なリストが継続的に表示されます。

この呼び出しが空のpdbの後でのみ機能するのはなぜですか?pdbなしで動作させるにはどうすればよいですか?

0 投票する
2 に答える
3220 参照

python - PyGIを使用して、Wnckでウィンドウのリストを取得するにはどうすればよいですか?

PyGI(Ubuntu Natty上)を使い始めたばかりですが、これまでpygtkを使用したことはありません。私はwxPythonプログラムでwnckを使用しましたが、現在開いているウィンドウのリストを取得するのは簡単でした。PyGIから、ウィンドウリストは常に空です。関連するコードビット:

それで、wins == []。ありがとう!

0 投票する
1 に答える
287 参照

window - グローバルgtkバインダーで呼び出された関数からwxframeが生成されないのはなぜですか?

さて、なぜこのシンプルなアプリが機能しないのですか。私はこれを調査するために1日を費やしましたが、何も得られませんでした。

理由はわかりませんが、時々(特にパネル上でアプリをクリックして上げると)、上げることが機能せず、上げられたウィンドウの代わりにフラッシュアイコンが表示されます。

アップデート

わかりました、トピックに戻り、これらに気づきました。

  1. 上記の例は私のために働きます..奇妙な
  2. 以下のコードが示す奇妙な動作を分離しました。これはwncklibに関連するものです。したがって、新しいウィンドウを開く(ウィンドウを左クリック-test1)ことでアプリウィンドウが非アクティブ化された場合、raiseは完全に機能しますが、他のウィンドウ('opera'を任意のものに置き換え)がwnck(右クリック-test2)でアクティブ化された場合作動は失敗します

    インポートロギングインポートサブプロセスインポート時間インポートwnckインポートwx

    logging.basicConfig(level = logging.DEBUG)

    クラスMyFrame(wx.Frame):

    if name ==' main ':app = wx.PySimpleApp(redirect = False)frame = MyFrame(None)frame.Show()app.MainLoop()

私が感じるような非常に役立つwtfの代わりに、誰かがこの動作を理解していますか?:)

0 投票する
1 に答える
420 参照

python - Xorg でウィンドウのアイコン名を取得するにはどうすればよいですか?

pyclutter ベースのタスクバーで使用するために、python でウィンドウのアイコンを取得しようとしています。wnck 経由で XID を取得しましたが、wnck は gtk.gdk.Pixbuf しか提供できないようです。これはクラッターには役に立ちません。python-xlib または python-xcb でこれを行う方法があると確信していますが、見つかりません:-)

何か案は?

0 投票する
1 に答える
882 参照

python - すべてのX(マウス)イベントを無視する(それらを通過させる)ボックス付きのpygtkウィンドウ

次のことを行いたいと思います。HTMLを表示するWebkitウィジェットを使用して、常に上部のpygtkウィンドウにフルスクリーンを作成しますが、完全に透明なボックスを使用して、下のウィンドウが表示されるようにします。(これは可能のようです: WebKitを使用してクリアな背景の上にWebコンテンツをレンダリングすることは可能ですか?

私が望んでいるのは、(時々)透明なボックスで発生するすべてのマウスイベントをアプリケーションのウィンドウの下のウィンドウに渡して、それらと正常に対話できるようにすることです。したがって、視覚的に透過的であるだけでなく、マウスイベントに対しても透過的です。

理論的には、pygtk Eventboxを使用して関心のあるすべてのイベントをキャッチし、wnckを使用して私の真下のウィンドウを見つけ、python-xlibを使用してこのイベントを渡すことができると思います。

これは、最も洗練されたソリューションのようには思えません。もっと良い方法はありますか?

0 投票する
1 に答える
800 参照

python - python-wnckを使用してスポーンおよび移動した直後のウィンドウ位置が少しずれています

私はこのPythonスクリプトを作成しました:

それがすることは、roxtermをGuakeのように振る舞わせることです。私が抱えている唯一の問題は、新しいroxtermインスタンスを開いて、直後にウィンドウを(0,0)に移動したとき、ウィンドウの最後のy位置が数ピクセル下にあることです。これを行うには、wnckライブラリのset_geometry関数を使用しました。それを修正する方法について何かアイデアはありますか?ありがとう。

0 投票する
1 に答える
422 参照

python - python wnck.window_get() は conlose から動作しますが、モジュールからは動作しません

以下のコードは、たった今開いた python コンソールに入力すると機能しますが、ファイルから実行すると機能しません (このファイルには他のコードはありません)。

0 投票する
2 に答える
4288 参照

python - python-wnck フォーカスをウィンドウに設定

python-wnck を使用してウィンドウにフォーカスを設定しようとしています。
このライブラリに関連する唯一のドキュメントはhttps://developer.gnome.org/libwnck/stable/WnckWindow.htmlからのものです

ここSOの別の質問で見つけたコードを使用して、ウィンドウタイトルを使用してウィンドウを検索できましたが、ウィンドウにフォーカスを当てる方法がわかりません。
上記のドキュメントから、関数を見つけました:


そのため、Pythonで「window.activate(0)」のようなこの関数を使用しようとしましたが、これは失敗したようで、タスクバーのアイコンが点滅しましたが、フォーカスがありません。
ターミナルで次のメッセージが表示されます。

したがって、実際には有効なタイムスタンプを入力する必要があるかもしれませんが、これを取得する方法がわかりません。

これはsoarを使用しているコードです:

0 投票する
1 に答える
230 参照

python - python-wnck モニターのプロパティを取得する方法

python-wnckには、複数のモニターの領域を結合して で与える Screen オブジェクトがありますget_screen_size()。個々のモニターのサイズを取得する方法。ウィンドウをあるモニターから別のモニターに移動しようとしています