Как наблюдать за любыми движениями окон с помощью xlib?

Как отследить событие перемещения для всех окон? Например, если пользователь переместит окно "Pluma", мой демон получит имя окна и новые координаты.

if(XCheckMaskEvent(display, -1, &event))
    {
        if(event.type == ConfigureNotify)
        {
            moved += event.xmotion.x + event.xmotion.y;
            //qDebug << moved;
        }
    }

Я пытался отслеживать это так, но это не работает...

1 ответ

Решение

Вам нужно выбрать SubstructureNotify Сначала замаскируйте корневое окно:

XSelectInput(display, XDefaultRootWindow(display), SubstructureNotifyMask );

Таким образом, вы говорите X-серверу: "Меня интересуют события перемещения / изменения размера / удаления / создания детей в корневом окне"

Другие вопросы по тегам