web-dev-qa-db-ja.com

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

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

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

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

19
TM.

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

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を考慮してください。上記の他のスクリプトの使用を検討するのは、他のより複雑なことをしたい場合のみにしてください。

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

送信の例 CtrlC アクティブウィンドウへのシーケンス:

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

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

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

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

8
João Pinto