Ir para o conteúdo

Wayland (protocolo de servidor gráfico)

Origem: Wikipédia, a enciclopédia livre.
Wayland
AutorKristian Høgsberg
Desenvolvedoresfreedesktop.org e outros
Lançamento inicial30 de setembro de 2008 (17 anos)[1]
Lançamento estável
Wayland: 1.24.0,[2] Weston: 14.0.2[3] Wayland Protocols: 1.47[4] / 6 de julho de 2025; há 7 meses
Repositóriogitlab.freedesktop.org/wayland/wayland.git
Escrito emC
Sistema
operacional
Oficial: Linux
Não-oficial: NetBSD, FreeBSD, DragonFly BSD[5]
TipoProtocolo de comunicações, sistema de janelas, servidor de exibição
LicençaMIT
Websitewayland.freedesktop.org

Wayland é um protocolo de computador que especifica a comunicação entre o servidor gráfico (chamado compositor Wayland) e os seus clientes.[6] 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.[7]

Diferenças entre Wayland e Xorg

[editar | editar código]

Arquitetura

[editar | editar código]

No Xorg, o compositor é separado do servidor gráfico, enquanto o Wayland mescla o servidor gráfico com o compositor em uma única função[8][9]. O Wayland também incorpora algumas tarefas do gerenciador de janelas, o que por sua vez é um processo client-side separado.[10]

Composição

[editar | editar código]

A composição é opcional no Xorg, mas é obrigatória no Wayland. O Xorg trata a composição de forma "ativa", exigindo que todos os pixels da tela sejam atualizados para gerar um quadro novo, introduzindo latência. Por outro lado, o Wayland trata esse processo de forma "passiva", permitindo que o compositor apenas receba os pixels das janelas de forma separada, diminuindo a carga de GPU e entregando menor latência.

Renderização

[editar | editar código]

O servidor X é capaz de lidar com a renderização, apesar de que essa instrução pode ser realizada por uma janela. Em contraste, o Wayland não expõe nenhuma API relacionada a renderização, mas ordena que o client-side faça o papel de decoração de janelas, renderização de fontes, widgets, etc.[11][12] Caso o compositor tenha suporte ao xdg-decorations, as decorações de janelas podem ser desenhadas pelo próprio compositor.[13]

Segurança

[editar | editar código]

O Wayland isola a entrada e saída de dados de todas as janelas, mantendo a confidencialidade do que o usuário está digitando, sendo projetado para evitar keyloggers. Essa feature não existe no Xorg.[14]

Caso seja necessário usar atalhos globais, o compositor precisa suportar o xdg-desktop-portal

Compositores Wayland

[editar | editar código]
Elementos típicos de uma janela. Nem o Wayland nem o X11 especificam qual software é responsável pela renderização da decoração da janela. Weston requer que elas sejam desenhadas pelo cliente, mas o KWin implementará a decoração do lado do servidor.

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.[15]
  • Lipstick – framework de shell gráfico móvel que implementa compositor Wayland. É usado no Sailfish OS, Nemo Mobile e AsteroidOS.[16]
  • Enlightenment - Gerenciador de janelas baseado em módulos.[17]
  • KWin - Compositor padrão do KDE Plasma, definindo a sessão Wayland como padrão, apresentando uma das implementações mais completas dos protocolos Wayland.[18]
  • Mutter - Compositor padrão do Gnome, utilizando a sessão Wayland por padrão.[19]
  • Hyprland - Compositor de empilhamento de janelas escrito em C++. [20]
  • Sway - Compositor de empilhamento de janelas baseado em wlroots e escrito em C++, sendo inspirado no i3.[21]
  • Labwc - Compositor de empilhamento de janelas baseado em wlroots, sendo inspirado no OpenBox.[22]
  • Woodland - Compositor de empilhamento de janelas baseado em wlroots escrito em C, com o foco em simplicidade e estabilidade.[23]
  • Niri - Compositor de janela 'scrollável' escrito em Rust.[24]
  • Gamescope - Microcompositor desenvolvido pela Valve para executar aplicações Xwayland com as tecnologias Wayland. O mesmo é executado de forma aninhada em outros compositores.[25]

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.[7]

Disponibilidade

[editar | editar código]

Distribuições de Linux para desktops

