コマンドラインでウィンドウの場所(デスクトップ上)を見つけるにはどうすればよいですか?


19

キーボードショートカットを使用してウィンドウを管理するための小さなスクリプトを作成しようとしています。

必要なことを行うには、「アクティブな」(フォーカスされた)ウィンドウの現在の位置とサイズを見つけることができる必要があります。場所とは、デスクトップ上のウィンドウのX、Y座標を意味し、サイズとは、ウィンドウの高さと幅を意味します。

この情報を取得できるコマンドラインユーティリティはありますか?

回答:


22

次のコマンドを使用して、現在アクティブなウィンドウのすべての情報を取得できます。

xwininfo -id $(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')

または

xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)

必要な座標の出力を解析するだけです。以下は、ウィンドウを操作するときに役立つコマンドです。

  • xwininfoは、相対ジオメトリと絶対ジオメトリを提供します。
  • xpropは、ウィンドウがアクティブかどうかなど、多くの情報を伝えますが、ジオメトリではありません
  • xdpyinfoはアクティブウィンドウのIDも取得しますが、追加情報はありません。
  • wmctrlはウィンドウに関する情報のリストを取得し、変更するアクティブウィンドウを選択できるようにしますが、情報は選択できません。

たとえば、アクティブなウィンドウのタイトルを「新しい名前」に変更するには:

wmctrl -r :ACTIVE: -N "New Name"

または、アクティブなウィンドウの位置を変更するには:

wmctrl -r :ACTIVE: -e 0,20,20,200,400

検討する wmctrlウィンドウのジオメトリなど、単純なものだけを変更する必要があるかどうかをてください。上記の他のスクリプトの使用は、他のより複雑なことをしたい場合にのみ検討してください。


1
2番目のコマンドを実行すると、異なる結果が得られることに注意してください。最初のものは期待通りに動作します。
TM。

1
私はArchを使用していますが、将来ここで誰かを助けるかもしれません。最初のものは私にとってはうまくいきませんでした。しかし、2つの組み合わせは機能しました。xwininfo -id $(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | grep -Eo "0x[0-9a-f]{2,}")
-Sev

ありがとう!しかし、最初の2つのコメントには同意します。2番目のコマンドxwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)は、ターミナルの子ウィンドウ(名前はありません)を表示します。私がちょうどxdpyinfo | grep focus取得するfocus: window 0x435b877, revert to Parentと、0x435b877は最初のコマンドで返されたウィンドウのIDです(これは私のために機能します)。これはTrusty 14.04.1 LTS
nealmcb

8

「xdotool」を使用すると、キーボードイベントまたはマウスイベントを使用してウィンドウを簡単に操作できます。

CtrlCアクティブなウィンドウにシーケンスを送信する例:

xdotool getwindowfocus key ctrl+c # Sends CTRL+C to the current window.

ウィンドウの位置が本当に必要な場合:

eval $(xdotool getmouselocation --shell); echo $X $Y

その他のアクション/オプションについては、manページを確認してください


興味深いが、私はちょうど得るError: Invalid key sequence 'ctrl-c'
l0b0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.