O que é Wayland no Linux e como ele é diferente do X?

X11, ou X Window System, permite que seu ambiente gráfico de área de trabalho exiba e controle janelas. Wayland é um substituto para o X11. Ele foi projetado para ser mais rápido e seguro. Aqui está o que você precisa saber sobre eles.

O que é Wayland?

Wayland é um substituto moderno para o X11, que tem sido o sistema de janelas padrão no Linux há décadas. Wayland é um protocolo de comunicação que define as mensagens entre um servidor de exibição X Window e aplicativos clientes. O projeto Wayland fornece bibliotecas de cliente e servidor que permitem que aplicativos usem o protocolo.

O projeto Wayland foi iniciado por um desenvolvedor Red Hat em 2008.

Os muitos nomes de X

O X Window System é um sistema de janelas, lançado pela primeira vez para Unix operando pelo Massachusetts Institute of Technology em 1984. Os aplicativos podem se basear na funcionalidade oferecida pelo sistema de janelas para gerar interfaces de usuário.

Em 1987, o X Window System atingiu a versão 11 e ficou conhecido como X11. Agora é gerenciado pela Fundação X.Org . Ainda está na versão 11, embora tenha havido muitos lançamentos menores desde 1987. No momento em que este artigo foi escrito, a versão estável atual era X11R7.7 .

O “X” no nome não significa dez em algarismos romanos, nem implica “Xtra”, “Xtended” ou algo parecido. Um sistema de janelas anterior era chamado de “W”, para “janelas”, e eles simplesmente passaram para a próxima letra do alfabeto quando iniciaram o novo projeto.

Você ouvirá o X Window System sendo chamado de “X”, “X11”, “Xorg”, “X Windows” e “X Window System”.

Como funciona o X11

O X Window System lida com eventos e primitivos de baixo nível, como interagir com o mouse e desenhar e mover janelas. Os aplicativos cuidam do visual e do design da interface. A aparência das janelas, quais botões elas possuem e onde esses botões estão localizados são escolhas que o programador de aplicativos faz. O X Window System desenha o design resultante na tela.

Recomendado:  Como a área de trabalho do Windows RT difere do Windows 8

O X11 fornece uma definição para a comunicação que deve passar entre os vários componentes de um sistema X Window em funcionamento. Essa comunicação é necessária porque o código que um aplicativo habilitado para X usa para desenhar suas janelas e elementos de interface não está dentro do aplicativo. Esse trabalho é compartilhado entre um servidor X e o Gerenciador de Janelas.

Os aplicativos são clientes do servidor X. O Window Manager é um tipo especial de cliente. O servidor X é responsável por gerenciar recursos, executar solicitações de desenho e empacotar eventos, como pressionamentos de teclas e cliques do mouse, para os aplicativos apropriados.

Ele também atua como intermediário na comunicação entre o Window Manager e os aplicativos, intermediando mensagens entre eles. O Gerenciador de Janelas mantém uma lista das janelas que os aplicativos têm abertas, onde estão na tela, qual o tamanho delas, se estão sobrepostas, e assim por diante.

Um gerenciador de janelas de composição mantém um buffer fora da tela para cada janela. Ele compõe esses buffers em uma única imagem que representa a janela superior — que representa toda a área de trabalho — que é gravada na tela.

Todos os ambientes de desktop gráficos modernos , incluindo GNOME e KDE, usam gerenciadores de janelas de composição.

Como funciona o Wayland

Wayland pretende resolver os problemas do X11. A arquitetura X11 requer muitas mensagens. O servidor X fica entre os clientes e o Gerenciador de Janelas. Ele também fica entre tudo e – através do kernel – o hardware gráfico . O volume de mensagens pode levar à latência e a uma experiência visual lenta e instável.

Também há uma grande base de código. Há o aplicativo de servidor, o aplicativo Window Manager e a biblioteca X11 que os clientes usam. Quanto maior (e mais antiga) for sua base de código, mais difícil será mantê-la e mais você terá dificuldades com o código legado.

Ao mudar a arquitetura, Wayland modernizou e simplificou a base de código, proporcionando benefícios de desempenho e maior segurança.

Recomendado:  Como excluir uma lista de reprodução no Spotify

Na verdade, eles fundiram o servidor e o gerenciador de janelas em um único aplicativo. Eles removeram qualquer código que executava funções que agora são executadas pelo kernel. Em vez de replicar o esforço, eles aproveitaram a funcionalidade do kernel.

Com o Wayland, o compositor e o aplicativo cliente se comunicam diretamente. O compositor mantém seu mapeamento interno de quais janelas estão na área de trabalho e em que tamanho e estado elas estão. Ele intermedia eventos de alteração de teclado, mouse e janela e os envia para os aplicativos que possuem essas janelas.

