如何在命令行上找到窗口的位置(在桌面上)?

我正在尝试编写一个小脚本来帮助通过键盘快捷键管理我的窗口。

为了做我想做的事情,我需要能够找到“活动”(聚焦)窗口的当前位置和大小。 按位置,我的意思是桌面上窗口的X,Y坐标,大小是指窗口的高度和宽度。

是否有可以获取此信息的命令行实用程序?

您可以使用以下命令获取当前活动窗口的所有信息:

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

要么

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

只需解析您需要的坐标输出。 以下是与windows交互时的一些有用命令:

  • xwininfo将为您提供相对和绝对几何。
  • xprop会告诉你很多信息,包括窗口是否处于活动状态,但不是它的几何体
  • xdpyinfo也会获得活动窗口的ID,但没有额外的信息。
  • wmctrl将为您提供有关窗口的信息列表,并允许您选择要修改的活动窗口,但不能选择信息。

例如,要将活动窗口的标题更改为“新名称”:

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

或者更改活动窗口的位置:

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

如果你需要改变一些简单的东西,比如窗口的几何,请考虑使用wmctrl 。 仅当您想要执行其他更复杂的操作时,才考虑使用上面提到的其他脚本。

使用“xdotool”,您可以使用键盘或鼠标事件轻松地与窗口进行交互。

Ctrl C序列发送到活动窗口的示例:

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

如果你真的需要窗口位置:

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

有关更多操作/选项,请查看手册页 。