[editar | editar código]

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.[26][27] A versão 34 do Fedora também usa o Wayland como padrão para sessões de desktop KDE.[28]
  • O Ubuntu usa o Wayland como padrão na versão 17.10 (Artful Aardvark).[29][30] 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.[31][32] Desde o Ubuntu 21.04, o Wayland é o padrão novamente.[33][34]
  • O KDE Neon Developer Edition tem suporte ao Wayland.[35][36]
  • O Arch Linux vem com o Wayland habilitado por padrão em vários ambientes desktop.[37]
  • O Red Hat Enterprise Linux usa o Wayland como a sessão padrão na versão 8.[38]
  • O Debian usa o Wayland como a sessão padrão para o GNOME desde a versão 10.[39]

Suporte de toolkit

[editar | editar código]

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 tem suporte completo ao Wayland a partir do GTK3.
  • Qt tem suporte completo ao Wayland a partir do QT5.
  • 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 tem suporte ao Wayland a partir do GLFW 3.2.
  • FreeGLUT tem suporte inicial ao Wayland.

Ambientes de desktop

[editar | editar código]

Em Novembro de 2015, o Enlightenment e20 foi anunciado com suporte completo ao Wayland.[40] 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.[41] O GNOME 3.24 incluiu o suporte para os drivers proprietários da Nvidia no Wayland.[42]

A partir do KDE Plasma 6, a sessão Wayland é utilizada por padrão, com planos da sessão X11 ter o suporte encerrado até o lançamento do Plasma 7[43], em favor da sessão Wayland.

História

[editar | editar código]

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.

Ver também

[editar | editar código]

