web-dev-qa-db-ja.com

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

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

xdotool getactivewindow

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

xdotool getactivewindow getwindowpid

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

12
Mariusz

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

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

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


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

xdotool出力はwindwo idに10進数を使用しますが、他のほとんどのツールは出力に hexadecimal 数値を使用します(これらは通常、入力に対して両方をサポートします)。

たとえば、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
11
Volker Siegel

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

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

xdotoolバージョン3.20160805.1

1
Ahmed Habiba