xdotoolウィンドウスタックからウィンドウIDを取得する方法


12

アクティブまたはフォーカスされているウィンドウのIDが必要です。xdotoolコマンドを使ってみます。コマンドがあります:

xdotool getactivewindow

結果はウィンドウスタックに保存されます。このウィンドウスタックからwidnow IDを取得したい。コマンド

xdotool getactivewindow getwindowpid

私を満足させません。プロセスIDでウィンドウIDを取得したくありません。

回答:


11

xdotool getactivewindowはあなたが望むものだと思います-あなたはそれを試しましたか?

コマンドラインにxdotoolサブコマンドが他にない場合は、(ウィンドウスタックから)ウィンドウIDを出力します。

ではxdotool getactivewindow getwindowpid例えば、 getactivewindowウィンドウスタックにIDを入れ、getwindowpidPIDを照会し、このIDを使用しています。ターミナルでコマンドを実行すると、アクティブであるため、常にターミナルウィンドウのIDが返されることに注意してください。別のウィンドウからIDを取得するにsleep 2s && xdotool getactivewindowは、2秒のタイムスパンで対象のウィンドウを選択してください。


xdotoolウィンドウ処理のために他のツールを 使用すると、複雑になります。

一方でxdotool、出力用途はwindwo IDの番号を小数、他のほとんどのツールは使い(彼らは通常、入力の両方をサポートする)出力用の番号を。

たとえば、でウィンドウを見つけた場合、すべてのウィンドウをリストxdotool getactivewindowするの出力では結果が見つかりませんxwininfo -root -tree。最初に16進数に変換する必要があります。

$ xdotool getactivewindow                              
69206716
$ printf 0x%x 69206716                  
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
           0x42002bc (has no name): ("konsole" "Konsole")  1154x781+0+0  +1289+498


10進数から16進数への変換:

printf 0x%x 69206716

16進数を10進数に変換します。

printf %i 0x42002bc

xdotool getactivewindowコマンドを試してみましたが、ターミナルに結果が表示されないのが問題です。結果をウィンドウスタックに保存します。このコマンドはいくつかの番号を出力しますが、ウィンドウIDではありません(例:35651588)
Mariusz

なぜ35651588はウィンドウIDではないと思いますか?
Volker Siegel 14

はい、35651588はウィンドウIDではないと思います。xwininfoコマンドでウィンドウIDを確認できます。たとえば、xwininfo -root -treeこのコマンドはすべてのウィンドウを印刷し、ウィンドウには別のタイプの番号付けがあります。
Mariusz 2014

1
xwininfoウィンドウIDを16進数として表示し、xdotoolは10進数を表示しますが、まったく同じです。
Volker Siegel 14

あなたが正しいです。35651588 = 0x2200004。 xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
Mariusz 2014

1

このコマンドは私のために働きます

xdotool key --window "$(xdotool getactivewindow)" F5

xdotoolバージョン3.20160805.1


xdotool getactivewindow key F5同じ結果になるはずです
user3804598
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.