Здравствуйте. Для отображения списка открытых окон в текущий момент из документации я выбрал способ через обработку события XEvent. В итоге получилось как-то так:
...
Display* display;
...
void updateWindowList(QHBoxLayout* windowList) {
XEvent event;
XNextEvent(display, &event);
if (event.type == CreateNotify) {
// обновление списка окон в windowList
}
}
...
int result;
display = XkbOpenDisplay(getenv("DISPLAY"), NULL, NULL, NULL, NULL, &result);