Wayland (Português)

Status de tradução:
Esse artigo é uma tradução de
Wayland
. Data da última tradução: 2021-07-28. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
KMS
Xorg
Screen capture#Wayland
Wayland
é um protocolo de servidor de exibição. Seu objetivo é se tornar o sucessor do
Sistema de janelas X
. Você pode encontrar uma
comparação entre Wayland e Xorg no Wikipedia
.
Servidores de exibição que usam o protocolo Wayland são chamados de
compositores
devido a também agirem como um
gerenciador de janelas de composição
. Abaixo você pode encontrar uma
lista de compositores Wayland
.
Para executar aplicações
X11
legadas sem problemas de compatibilidade,
Xwayland
pode ser usado, que oferece um Servidor X no Wayland.
Requerimentos
A maioria do compositores Wayland somente funcionam em sistemas que usam
Kernel mode setting
. Wayland por si só não provê um ambiente gráfico; para isto você também precisa de um compositor (veja a seção seguinte), ou um ambiente desktop que inclui um compositor (e.x.
GNOME
ou
KDE
.
Para o driver GPU e o compositor Wayland serem compatíveis eles devem suportar a mesma buffer API. Existem duas principais APIs:
GBM
e
EGLStreams
.
Buffer API
Suporte de driver GPU
Suporte de compositores Wayland
GBM
Todos exceto
NVIDIA
Todos
EGLStreams
NVIDIA
GNOME
,
Weston
(com uma modificação de terceiros)
Compositores
Veja
Window manager#Types
para diferenças entre
Tiling
e
Stacking
.
Tiling
Cagebreak
— Baseado no cage, inspirado pelo
ratpoison
.
https://github.com/project-repo/cagebreak
||
cagebreak
AUR
dwl
— Compositor Wayland parecido com o
dwm
baseado no wlroots.
https://github.com/djpohly/dwl
||
dwl
AUR
Hyprland
— Compositor wayland tiling dinâmico sem abster-se da aparência.
https://hyprland.org/
||
hyprland
japokwm
— Compositor Wayland tiling dinâmico baseado na criação de layouts, baseado no wlroots.
https://github.com/werererer/japokwm
||
japokwm-git
AUR
Qtile
— Um gerenciador de janelas e compositor Wayland cheio de funcionalidades e configurável ecrito e configurado em Python.
https://github.com/qtile/qtile
||
qtile
river
— Compositor Wayland tiling dinâmico inspirado pelo dwm e
bspwm
.
https://github.com/ifreund/river
||
river-git
AUR
Sway
— Compositor Wayland compatível com o
i3
baseado no wlroots.
https://github.com/swaywm/sway
||
sway
Velox
— Simples gerenciador de janelas baseado no swc, inspidado pelo dwm e
xmonad
.
https://github.com/michaelforney/velox
||
velox-git
AUR
Stacking
Enlightenment
— Veja
Enlightenment#Manually
. Para mais informações:
[1]
[2]
https://www.enlightenment.org/
||
enlightenment
hikari
— Compositor baseado no wlroots inspirado pelo
cwm
que é ativamente desenvolvido no FreeBSD mas também suporta Linux.
https://hikari.acmelabs.space/
[
link inativo
2024-11-06 ⓘ]
||
hikari
AUR
KDE
KWin
— Veja
KDE#Iniciando o Plasma
.
https://userbase.kde.org/KWin
||
kwin
labwc
— Compositor baseado no wlroots inspirado pelo Openbox.
https://github.com/johanmalm/labwc
||
labwc-git
AUR
Mutter
— Veja
GNOME#Iniciando
.
https://gitlab.gnome.org/GNOME/mutter
||
mutter
wayfire
— Compositor 3D inspirado pelo
Compiz
e baseado no wlroots.
https://wayfire.org/
||
wayfire
Weston
— Implementação referência de um compositor Wayland.
https://gitlab.freedesktop.org/wayland/weston
||
weston
wio
— Compositor baseado no wlroots que têm como objetivo replicar a aparência e sentimento do ambiente Rio do Plan 9.
https://gitlab.com/Rubo/wio
||
wio-wl
AUR
Outros
Cage
— Exibe uma única aplicação em modo tela cheia como um quiosque.
https://www.hjdskes.nl/projects/cage/
||
cage
Alguns destes acima podem suportar
gerenciadores de exibição
. Verifique
/usr/share/wayland-sessions/
compositor
.desktop
para ver como eles são inicializados.
Gerenciadores de exibição
Gerenciadores de exibição listados abaixo suportam lançar compositores Wayland. A coluna
Tipo
indica se o gerenciador de exibição suporta ou não se executar em Wayland.
Nome
Tipo
Descrição
GDM
Roda em Wayland
Gerenciador de login do
GNOME
.
greetd
Daemon de login
Daemon de login minímo e flexível.
LightDM
Roda em X11
Gerenciador de login TUI escrito em C
Ly
Roda no console
TUI display manager written in C
SDDM
Roda em X11
Gerenciador de login feito em QML.
tbsm
Roda no console
Simples lançador CLI de sessão escrito em bash puro.
Bibliotecas GUI
Veja detalhes no
site oficial
[
link inativo
2024-10-12 ⓘ]
.
GTK
Os pacotes
gtk3
e
gtk4
tem o backend Wayland já habilitado. GTK irá ser executado por padrão em Wayland, mas é possível sobrescrever isto para Xwayland ao modificar a variável de ambiente:
GDK_BACKEND=x11
.
Qt
Para habilitar o suporte ao Wayland no
Qt
5 ou 6, instale o pacote
qt5-wayland
ou
qt6-wayland
, respectivamente.
Para rodar um programa Qt com o plugin Wayland
[3]
, use
-platform wayland
ou a
variável de ambiente
QT_QPA_PLATFORM=wayland
. Para forçar o uso do
X11
numa sessão Wayland, use
QT_QPA_PLATFORM=xcb
. Isto pode ser necessário para alguns programas proprietários que não usam a implementação do Qt presente no sistema, como
zoom
AUR
.
Em alguns compositores, como o
sway
, programas Qt executados nativamente em Wayland podem perder funcionalidade. Por exemplo,
KeepassXC
não vai conseguir minimizar para a barra. Isto pode ser resolvido ao instalar
qt5ct
e definindo
QT_QPA_PLATFORMTHEME=qt5ct
antes de executar o programa.
Clutter
O toolkit Clutter suporta o backend Wayland e isto possibilita que ele rode como um cliente Wayland. O backend já é habilitado por padrão no pacote
clutter
AUR
.
Para rodar um programa Clutter em Wayland, defina:
CLUTTER_BACKEND=wayland
.
SDL2
Para rodar um programa SDL2 no Wayland, defina
SDL_VIDEODRIVER=wayland
.
Nota
Muitos jogos proprietários vem com versões antigas do SDL, que não suportam Wayland e podem deixar de funcionar se você definir
SDL_VIDEODRIVER=wayland
. Para forçar o programa a rodar com Xwayland, defina
SDL_VIDEODRIVER=x11
.
GLEW
O pacote
glew-wayland
AUR
[
link quebrado
: package not found]
atualmente ainda não funciona com muitas aplicações baseada no GLEW, então a única opção é usar
glew
com Xwayland. Veja
FS#62713
.
EFL
EFL tem suporte completo ao Wayland. Para rodar um programa EFL no Wayland, veja a
página do projeto
[
link inativo
2024-10-12 ⓘ]
.
winit
Winit é uma biblioteca de gerenciamento de janela em Rust. Por padrão utiliza o backend Wayland, mas é possível forçar o uso do Xwayland ao modificar a variável de ambiente:
WINIT_UNIX_BACKEND=x11
.
Electron
Para usar aplicações baseadas no
electron
nativamente no Wayland, crie ou edite o arquivo
${XDG_CONFIG_HOME}/electron-flags.conf
para adicionar as seguintes opções.
~/.config/electron-flags.conf
--enable-features=UseOzonePlatform
--ozone-platform=wayland
Note que versões mais antigas do electron precisam de seu próprio arquivo
electron-flags.conf
. Por exemplo, se você tem o pacote
electron13
AUR
[
link quebrado
: package not found]
instalado, você pode querer executar
$ ln -s electron-flags.conf electron13-flags.conf
de dentro do seu diretório
${XDG_CONFIG_HOME}
(ou manter um arquivo separado
${XDG_CONFIG_HOME}/electron12-flags.conf
se quer que diferentes versões do
electron
usem diferentes opções em tempo de execução).
Xwayland
Xwayland
[
link inativo
2024-10-12 ⓘ]
é um Servidor X que executa no Wayland. Isto oferece compatibilidade para aplicações
X11
legadas.
Para usa-lo,
instale
o pacote
xorg-xwayland
.
Xwayland é iniciado pelo compositor, então você deve verificar pela compatibilidade Xwayland e instruções de como iniciar o Xwayland com o compositor de sua escolha.
Nota
Sobre a segurança: Xwayland é um servidor X, então não suporta as funcionalidades de segurança do Wayland!
Driver da Nvidia
Nota
Drivers da Nvidia antes da versão 470 (e.x.
nvidia-390xx-dkms
AUR
) não suportam aceleração de hardware pelo Xwayland, fazendo com que aplicações não Wayland sofram com pouco desempenho em sessões Wayland.
Note que é necessário habilitar
DRM KMS
. Também veja informação adicional na
documentação oficial
e sobre o seu gerenciador de exibição (e.x.
GDM
).
Resolução de problemas
Correção de cor
Veja
Backlight#Color correction
.
Tela lenta, glitches gráficos, e crashes
Usuários do gnome-shell podem sofrer problemas na tela quando eles mudam para Wayland do X. Uma das causas desse problema pode ser o
CLUTTER_PAINT=disable-clipped-redraws:disable-culling
definido para o gnome-shell baseado no Xorg. Tente remover isto do
/etc/environment
ou outros arquivos rc para ver se tudo volta ao normal.
Cannot open display: :0 com programas feitos em Electron
Tenha certeza que você não definiu GDK_BACKEND=wayland. Definir isso globalmente irá quebrar programas Electron.
Exibição remota
(20200206)
wlroots
[
link quebrado
: replaced by
wlroots0.18
]
(usado pelo
Sway
) oferece um backend VNC com
wayvnc
desde a versão 0.10. Suporte ao backend RDP foi removido.
[4]
.
(20180401)
mutter
tem agora desktop remoto habilitado no tempo de compilação, veja
[5]
e
gnome-remote-desktop
para detalhes.
Existe um merge do FreeRDP no Weston em 2013, habilitado com uma flag de compilação. O pacote
weston
vem com isso habilitado desde a versão 6.0.0.
waypipe-git
AUR
é um proxy transparente para programas Wayland, com um comando que roda via
SSH
.
Captação de entradas nos jogos, desktop remoto e janelas VM
Diferente do Xorg, Wayland não permite captação exclusiva de entrada, também conhecido como captação ativa ou explicita (exemplo
teclado
,
mouse
), ao invés disso, depende do compositor Wayland para direcionar os atalhos do teclado e confinar o ponteiro para a janela do programa.
Esta mudança na captação de entrada quebra o atual comportamento dos programas:
Combinação de teclas e modificadores irão ser pegos pelo compositor e não serão enviados para o desktop remoto e janelas de máquina virtual.
O mouse não irá ser restrito a janela da aplicação, isto pode causar um efeito de paralaxe onde a localização do ponteiro dentro da janela da máquina virtual ou desktop remoto é mal interpretado do host.
Isto é resolvido adicionando extensões para o protocolo Wayland e Xwayland. O suporte para estas extensões precisam ser adicionados para compositores Wayland. Os clientes nativos do Wayland, toolkits widget (exemplo GTK, Qt) ou as próprias aplicações, se nenhum toolkit está sendo usado, também precisam suportar estas extensões. Programas Xorg não precisam de mudança devido a existência do Xwayland.
Estas extensões já estão incluídas no
wayland-protocols
, e suportadas pelo
xorg-xwayland
.
Extensões relacionadas são:
Xwayland keyboard grabbing protocol
Compositor shortcuts inhibit protocol
Relative pointer protocol
Pointer constraints protocol
Compositores que suportam Wayland:
Mutter, compositor do
GNOME
desde versão 3.28
.
wlroots suporta relative-pointer e pointer-constraints
Toolkits widget que suportam:
GTK desde a versão 3.22.18.
Veja também
Documentação online do Wayland
Repositório Git oficial do Wayland
Fedora:How to debug Wayland problems
Incríveis projetos Wayland
Temas de cursor
Discussão no fórum do Arch Linux
Guia de migração i3 - Alternativas Wayland a aplicações X11 usadas no i3
Explorador Wayland - Uma melhor maneira de ler a documentação Wayland