# Wayland (protocolo de servidor gráfico)

Wayland é um protocolo de computador que especifica a comunicação entre o servidor gráfico (chamado compositor Wayland) e os seus clientes. Ele foi inicialmente projetado por Kristian Høgsberg, líder do projeto AIGLX, como um substituto ao X Window System.
A implementação inicial, principalmente libwayland-server, libwayland-client, libwayland-EGL e a implementação de referência Weston são escritas em C e publicada sob a Licença MIT. Weston é escrito para o núcleo Linux. Um porte inicial para o FreeBSD está em processo de desenvolvimento.

## Compositores Wayland

Servidores gráficos que implementam o protocolo de servidor gráfico Wayland são também chamados de compositores Wayland, porque eles adicionalmente fazem a tarefa de um gerenciador de janelas baseado em composição.
* Weston – implementação de referência de um compositor Wayland; Weston implementa decoração de janela de lado de cliente
* Lipstick – framework de shell gráfico móvel que implementa compositor Wayland. É usado no Sailfish OS, Nemo Mobile e AsteroidOS.
* Enlightenment tem suporte completo ao Wayland desde a versão 0.20.
* KWin tem suporte incompleto ao Wayland em abril de 2013.
* Mutter mantém um ramo separado para a integração do Wayland para o GNOME 3.9 (em septembro de 2013).
* Clayland é um exemplo simples de compositor Wayland usando Clutter.
* Westeros é uma biblioteca de compositor Wayland que permite que as aplicações criem seus próprios servidores Wayland, que permite o aninhamento e a incorporação de aplicações de terceiros.

### Weston

Weston é a implementação de referência de um compositor Wayland também desenvolvido pelo projeto Wayland. Está escrito em C e publicado sob a licença MIT. O Weston só tem suporte oficial para os sistemas operacionais baseados em Linux devido à dependência de determinados recursos do kernel do Linux, como a configuração de resolução gráfica em modo kernel (KMS), o Gerenciador de Execução de Gráficos (GEM) e o udev, que ainda não foram implementados em outros sistemas operacionais Unix. Quando executado no Linux, o gerenciamento do hardware de entrada depende do evdev, enquanto o tratamento de buffers depende do Gerenciamento Genérico de Buffer (GBM). No entanto, em 2013 foi anunciado um protótipo de porte do Weston para o FreeBSD.

## Disponibilidade
### Distribuições de Linux para desktops

Em geral, o suporte completo aos ambientes de desktop Wayland nas principais distribuições do Linux ainda está nos estágios iniciais. A maioria das distribuições Linux que usam a versão 3.20 ou mais recente do ambiente de trabalho do Gnome suportam a instalação manual de uma sessão do Wayland e, no caso do Gnome 3.22 ou posterior, pode usar o Wayland por padrão. Adotadores iniciais notáveis que fornecem o Wayland são:
* O Fedora a partir da versão 25 usa o Wayland como sessão padrão do desktop GNOME 3.22, com o X.Org como alternativa se o driver gráfico não suportar o Wayland. A versão 34 do Fedora também usa o Wayland como padrão para sessões de desktop KDE.
* O Ubuntu usa o Wayland como padrão na versão 17.10 (Artful Aardvark). O Ubuntu reverteu para o X.Org na versão 18.04 LTS, pois o Wayland teve problemas com compartilhamento de tela e aplicativos de área de trabalho remota, e não se recuperava tão bem de travamentos do gerenciador de janelas. Desde o Ubuntu 21.04, o Wayland é o padrão novamente.
* O KDE Neon Developer Edition tem suporte ao Wayland.
* O Arch Linux vem com o Wayland habilitado por padrão em vários ambientes desktop.
* O Red Hat Enterprise Linux usa o Wayland como a sessão padrão na versão 8.
* O Debian usa o Wayland como a sessão padrão para o GNOME desde a versão 10.

### Suporte de toolkit

Toolkits que suportam o Wayland incluem os seguintes:
* Clutter tem suporte completo ao Wayland.
* EFL tem suporte completo ao Wayland, exceto para seleção.
* GTK+ 3.20 tem suporte completo ao Wayland.
* Qt 5 tem suporte completo ao Wayland.
* SDL suporta o Wayland desde a versão 2.0.2 e foi habilitado por padrão desde a versão 2.0.4.
* GLFW 3.2 tem suporte ao Wayland.
* FreeGLUT tem suporte inicial ao Wayland.

### Ambientes de desktop

Os ambientes de desktop que estão em processo de serem portados do X para o Wayland incluem: GNOME, KDE Plasma 5 e Enlightenment. O ambiente de desktop Hawaii é um ambiente de desktop que suporta exclusivamente o Wayland.
Em Novembro de 2015, o Enlightenment e20 foi anunciado com suporte completo ao Wayland. O GNOME 3.20 foi a primeira versão a ter uma sessão Wayland completa. O GNOME 3.22 incluiu um suporte muito melhorado ao Wayland no GTK, Mutter e GNOME Shell. O GNOME 3.24 incluiu o suporte para os drivers proprietários da Nvidia no Wayland.
O suporte ao Wayland para o KDE Plasma foi adiado até o lançamento do Plasma 5, embora anteriormente o KWin 4.11 tenha recebido um suporte experimental ao Wayland. A versão do 5.4 do Plasma foi a primeira com uma sessão Wayland.

## História

Kristian Høgsberg, desenvolvedor de software de gráficos do Linux e do X.Org que anteriormente trabalhou no AIGLX e no Direct Rendering Infrastructure 2 (DRI2), iniciou o Wayland como um projeto de tempo livre em 2008 enquanto trabalhava para a Red Hat. Seu objetivo declarado era um sistema em que "cada quadro é perfeito, pelo que quero dizer que as aplicações serão capazes de controlar a renderização o suficiente para que nunca veremos tearing, atrasos, redesenhamento ou cintilação". Høgsberg estava dirigindo pela cidade de Wayland, Massachusetts, quando os conceitos subjacentes "cristalizaram", daí o nome.
Em outubro de 2010, Wayland tornou-se um projeto freedesktop.org. Como parte da migração, o grupo anterior do Google foi substituído pela lista de correspondência wayland-devel como o ponto central de discussão e desenvolvimento do projeto.
As bibliotecas de clientes e servidores do Wayland foram inicialmente lançadas sob a Licença MIT, enquanto o compositor de referência Weston e alguns exemplos de clientes usavam a Licença Pública Geral GNU versão 2. Posteriormente, todo o código GPL foi relicenciado sob a licença MIT "para facilitar o movimento de código entre a implementação de referência e as bibliotecas atuais". Em 2015, descobriu-se que o texto da licença utilizado pelo Wayland era uma versão ligeiramente diferente e mais antiga da licença MIT e o texto da licença foi atualizado para a versão atual usada pelo projeto X.Org (conhecida como Licença MIT Expat).
Wayland funciona com todos os drivers compatíveis com Mesa com suporte ao DRI2, além de drivers do Android através do projeto Hybris.
Os desenvolvedores do Wayland são em grande parte atuais desenvolvedores do servidor X.Org.