![如何在命令行上找到窗口的位置(在桌面上)?](https://linux22.com/image/1033952/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%8A%E6%89%BE%E5%88%B0%E7%AA%97%E5%8F%A3%E7%9A%84%E4%BD%8D%E7%BD%AE%EF%BC%88%E5%9C%A8%E6%A1%8C%E9%9D%A2%E4%B8%8A%EF%BC%89%EF%BC%9F.png)
我正在尝试编写一个小脚本来帮助通过键盘快捷键管理我的窗口。
为了实现我想要的功能,我需要能够找到“活动”(聚焦)窗口的当前位置和大小。位置是指窗口在桌面上的 X、Y 坐标,大小是指窗口的高度和宽度。
是否有一个命令行实用程序可以获取这些信息?
答案1
您可以使用此命令获取当前活动窗口的所有信息:
xwininfo -id $(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')
或者
xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)
只需解析输出以获取您需要的坐标即可。以下是与 Windows 交互时的一些有用命令:
- 信息网将为您提供相对和绝对几何。
- 属性会告诉你很多信息,包括窗口是否处于活动状态,但不是它的几何形状
- 信息也会获取活动窗口的 ID,但没有额外信息。
- 控制端将为您提供有关窗口的信息列表,并允许您选择活动窗口进行修改,但不提供信息。
例如,将活动窗口的标题更改为“新名称”:
wmctrl -r :ACTIVE: -N "New Name"
或者改变活动窗口的位置:
wmctrl -r :ACTIVE: -e 0,20,20,200,400
考虑wmctrl
一下您是否只需要更改一些简单的东西,例如窗口的几何形状。仅当您想做其他更复杂的事情时才考虑使用上面提到的其他脚本。
答案2
使用“xdotool”,您可以轻松地使用键盘或鼠标事件与窗口交互。
CtrlC向活动窗口发送序列的示例:
xdotool getwindowfocus key ctrl+c # Sends CTRL+C to the current window.
如果您确实需要窗口位置:
eval $(xdotool getmouselocation --shell); echo $X $Y
如需更多操作/选项,请查看手册页。