![通过终端在屏幕之间移动窗口时遇到问题](https://linux22.com/image/1194379/%E9%80%9A%E8%BF%87%E7%BB%88%E7%AB%AF%E5%9C%A8%E5%B1%8F%E5%B9%95%E4%B9%8B%E9%97%B4%E7%A7%BB%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%97%B6%E9%81%87%E5%88%B0%E9%97%AE%E9%A2%98.png)
我正在运行 22.04.2 LTS。我正在尝试编写一个脚本来组织打开的窗口。不幸的是,wmctrl -l 返回的列表不完整。
PS /home/edward/Documents/rclone> wmctrl -l
0x0260003d 1 Lenovo-11e 通过终端在屏幕之间移动窗口时遇到问题。 - 询问 Ubuntu — Mozilla Firefox
我打开的窗口比这还多。xdotools 也遇到了同样的限制。我了解到这是 Wayland 作为窗口管理器的问题。无论如何,我是否可以尝试使用其他实用程序在 Gnome UI 中移动窗口?
答案1
你说对了。确实发生这种情况是因为你运行的是 Wayland。列出的唯一窗口wmctrl -l
是通过 Xwayland 在 Xorg 上运行的窗口。
Wayland 已造成碎片化。现在,操作窗口的方法取决于 Wayland 合成器,因此 Gnome Shell、KDE 桌面和 Sway 窗口管理器之间存在差异。
Gnome Shell 中用于操作窗口的 dbus 调用现已成为 Gnome Shell 专用。但是,Gnome Shell 扩展可以公开 dbus 功能,以便通过脚本访问它。
这样的扩展是窗口呼叫由 domandoman 开发。它允许列出窗口并对其进行操作(调整大小、移动、最大化、最小化、激活、关闭)。另一个扩展, 窗口呼叫扩展由 hseliger 开发,扩展了此扩展,允许获取有关当前焦点窗口的信息。
在我看来,这不是理想的世界:我们依赖扩展。Gnome Shell 扩展可能会变得无人维护,并在 Gnome Shell 的未来版本中失效。
因此,这将是一个从头开始的问题:旧方法不适用于 Wayland。或者,您仍然可以决定不使用 Wayland 并切换到 Xorg 会话。这仍然完全受支持。