Копия X11 возвращает только возврат GDK_SELECTION для выбора буфера обмена

#c #linux #x11 #copy-paste #pasteboard

Вопрос:

Я пишу компонент, который должен отслеживать изменения в буфере обмена для окна X11.

 auto display = XOpenDisplay(NULL);
auto screen = DefaultScreen(mdisplay);
auto root_window = RootWindow(display, screen);
clipboard = XInternAtom(display, "CLIPBOARD", 0);
window = XCreateSimpleWindow(mdisplay, root_window, 0, 0, 1, 1, 0, 0, 0);
while(true) {
    XEvent event = {0};
    XNextEvent(display, amp;event);
    switch(event.type) {
        case SelectionNotify: {
            // do something
        }
        break;
        case SelectionRequest: { // triggered after performing copy
            auto target_name = XGetAtomName(display, event.xselectionrequest.target);
            auto selection_name = XGetAtomName(display, event.xselectionrequest.selection);
            auto property_name = XGetAtomName(display, event.xselectionrequest.property);
            Log("Event SelectionRequest: owner: %ld, requestor: %ld, selection: %s, target: %s(%d), property: %s",
                    event.xselectionrequest.owner, 
                    event.xselectionrequest.requestor,
                    selection_name,
                    target_name,
                    event.xselectionrequest.target,
                    property_name);

            if(x_event.xselectionrequest.selection != clipboard) {
                Log("%s: Warning: event selection not matchingn", __func__);
                break;
            }
        }
        break;
    }
}
 

Проблема в том, что когда я пытаюсь проверить событие SelectionRequest , все, что я вижу, это

 Event SelectionRequest: owner: 33554433, requestor: 18874649, selection: CLIPBOARD, target: TARGETS(344), property: GDK_SELECTION
 

Действие, которое я выполняю, — это копирование некоторого текста из браузера Chrome. Кто-нибудь может сказать мне, почему я вижу не этот текст, юникод, строковые типы, а скорее GDK_SELECTION ?

PS: Так получилось, что я видел эти форматы только один раз (текст, юникод, строковые типы), но больше никогда.