如何使用Wayland显示服务器枚举所有顶级窗口?

时间:2018-01-26 13:10:33

标签: linux ubuntu accessibility x11 wayland

如何使用新的默认显示服务器Wayland在Ubuntu 17.10上枚举桌面上的所有顶级窗口(并进一步获取其标题和其他属性)?

在我们使用X11 / XLib来实现这一目标之前,但现在使用Wayland这不再可靠。有些窗口,比如gedit和LibreOffice,在窗口列表中不再显示,而xwininfo等其他工具也不再适用于这些窗口。

目前我们使用以下技术:

Ubuntu 17.04,X.org作为默认显示服务器:

  • X11-XLib / X_QueryTree

视窗:

  • Win32-API / EnumerateWindows(还存在Windows Automation API)

MACOS:

  • NSAccessibility / AXUIElementCreateApplication,AXUIElementCopyAttributeValue,kAXChildrenAttribute

Ubuntu 17.10 with Wayland:

  • ???

到目前为止,我还没有找到任何有关Wayland和辅助功能或UI自动化的API文档。

有人可以帮忙吗?一个面向未来的解决方案/技术如何在Linux / Ubuntu上访问桌面窗口会很不错。

问候。

1 个答案:

答案 0 :(得分:0)

实际上,我认为你不是。 Wayland的设计方式是客户不了解彼此。您正在使用的特定Wayland作曲家可能有一个特殊的API - 但它不是协议的一部分。 (例如GNOME的作曲家有一个DBus API来捕捉屏幕)