如何使用新的默认显示服务器Wayland枚举Ubuntu17.10桌面上的所有顶级窗口(并进一步获取其标题和其他属性)?
在我们使用x11/xlib来实现这一点之前,但现在使用wayland,这不再可靠。有些窗口(如gedit和libreoffice)不再显示在窗口列表中,而其他工具(如xwininfo
)也不再使用这些窗口。
目前我们使用以下技术:
Ubuntu17.04以x.org为默认显示服务器:
x11 xlib/x_查询树
窗户:
Win32 API/枚举窗口(也存在Windows自动化API)
苹果操作系统:
nsaccessibility/axuielementcreateapplication、axuielementcopyattributevalue、kaxchildrenattribute
带Wayland的Ubuntu17.10:
???
到目前为止,我还没有找到任何关于Wayland和Accessibility或UI自动化的API文档。
有人能帮忙吗?一个经得起未来考验的解决方案/技术如何在linux/ubuntu上访问桌面windows将是很好的。
当做。
最佳答案
事实上,我认为你没有。Wayland的设计方式是客户互不了解的。您正在使用的特定Wayland编写器中可能有一个特殊的API,但它不是协议的一部分。(例如,gnome的composer有一个dbus api来捕获屏幕)
关于linux - 如何使用Wayland显示服务器枚举所有顶级窗口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48462017/