Bool
foo(void)
{
int i;
unsigned n_children;
Window root_return, parent_return, *children_return;
if (XQueryTree(display, /* Connection to the X server */
root, /* The window of interest */
&root_return, /* Not very usefull in this case */
&parent_return, /* Not very usefull in this case */
&children_return, /* What we are interested in */
&n_children /* The number of entries for `children_return' */
) == 0)
{
return False;
}
/*
For all children window of the root window (top-level
windows).
*/
for (i = 0; i < n_children; ++i)
{
char *name;
Window w = children_return[i];
XWindowAttributes window_attr;
#ifndef NDEBUG
printf("Window id 0x%lx (%ld)... ", w, w);
#endif
/*
Manage the window.
*/
if (XFetchName(display, w, &name) != 0) /* If (Success) */
{
if (name != NULL)
{
puts(name);
}
else
{
puts("nameless");
}
if (name != NULL)
{
XFree(name);
}
}
else /* Failure */
{
#ifndef NDEBUG
puts("Failed");
#endif
}
}
/*
Do not fogget to free the memory Xlib allocates for you!
*/
if (children_return != NULL)
{
XFree(children_return);
}
return True;
}