gpt4 book ai didi

c++ - X Window 系统上的顶级窗口

转载 作者:太空狗 更新时间:2023-10-29 21:08:48 26 4
gpt4 key购买 nike

我想在屏幕上打印有关 Linux 下顶级窗口的信息。

我使用 xlib 函数。我成功地从根窗口递归打印了关于显示的所有元素的所有信息。

但我只需要顶级窗口。我没有找到任何好的过滤方法。

来自维基百科:

The top-level windows are exactly the direct subwindows of the root window.

根据该定义,我的列表中有一些窗口,例如:gnome-session、seahorse-daemon、notify-osd 或图标,但我不想要它们。

我还找到了一个函数:XmuClientWindow,但我不明白它的目标。

最佳答案

让我们看看我是否正确理解了您想要的内容。顶级窗口是根窗口的直接子窗口,或者是虚拟根窗口的一些窗口管理器 - 参见 Root Window (Wikipedia) ,您似乎已经找到了。那篇文章还告诉您如何找到虚拟根窗口的列表。您可以在根或虚拟根上使用 XQueryTree 来查找子窗口列表。

一旦您有了该列表,您可能需要应用大量令人讨厌的试探法来找到您感兴趣的窗口。 XmuClientWindow 会告诉您哪个应用程序窗口(如果有的话)与您的顶级窗口相关联。应用程序创建窗口和窗口管理器 reparent他们是顶级窗口的子级,他们创建该窗口以容纳窗口装饰和其他东西(最大化按钮、关闭按钮、调整大小的 handle )。阅读 extended window manager hints从客户端/应用程序窗口可以告诉您诸如您是否正在处理特殊窗口(停靠栏、面板等)之类的信息。您可能还想查看应用程序窗口上的窗口管理器提示(XGetWMHints(3)、XGetWMNormalHints(3)、XGetWMSizeHints(3)),以确定您是否感兴趣 - 窗口管理器会创建许多您需要的 transient 窗口可能不关心。

参见 seamless code在 VirtualBox Guest Additions 中查看通过顶级窗口查看的示例。

关于c++ - X Window 系统上的顶级窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2431535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com