Diferença técnica e prática entre X11, Wayland e XWayland?

Uma coisa que vejo bastante por aí, é como em alguns hardwares, as distribuições Linux não funcionam muito bem graficamente no X11 mas no Wayland sim e vice versa. Também existem alguns softwares que vão pedir X11 ou Wayland especificamente para funcionar. Um exemplo é o Discord e o TeamViewer, que só funcionam no X11. Eu gostaria de entender isso de uma forma mais aprofundada, já que as explicações superficiais que vi não passaram muito de “Faz a mesma coisa mas de forma diferente”. Se tiver material em inglês, também agradeço. Inglês… Português… tanto faz para mim.

1 Curtida

X11 é um programa que funciona como um servidor gráfico, ou seja ele passa informações sobre as janelas pra quem pedir

Wayland é um protocolo gráfico ou seja ele é uma ponte entre o servidor gráfico (que são chamados de compositores Wayland) e os clientes (que são os programas)

Na prática a diferença entre eles é a seguinte:

No X tudo pode ser modular de forma seamless ou seja, por exemplo: você pode ter um gerenciador de janelas e um painel sem que os dois precisem conversar, já no Wayland o gerenciador de janelas e um painel precisam ser um só ou eles conversem entre sim

O Wayland é propositadamente limitado ao contrário do X que foi projetado pra ser o mais aberto possível, no wayland você tem por vantagem:

  • Um aplicativo não pode saber o que está sendo digitado em outro, é por isso que o TeamViewer e similares não funcionam

Mas em compensação tem uma desvantagem gigantesca:

As janelas são individuais ou seja, um aplicativo terceiro não pode fechar, mover, maximizar, minimizar por padrão ou seja a não ser que uma interface seja feita do zero a partir do compositor, isso significa que apesar da maioria dos programas dos ambientes desktop funcionarem sem problemas no Wayland, o shell (ou seja a interface) que por acaso é a parte mais complexa de se refazer literalmente do zero é completamente incompatível com o Wayland, é por isso que praticamente só Gnome e KDE fizeram um port funcional pro Wayland

2 Curtidas