Программирование X11: получать уведомление, если появилось новое окно? - PullRequest
3 голосов
/ 03 ноября 2010

программирование на C с библиотекой X11, есть ли способ получить уведомление, если появилось новое окно?Я нашел XSetAfterFunction , но он предназначен только для отладки ...

Спасибо за вашу помощь!

Генрих

@ edit:

Этот код решает мою проблему

int main() {    
Display* display = XOpenDisplay(":2");

XSetWindowAttributes attributes;
attributes.event_mask = SubstructureNotifyMask | StructureNotifyMask;

XChangeWindowAttributes(display, 0x100, CWEventMask, &attributes);

while (true) {
    XEvent event;
    XNextEvent(display, &event);
    std::cout << "Event occured" << std::endl;
}

return 0;
}

1 Ответ

2 голосов
/ 03 ноября 2010

Из памяти вы можете использовать XChangeWindowAttributes для прослушивания событий из корневого окна, а затем воздействовать на XMapEvent (или XCreateWindowEvent или whatEvent в зависимости от вашего определения «появилось новое окно»).

...