Ao programar com Wayland, em C, como posso obter a funcionalidade que o xcb e o Xlib fornecem? [fechadas]

3

Entendo que o Wayland é um compositor, que de alguma forma está envolvido com eventos, para que o software do próximo nível possa se registrar no Wayland para receber eventos e assim por diante. Mas Wayland não fornece janelas, apenas superfícies para renderizar janelas e outros gráficos.

Eu coloquei um monte de tempo para ensinar-me de programação C e criar gráficos muito básicos com uma mistura de XCB e Xlib, que mistura facilmente: #include <Xlib-xcb.h>. Gostaria de continuar programando nesse nível, usando eventos xcb, primitivas gráficas xcb, pixmaps, XImages ou xcb_image_t e a extensão MIT-Shm para criar pixmaps de memória compartilhada e ximages de memória compartilhada.

As superfícies mmap'ed de Wayland são atraentes porque me permitem melhor flexibilidade do que o MIT-Shm, que depende da memória compartilhada do SysV.

Existe uma camada de software que fornece o nível de funcionalidade do xcb? Posso depender do suporte a xcb e Xlib, para que um programa X11 possa ser executado como um cliente Wayland?

Não estou interessado em usar GTK + ou Qt como alternativas à funcionalidade do tipo xcb. Eles são para programação sofisticada de GUI e isso não é algo que eu quero - eu quero programação de baixo nível.

Vejo Wayland-egl.h, usado em exemplos. O egl fornece funcionalidade semelhante à que encontro no xcb? Onde posso encontrar tutoriais simples mas abrangentes? Existe alguma documentação tão boa quanto a Xlib? A documentação do Xcb é atroz, mas, tendo os manuais e os tutoriais do Xlib em mãos, aprendi a juntar alguns códigos úteis.

Como programador amador, as informações que encontro on-line são muito enigmáticas, mas sempre acabam sendo uma questão de familiaridade com os vários termos e as bibliotecas relevantes. Na verdade, programar o xcb não é tão complexo, é apenas detalhado e desconhecido.

As informações disponíveis são tão difíceis de analisar e parecem não ter muitos detalhes importantes OU estão escritas em uma linguagem muito obscura e desconhecida para que eu possa entender. Alguém tem algumas dicas para o programador não iniciado, mas razoavelmente bom?

DeeDeeK
fonte
Eu colocaria na lista de discussão de wayland, parte do que você pede é especulativo.
Panther
Eu farei isso. E parte da questão é simplesmente se alguém conhece um sistema de janelas que roda em Wayland, como é aparentemente o EGL, o que daria funcionalidade semelhante ao xcb. Eu deveria ter escrito apenas sobre isso. Vou perguntar na lista de discussão de wayland, bem como repetir aqui: Xlib e XCB permanecerão por muito tempo ainda? Certamente alguém aqui pode saber algo do seu futuro. Vou encontrar essa lista no entanto. THanks
DeeDeeK
Eu antecipo o X e as bibliotecas do X permanecerão por muito tempo, mas serão gradualmente eliminadas. Você está meio que nos pedindo para especular.
Panther

Respostas:

0

Isso é embaraçoso: eu deveria ter consultado as Perguntas frequentes sobre Wayland do X.Org mais de uma vez. Encontrei a resposta para a minha pergunta exatamente onde a procurei pela primeira vez ... [wayland.freedesktop.org/faq}[1]

... existem alguns clientes que dependem do X11, e sempre o serão. Para esse fim, o XWayland fornece um plugin para os compositores de Wayland, executando um servidor X real. Isso fornece aos clientes legados uma plataforma X11 real e compatível para executar, exibida lado a lado com os clientes nativos do Wayland na sua sessão do Wayland

Peço desculpas pela redação da minha pergunta: "O Xlib e o XCB estarão por aí por um longo tempo ainda?" A frase "muito tempo parado" está pedindo uma opinião e eu quis dizer conhecimento factual.

Onde diz que na citação incluída aqui que "sempre haverá" clientes que dependem do X11, eu interpreto isso como "por um longo tempo ainda". É meio vago, eu sei. Talvez como programador eu espere muita exatidão das linguagens naturais.

Outra boa notícia inexata, que vale a pena escrever código que usa o X11 é que há pouca ou nenhuma penalidade de sobrecarga "a sobrecarga de rodar o X em Wayland".

Tudo isso me decidiu: vou continuar #include <Xlib-xcb.h>e não vou me preocupar com isso.

DeeDeeK
fonte