如何从Python脚本中列出所有打开的(X11)窗口在Gnu/Linux上?

5
我希望能够从Python脚本中获取在Linux桌面上打开的所有窗口列表。我想这可能需要通过Xlib或其他x11或xdisplay库来实现。这将是win32的EnumWindows API调用在Linux中的等效方法。
理想情况下,我希望能够使用此功能获取每个打开窗口的标题/标题文本以及位置/大小信息的列表。
是否有一些Python函数调用可以返回此信息?

Python XLib https://github.com/python-xlib/python-xlib 和 XQueryTree - Ozzy Walsh
1个回答

9

安装 python-xlib

pip3 install python-xlib

尝试执行以下命令:

from Xlib import display

d = display.Display()
root = d.screen().root

query = root.query_tree()

for c in query.children:
    # returns window name or None
    name = c.get_wm_name()
    if name: 
        print(name)

我不确定其他属性。 query.children 是一个 Window 对象列表,因此对它们进行一些研究应该能找到一些东西。

Window 对象的文档


为什么有些窗口会消失? - Danil
@Danil 如果你正在使用“Wayland”,大多数软件包无法获得本地窗口。 - Wazime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接