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

Publicados: 2023-07-17
Gerenciador de arquivos aberto no laptop System76 Gazelle
Hannah Stryker / How-To Geek
Wayland é um sistema de janelas substituto para distribuições Linux. Ele substitui o antigo padrão X11. Como requer que os aplicativos sejam modificados para funcionar com ele, a adoção tem sido lenta até agora. No momento em que escrevo, o aumento da segurança é a principal vantagem sobre o X11.

X11, ou o X Window System, permite que seu ambiente de área de trabalho gráfico 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.

Índice

O que é Wayland?
Os Muitos Nomes de X
Como funciona o X11
Como Wayland Funciona
Adoção lenta de Wayland por aplicativos
Você está usando Wayland ou X11?
Você deve usar Wayland ou X11?

O que é Wayland?

Wayland é um substituto moderno para o X11, que tem sido o sistema de janelas padrão no Linux por décadas. Wayland é um protocolo de comunicação e 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 os aplicativos usem o protocolo.

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

Os Muitos Nomes de X

O X Window System é um sistema de janelas, lançado pela primeira vez para o Unix operando pelo Instituto de Tecnologia de Massachusetts 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 escrevo, a versão estável atual é X11R7.7.

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

Você ouvirá o X Window System referido como “X”, “X11”, “Xorg”, “X Windows” e o “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 lidam com o visual e o design da interface. A aparência das janelas, quais botões elas possuem e onde esses botões estão localizados são escolhas feitas pelo programador do aplicativo. O X Window System desenha o design resultante na tela.

O X11 fornece uma definição para a comunicação que deve passar entre os vários componentes de um X Window System funcional. 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 organizar 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 Gerenciador de Janelas e os aplicativos, trocando mensagens entre eles. O Window Manager mantém uma lista das janelas que os aplicativos abriram, onde estão na tela, qual o tamanho, se estão sobrepostas e assim por diante.

Um gerenciador de janela 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áfico modernos, incluindo GNOME e KDE, usam gerenciadores de janela de composição.

Como Wayland Funciona

Wayland destina-se a 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 - por meio do kernel - o hardware gráfico. O volume de mensagens pode levar à latência e a uma experiência visual lenta e instável.

Há uma grande base de código também. 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 problemas você terá com o código legado.

Ao alterar a arquitetura, a Wayland modernizou e simplificou a base de código, oferecendo benefícios de desempenho e segurança aprimorada.

Na verdade, eles fundiram o servidor e o gerenciador de janelas em um único aplicativo. Eles removeram qualquer código que executasse 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 age como intermediário de teclado, mouse e eventos de alteração de 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 é feita dentro dos próprios aplicativos, usando 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 envia uma notificação ao compositor, informando-o para atualizar seu mapeamento de janela e usar o buffer de vídeo novo ou atualizado.

Essa arquitetura simplificada e o design de código moderno oferecem melhorias de desempenho, com redimensionamento e arraste de janelas em particular, parecendo suaves e fluidos.

Adoção lenta de Wayland por 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 o Arch Linux. Apesar disso, na maioria das vezes, Wayland executa aplicativos X11.

Há 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 foi modificada e portada para o Wayland.

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

Nvidia lança drivers de GPU Linux de código aberto, com uma pegadinha
Nvidia lança drivers de GPU Linux de código aberto, com um problema

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 a NVIDIA pode ser tão trabalhoso quanto com o X11, embora eu não tenha tido problemas com meu driver diário ao usá-lo com uma GPU NVIDIA GeForce GT 1030.

É provável que alguns autores de aplicativos X11 esperem que seu aplicativo funcione bem com o XWayland e possam evitar ter que retrabalhá-los em aplicativos Wayland. Não se surpreenda se a aceitação e migração para o Wayland for longa e lenta, com novos aplicativos adotando-o, mas a maioria dos aplicativos X11 existentes permanecendo como estão, depositando suas esperanças no XWayland.

RELACIONADOS: O que há de novo no Ubuntu 21.04 'Hirsute Hippo'

Você está usando Wayland ou X11?

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

 echo $XDG_SESSION_TYPE

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

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

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

 loginctl show-session $(loginctl show-user $(whoami) -p Exibir --valor) -p Tipo --valor

O comando loginctl interno e aninhado usa o comando show-user para mostrar as propriedades do usuário nomeado. O comando whoami nos dá o nome do usuário atual. A opção -p (propriedade) restringe a saída de loginctl a informações sobre a configuração “Exibir”, e usamos a opção --value 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 o loginctl externo e usamos o comando show-session para exibir os atributos da sessão. Usamos a opção -p (propriedade) para restringir a saída a informações sobre o tipo de sessão e usamos a opção --value para mostrar o valor sem o rótulo “Tipo=”.

Em um computador usando Wayland, você verá:

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

Se você estiver executando o X Window System, 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 você esteja tendo problemas, você também pode ficar com o que já está usando. Mas se você perceber instabilidades ou atualizações de tela irregulares, tente mudar para o que não estiver usando.

No GNOME, se você quiser trocar e experimentar o outro sistema, na tela de login, clique em seu nome de usuário e, em seguida, 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.

RELACIONADO: Como listar variáveis ​​de ambiente no Linux