現在焦点が合っているウィンドウの位置を取得するには?

現在焦点が合っているウィンドウの位置を取得するには?

Pythonを使ってUbuntuシステムで現在焦点を当てたウィンドウのスクリーンショットを撮りたいです。場所をどうやって知ることができますか(左、上、右、下)コマンドラインで現在フォーカスされたウィンドウを使用するには?

出力ps aux | grep -wE 'Xorg|Wayland'

test        1144  6.9  1.9 798024 76092 tty2     Sl+  13:29  24:20 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
test       29912  0.0  0.0  17668   668 pts/1    S+   19:20   0:00 grep --color=auto -wE Xorg|Wayland

答え1

使用xdoツール:

$ xdotool getwindowfocus getwindowgeometry --shell
WINDOW=94371847
X=604
Y=229
WIDTH=1303
HEIGHT=774
SCREEN=0

左上隅の座標とウィンドウサイズがあれば、目的の座標を簡単に推論できます。

  • 右上隅はX = 1907(604 + 1303)、Y = 229にあります。
  • 左下隅はX = 604、Y = 1003(229 + 774)にあります。
  • 右下隅はX = 1907(604 + 1303)、Y = 1003(229 + 774)にあります。

したがって、これを4つの座標を提供する小さな関数に組み合わせることができます。

showCoords(){
    eval "$(xdotool getwindowfocus getwindowgeometry --shell)"
    topLeft="$X,$Y"
    topRight="$((X+WIDTH)),$Y"
    bottomLeft="$X,$((Y+HEIGHT))"
    bottomRight="$((X+WIDTH)),$((Y+HEIGHT))"
    printf 'top left:%s\ntop right:%s\nbottom left:%s\nbottom right:%s\n' "$topLeft" "$topRight" "$bottomLeft" "$bottomRight"
}

今すぐ実行すると、次のような結果がshowCoords得られます。

$ showCoords
top left:604,229
top right:1907,229
bottom left:604,1003
bottom right:1907,1003

関連情報