Python

如何獲取目前焦點視窗的位置?

  • July 16, 2020

我想用 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

使用xdotool

$ 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

引用自:https://unix.stackexchange.com/questions/598843