web-dev-qa-db-ja.com

なぜ `xwininfo`と` xdotool`は同じウィンドウに対して異なるウィンドウIDを与えるのですか?

Lubuntu 18.04のターミナルエミュレーター(lxterminal)のタブで、xwininfoによって、タブ内の同じ場所(シェルが表示されている場所)をクリックして、ウィンドウIDを見つけようとします。

$ xwininfo -int | grep -Po '(?<=Window id: )[0-9a-zA-Z]+'
31457283

またはxdotoolによって

$ xdotool selectwindow 
35652689

xwininfoxdotoolが異なるウィンドウIDを提供するのはなぜですか?

したがって、ウィンドウIDが異なると、プロセスIDも異なります。

$ xdotool getwindowpid 31457283
1480    
$ ps aux | grep -i 1480
t         1480  0.1  0.3 473204 31240 ?        Sl   Nov21  23:18 lxterminal

$ xdotool selectwindow getwindowpid
window 35652689 has no pid associated with it.

異なるウィンドウIDの問題は、lxterminalのタブ内だけでなく、タブfirefox内、またはevinceのウィンドウ内でも発生します。 2つの方法が同じウィンドウIDを与えるウィンドウの内側をクリックしても、アプリケーションが見つかりません。

4
Tim

これらは2つの異なるものです。

  • ウィンドウID:xdotool selectwindowおよびxwininfo -intによって返されます
  • プロセスID:xdotool selectwindow getwindowpidおよびxprop | grep _NET_WM_PIDによって返されます( XOrgの追加ウィンドウプロパティ がある場合)

プロセスIDはカーネルのプロセスIDであり、プロセスの強制終了、タスクのスケジューリングなどに使用されます。

ウィンドウIDは、ウィンドウのサーバーのウィンドウ識別子です。 1つのプロセスで任意の数のWindowsを生成できます。多くの場合、複数のWindowsが生成されます。 GIMPが画面全体にフリーフロートを持っているダイアログの数を考えてください。

この場合、プロセスIDは質問を統合するだけですが、同じウィンドウをターゲットにしている場合は、単一のターゲットの場合と同じ結果が得られますために

  • xdotool selectwindow
  • xwininfo -int

両方を同じ行で実行し、ダブルクリックして、両方が何を言っているかを確認します。

xwininfo -int | grep -Po '(?<=Window id: )[0-9a-zA-Z]+'; xdotool selectwindow;

lxterminalをインストールし、表示されているものがすべて一意であることを確認しました。再現できません。

1
Evan Carroll