Atualmente, não tive problemas para compilar e executar aplicativos usando Xlib-xcb e GTK +. No entanto eu não encontrei uma maneira de integrar os dois, para usar juntos. Por exemplo, é bom poder copiar uma área de um mapa xcb em um Gmap ou GTK + pixmap ou qualquer outro objeto GTK ou GDK. Ou para receber x eventos misturados com os eventos do GTK. Atualmente, eu uso um thread separado para executar um loop de eventos usando xcb_wait_for_event () se eu quiser usar o GTK no mesmo aplicativo. O GTK + possui algum meio de entregar eventos x regulares?
Atualmente, quando eu executo um programa mixando chamadas do Xlib-xcb e GTK +, eu recebo dois ícones na faixa de inicialização do aplicativo Ubuntu, o que é ok, apenas irritante. Eu tenho certeza que isso é porque eu devo usar uma variável de exibição separada (para Xlib), e variável xcb_connection_t (para minhas chamadas xcb). O gerenciador de janelas deve assumir que existem dois aplicativos, separadamente, usando o X11.
Sou apenas um amador e faço isso por diversão e por mim mesmo. Então, mesmo que respostas de "por que você queira fazer isso" ou "não seja uma boa idéia" sejam sensatas, eu ainda quero fazer isso e não me importo se é uma má ideia. Eu estou a divertir-me! Existem alguns kludges que poderiam me permitir obter dados de imagem de um reino para outro, mas espero descobrir que o GTK + ou o GDK tem um jeito de eu chamar diretamente o Xlib-xcb e compartilhar o mesmo conexão, que eu não consegui encontrar.
Como é tudo um aplicativo cliente, faz sentido ter apenas uma conexão com o servidor X11, certo?
E eu posso obter eventos sem nenhum problema e, desde que eu não pegue o ponteiro, o teclado, etc., o lado do GTK + funciona bem.
Sim, parece mesmo uma má ideia! e por que eu iria querer fazer isso? Não sei. É divertido.
BTW, Cairo pode usar um pixmap como superfície, ou cria uma superfície que renderiza no pixmap - não tenho certeza dos termos técnicos. Eu uso o Cairo para texto em vez das chamadas de texto do X Windows.