Для этого вам понадобится оверлейная визуальная поддержка на вашем X-сервере, иначе производительность будет абсолютно плачевной, поскольку вам придется постоянно отображать / отменять отображение своего окна и / или постоянно выполнять танец get / putimage.
Вы должны иметь основную / корневую плоскость без наложения и создать наложенный визуал поверх этого.Все, что ясно в плоскости наложения, пройдет через «главный экран».
Документация о том, как сделать это в «обычном Х», очень скудна, проще будет через OpenGL / GLX, http://www.opengl.org/sdk/docs/man/xhtml/glXChooseVisual.xml - просто попробуйте:
int query[] = { /* GLX_RGBA, */ GLX_LEVEL, 1, 0 };
overlayVisual = glXChooseVisual(mydisplay, DefaultScreen(mydisplay), query);
myWindow = XCreateWindow(..., overlayVisual, ...);
Тогда Вы сможете очистить окно, чтобы сделать видимым «основной корень», и нарисуйте его, чтобы закрыть его.В «старые времена» наложение часто требовалось для визуального отображения без RGB (с цветовой индексацией / палитрой), а для прозрачных частей использовалась цветовая маркировка.OpenGL RGBA должен поддерживать прозрачность / смешивание через альфа-канал, хотя ...
Я не пробовал, мой текущий кадровый буфер не поддерживает оверлеи.Nvidia упоминает их в документации для своих драйверов X11 / их конфигурационных файлов, поэтому я предполагаю, что они все еще существуют и могут использоваться таким образом.