我正在运行 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 会话。这仍然完全受支持。