Os aplicativos atualizam a interface do usuário de acordo. Uma grande diferença é que a renderização é realizada dentro dos próprios aplicativos, utilizando as bibliotecas Wayland vinculadas.

O aplicativo atualiza o buffer usado para manter a janela ou cria um novo e descarta o antigo. O aplicativo cliente então envia uma notificação ao compositor, solicitando que ele atualize seu mapeamento de janela e use o buffer de vídeo novo ou atualizado.

Essa arquitetura simplificada e design de código moderno proporcionam melhorias de desempenho, com redimensionamento e arrastamento de janelas em particular, parecendo suave e fluido.

A lenta adoção do Wayland pelos aplicativos

Wayland é o sistema de janelas padrão no Debian 10 e mais recente, Fedora 34 ou mais recente, Ubuntu 18.04 ou mais recente e outras distribuições como Arch Linux. Apesar disso, na maioria das vezes, o Wayland executa aplicativos X11.

Existe uma camada de compatibilidade chamada XWayland que permite que aplicativos X11 sejam executados no Wayland. Isso foi necessário porque a maioria dos aplicativos X11 não foram modificados e portados para o Wayland.

Em ambientes de desktop que fornecem compositores Wayland, como o GNOME, aplicativos oficiais como o GNOME Text Editor e Maps, Files e Calendar são todos aplicativos nativos do Wayland. Mas a grande maioria dos aplicativos X11 ainda são aplicativos X11 nativos e intocados.

O middleware XWayland geralmente funciona bem, mas pode haver problemas com alguns aplicativos X11 que executam funções relacionadas à tela de baixo nível, como gravação de tela. Usar o Wayland com NVIDIA pode ser tão trabalhoso quanto com o X11, embora eu não tenha tido problemas em meu driver diário ao usá-lo com uma GPU NVIDIA GeForce GT 1030.

Recomendado:  É melhor comprar teclas simples ou substituir um teclado inteiro?

Alguns autores de aplicativos X11 provavelmente esperam que seu aplicativo funcione bem com o XWayland e possam evitar ter que retrabalhá-los em aplicativos Wayland. Não se surpreenda se a adoção e migração para o Wayland forem longas e lentas, com novos aplicativos adotando-o, mas a maioria dos aplicativos X11 existentes permanecendo como estão, depositando suas esperanças no XWayland.

Você está usando Wayland ou X11?

Se você estiver usando uma das principais distribuições Linux, é provável que já esteja usando o Wayland. Você pode verificar emitindo o seguinte comando.

eco $XDG_SESSION_TYPE

Em um sistema usando Wayland, a saída será:

Exibindo o valor da variável de ambiente XDG_SESSION_TYPE no Fedora Linux, para determinar se Wayland ou X11 está em uso

E em um sistema executando o X Window System, você verá:

Exibindo o valor da variável de ambiente XDG_SESSION_TYPE no Manjaro Linux, para determinar se Wayland ou X11 está em uso

Raramente, a XDG_SESSION_TYPEvariável de ambiente não está definida. Nesse caso, você pode usar este comando:

loginctl show-session $(loginctl show-user $(whoami) -p Exibir --value) -p Digite --value

O comando interno aninhado loginctlusa o show-usercomando para mostrar propriedades do usuário nomeado. O whoamicomando nos dá o nome do usuário atual . A -popção (propriedade) restringe a saída de loginctlinformações sobre a configuração “Exibir” e usamos a --valueopção para retornar apenas o valor. Não queremos ter a string “Display=” na resposta de loginctl. Tudo isso nos dá um ID de sessão.

Passamos o ID da sessão para outer loginctle usamos o show-sessioncomando para exibir os atributos da sessão. Usamos a -popção (property) para restringir a saída às informações sobre o tipo de sessão e usamos a --valueopção para mostrar o valor sem o rótulo “Type=”.

Em um computador usando Wayland, você verá:

Usando o comando loginctl no Fedora Linux, para determinar se Wayland ou X11 está em uso

Se estiver executando o X Window System, você verá:

Usando o comando loginctl no Manjaro inux, para determinar se Wayland ou X11 está em uso

Você deve usar Wayland ou X11?

A menos que esteja tendo problemas, você também pode continuar com o que já está usando. Mas se notar instabilidades ou atualizações de tela irregulares, você pode tentar mudar para qualquer um que não esteja usando.

No GNOME, se você quiser trocar e experimentar outro sistema, na tela de login clique no seu nome de usuário e depois clique no ícone da roda dentada no canto inferior direito da tela.

O menu suspenso no GNOME que permite escolher uma experiência de desktop baseada em Wayland ou X11

Um menu oferecerá diferentes versões do GNOME. As opções que mencionam “Xorg” usam o X Window System e as que não usam Wayland.