如何获取当前焦点窗口的位置?

如何获取当前焦点窗口的位置?

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

相关内容