Referências

  1. Kristian Høgsberg (30 de setembro de 2008). «Initial commit». Consultado em 15 de outubro de 2020 
  2. Ser, Simon (6 de julho de 2025). «[ANNOUNCE] wayland 1.24.0». wayland-devel (Lista de grupo de correio). Consultado em 26 de dezembro de 2025 
  3. Vlad, Marius (25 de abril de 2025). «[ANNOUNCE] weston 14.0.2». wayland-devel (Lista de grupo de correio). Consultado em 26 de dezembro de 2025 
  4. Ådahl, Jonas (15 de dezembro de 2025). «wayland-protocols 1.47 is now available». wayland-devel (Lista de grupo de correio). Consultado em 26 de dezembro de 2025 
  5. «Wayland & Weston Compositor Ported To DragonFlyBSD - Phoronix». www.phoronix.com 
  6. «Wayland». Wayland is a protocol for a compositor to talk to its clients as well as a C library implementation of that protocol. 
  7. a b Larabel, Michael (16 de fevereiro de 2013). «Wayland Begins Porting Process To FreeBSD». Phoronix. Consultado em 14 de julho de 2013 
  8. «Wayland». wayland.freedesktop.org. Consultado em 28 de dezembro de 2025 
  9. Vervloesem, Koen (15 de fevereiro de 2012). «FOSDEM: The Wayland display server». LWN.net (em inglês). Consultado em 28 de dezembro de 2025 
  10. Edge, Jake (11 de abril de 2012). «LFCS 2012: X and Wayland». LWN.net (em inglês). Consultado em 28 de dezembro de 2025 
  11. «Wayland». wayland.freedesktop.org. Consultado em 28 de dezembro de 2025 
  12. Vervloesem, Koen (15 de fevereiro de 2012). «FOSDEM: The Wayland display server». LWN.net (em inglês). Consultado em 28 de dezembro de 2025 
  13. Flöser, Martin (7 de fevereiro de 2013). «Client Side Window Decorations and Wayland». Martin's Blog (em inglês). Consultado em 28 de dezembro de 2025 
  14. Kerrisk, Michael (25 de setembro de 2012). «XDC2012: Graphics stack security». LWN.net (em inglês). Consultado em 28 de dezembro de 2025 
  15. «Weston - ArchWiki». wiki.archlinux.org. Consultado em 27 de dezembro de 2025 
  16. sailfishos/lipstick, Sailfish OS, 15 de dezembro de 2025, consultado em 27 de dezembro de 2025 
  17. «Making sure you're not a bot!». git.enlightenment.org. Consultado em 27 de dezembro de 2025 
  18. «Plasma / KWin · GitLab». GitLab (em inglês). Consultado em 27 de dezembro de 2025. Cópia arquivada em 15 de novembro de 2025 
  19. «Ah, não!». gitlab.gnome.org. Consultado em 27 de dezembro de 2025 
  20. hyprwm/Hyprland, Hypr Development, 27 de dezembro de 2025, consultado em 27 de dezembro de 2025 
  21. swaywm/sway, Sway, 27 de dezembro de 2025, consultado em 27 de dezembro de 2025 
  22. labwc/labwc, Lab Wayland Compositor, 27 de dezembro de 2025, consultado em 27 de dezembro de 2025 
  23. Nicolas (24 de dezembro de 2025), DiogenesN/woodland, consultado em 27 de dezembro de 2025 
  24. Molodetskikh, Ivan (27 de dezembro de 2025), YaLTeR/niri, consultado em 27 de dezembro de 2025 
  25. ValveSoftware/gamescope, Valve Software, 27 de dezembro de 2025, consultado em 27 de dezembro de 2025 
  26. Ricardo Ferreira (22 de novembro de 2016). «Fedora 25 oficialmente liberado com servidor gráfico Wayland, substituto do X11, disponível por padrão». Linux Descomplicado. Consultado em 23 de dezembro de 2017 
  27. «Fedora 25 Release Notes» (PDF). Fedora Project. Consultado em 23 de dezembro de 2017 
  28. «Fedora 34 is officially here!». Fedora Magazine. 27 de abril de 2021. Consultado em 30 de abril de 2021 
  29. Josué Vicente (19 de outubro de 2017). «Ubuntu 17.10 é oficialmente lançado com GNOME 3.26 e Wayland por padrão». Linuxbuzz. Consultado em 23 de dezembro de 2017 
  30. «ArtfulAardvark/ReleaseNotes - Ubuntu Wiki». Ubuntu Wiki. Consultado em 23 de dezembro de 2017 
  31. «Bionic Beaver 18.04 LTS to use Xorg by default». Canonical 
  32. Dionatan Simioni (26 de abril de 2018). «Ubuntu 18.04 LTS Bionic Beaver lançado, conheça 21 novidades sobre o sistema!». Diolinux. Consultado em 30 de abril de 2021 
  33. Carlos Augusto (22 de abril de 2021). «Ubuntu 21.04 lançado, confira as novidades!». Diolinux. Consultado em 30 de abril de 2021 
  34. «Ubuntu 21.04 is here». Canonical. 22 de abril de 2021. Consultado em 30 de abril de 2021. Cópia arquivada em 22 de abril de 2021 
  35. Dionatan Simioni (23 de junho de 2017). «KDE Neon Developer Edition traz suporte ao Wayland». Blog Diolinux. Consultado em 23 de dezembro de 2017 
  36. «Wayland Option Now in Neon Dev Unstable ISO by Default». KDE neon Developers Blog. 16 de junho de 2017. Consultado em 23 de dezembro de 2017 
  37. «Wayland - ArchWiki». ArchWiki. Consultado em 23 de dezembro de 2017 
  38. «Chapter 5.1. New features». Red Hat Customer Portal (em inglês). Consultado em 26 de novembro de 2019 
  39. «NewInBuster - Debian Wiki». wiki.debian.org. Consultado em 26 de novembro de 2019 
  40. Larabel, Michael (30 de novembro de 2015). «Enlightenment 0.20 Arrives With Full Wayland Support & Better FreeBSD Support». Phoronix.com. Consultado em 6 de abril de 2024. Cópia arquivada em 15 de março de 2016 
  41. «A Look At The Exciting Features/Improvements Of GNOME 3.22». Phoronix. Consultado em 6 de abril de 2024. Cópia arquivada em 12 de agosto de 2020 
  42. «GNOME Lands Mainline NVIDIA Wayland Support Using EGLStreams». Phoronix. Consultado em 6 de abril de 2024. Cópia arquivada em 8 de agosto de 2019 
  43. «Requirements for dropping Xorg support (#202) · Issues · Plasma / KWin · GitLab». GitLab (em inglês). Consultado em 26 de dezembro de 2025. Cópia arquivada em 26 de junho de 2025 

Ligações externas

[editar | editar código]