Ubuntu 16.04 上的 X Windows 命令行有时会调整无限循环?

Ubuntu 16.04 上的 X Windows 命令行有时会调整无限循环?

背景

我正在运行 Ubuntu 16.04 桌面版,我无法通过命令行命令调整窗口大小。我最近改用 Fluxbox 作为我的窗口管理器,并且对运行命令行命令来操作窗口位置的键绑定非常感兴趣。但是我在调​​整窗口大小时遇到​​了一些障碍,不知道发生了什么。

在 Fluxbox 中,将窗口大小调整为屏幕百分比的键绑定操作有时会导致窗口调整大小,然后慢慢缩小,然后再次调整大小,然后慢慢缩小,重复一段时间,直到它停止在某个完全不正确的大小,或者永远停止。我认为这是 Fluxbox 的问题,并开始尝试使用 xdotool 和 wmctrl,但同样的问题发生了。

问题

我在 Ubuntu 16.04 的 VMWare 客户机安装和 Ubuntu 16.04 的本机安装上复制了此问题。我还在每个系统的不同窗口管理器下重复了此问题:XFCE4、KDE、Fluxbox、Unity、从源代码构建的 Fluxbox。

如果我有一个任意大小的窗口,则运行以下任一命令都会间歇性地:

  1. 完美运行并调整至所需大小
  2. 调整为错误的尺寸
  3. 调整大小(不一定是正确的大小),慢慢缩小窗口的宽度和高度,再次调整大小,并重复这些步骤一段时间,直到最终停止(通常是在某个不正确的大小)
  4. 与上面的#3相同,它停在高度 1 处,宽度比要求的要小。
  5. 与上面的第 3 点相同,但它永远不会停止调整大小和缩小

上面的第 4 号和第 5 号是最常见和最有问题的,因为解决这个问题的唯一方法是关闭窗口并再次打开它。

我在一个比指定尺寸大得多的大型显示区域上运行了这些命令。我尝试的命令(针对目标尺寸 900x900)是:

wmctrl -r :ACTIVE: -o 0,-1,-1,900,900
wmctrl -i -r 0x01000004 -o 0,-1,-1,900,900
xdotool getactivewindow windowsize 900 900
xdotool getactivewindow windowsize --sync 900 900
xdotool windowsize 20971524 900 900
xdotool windowsize --sync 20971524 900 900

如您所见,我尝试了 xdotool 和 wmctrl,分别使用自动检测活动窗口和显式指定活动窗口(分别使用 wmctrl 和 xdotool 查找)。我还尝试了不同大小(更小或更大)、用于不同程序(而不仅仅是终端)的窗口、不是当前窗口的窗口以及同时移动窗口。它们似乎都对结果没有任何影响。为了尝试调试问题,我尝试在 xdotool 命令上运行 strace 以查看它是否卡在某处循环:

strace xdotool windowsize --sync 20971524 900 900 2>~/trace.log

我重复这个命令,直到第一次尝试时就完美运行,然后重复这个命令,直到我得到一个陷入无限循环的命令,分别保存跟踪日志。我比较了它们以查看不同之处,唯一不同的是所涉及的窗口 ID。这对我来说表明这不是与工具本身通信的问题(不太可能,因为 wmctrl 和 xdotool 都有同样的问题)或与底层框架通信的问题(也不太可能)。

问题)

我该怎么做,我应该去哪里解决这个问题?自从 Wayland 在 16.04 版中为 Ubuntu 引入以来,Wayland 与 XWindows 之间可能存在问题吗?是否有我可以/应该尝试解决的旧版 XWindows?这只是 XWindows 中每个人都能看到的一个错误吗?是否有其他工具可以以不同的方式进行调整大小?我在 resize 命令中没有考虑到某些东西吗?

答案1

问题出在某些窗口和“窗口几何提示”上。特别是 Terminator(gnome 版本)中,有一个已知问题,即窗口几何提示可以/可能/确实提示窗口应该略小或略大,每次 X 将窗口调整为提示的大小时,它都会改变主意。

至少对于 Terminator(gnome 版本)来说,解决方案是在配置中禁用窗口几何提示。每个有问题的程序可能都有单独的解决方案,也可能没有。

相关内容