1

使用 调整大小和移动时wmctrl,结果既不正确,又取决于应用程序。

示例:在撰写本文时,我正在运行 emacs、chromium、spotify 和 gnome-terminal

ws=$(wmctrl -d | grep "*" | awk '{print $1}')
n=$(wmctrl -l | awk '{print $2 ";" $1}' | grep ^$ws | wc -l)
windows=$(wmctrl -l | awk '{print $2 ";" $1}' | grep ^$ws | cut -d ";" -f 2)

window1=$(echo $windows | cut -d " " -f 1)
window2=$(echo $windows | cut -d " " -f 2)
window3=$(echo $windows | cut -d " " -f 3)
window4=$(echo $windows | cut -d " " -f 4)

for i in ${windows[@]} ; do
    wmctrl -ir $i -b remove,maximized_horz,maximized_vert
done

wmctrl -ir $window1 -e 1,0,0,960,540
wmctrl -ir $window2 -e 1,0,540,960,540
wmctrl -ir $window3 -e 1,960,0,960,540
wmctrl -ir $window4 -e 1,960,540,960,540

现在,wmctrl -lG结果如下(删除了无关信息):

width  height
952    540   emacs
960    540   chromium
954    529   gnome-terminal
960    540   Spotify

为 4 个终端窗口运行完全相同的代码会产生:

width  height
954    529   gnome-terminal
954    529   gnome-terminal
954    529   gnome-terminal
954    529   gnome-terminal

所有尺寸都不正确,而且不同的应用程序具有不同的尺寸,而同一应用程序的所有窗口具有相同的尺寸。

预期的:

960    540   emacs
960    540   chromium
960    540   gnome-terminal
960    540   Spotify

我似乎找不到任何讨论这个确切问题的帖子。

非常感谢所有帮助!

4

1 回答 1

0

每个窗口都有装饰(即边框)。您的 gnome-terminal 窗口左侧有 6 像素宽的边框,顶部有 11 像素高的边框(可能是标题栏)。当您移动窗口时,它会移动窗口的位置(不包括边框大小),但wmctrl -G输出会显示包含边框大小的几何图形。请参阅本主题。您可以使用 xwininfo 魔术获取边框大小,例如此处

于 2018-08-20T08:26:58.830 回答