我需要在桌面上显示或隐藏所有窗口的列表

I need to get the list of all the windows displayed or hidden in the desktop

本文关键字:隐藏所 窗口 列表 显示 桌面      更新时间:2023-10-16

我正在尝试使用与X11相关的库(如XlibXrandr)编写代码。

一开始,我希望完全覆盖真正的基本功能,例如仅从Xlib检索监视器的刷新率,后来我发现我需要Xrandr

现在我需要获得桌面上显示或隐藏的所有窗口的列表,我不考虑使用Gnome/KDE/XFCE。。。扩展,因为我知道这些只是X11的装饰器,但我真的找不到能够枚举X服务器中打开的窗口的函数或宏。我还需要得到被聚焦的窗口的ID/名称。

我的问题是:只有Xlib才能做到这一点?因为从Xlib采用的术语来看,我怀疑这些函数是否可能存在。

您可以使用XQueryTree 获得子窗口列表

XQueryTree - query window tree information
Status XQueryTree(Display *display, Window w, Window *root_return, Window *parent_return, Window **children_return, unsigned int *nchildren_return);

因此,要获得一个完整的列表,您必须从根窗口开始,并为每个窗口的所有子窗口递归地调用它。