Я хочу проиллюстрировать псевдопрозрачность окон с помощью xcb (скопируйте часть растрового изображения корневого окна на фон окна)
Для этого я использую:
корневое растровое изображение устанавливается с помощью feh, затем я запускаю свою программу, которая выполняет (только часть кода):
-> инициализировать соединение:
xcb_connect()
-> создать окно:
xcb_create_window()
xcb_create_pixmap( connection,screen->root_depth, pixmap, screen->root, width, height)
xcb_create_gc( connection, graphic_context, pixmap, XCB_GC_FOREGROUND | XCB_GC_BACKGROUND, gc_values_mask)
xcb_map_window
-> захватить событие xcb:
xcb_wait_for_event
-> ответ на map_request_event (когда это запрос нашего окна) или property_notify (когда измененное свойство является корневым растровым изображением через feh):
получить корневую растровую карту:
xcb_get_property / xcb_get_property_reply / xcb_get_property_value
==> this works
скопируйте часть корневого растрового изображения в растровое изображение окна:
xcb_copy_area_checked(backbone.connection,
rootpix,
pixmap,
graphic_context,
x, y,
0, 0,
width, height)
Я использую xcb_request_check, но, похоже, у меня нет ошибок с этим последним запросом.
Затем я рисую элементы в своем окне с помощью cairo.
Проблема в том, что я просто вижу белое окно с отрисовкой элемента cairo. Даже без элементов cairo я не могу отобразить скопированное растровое изображение моего окна.
У тебя есть идеи помочь мне? Спасибо