Wayland (Português)
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
- dwl — Compositor Wayland parecido com o dwm baseado no wlroots.
- Hyprland — Compositor wayland tiling dinâmico sem abster-se da aparência.
- japokwm — Compositor Wayland tiling dinâmico baseado na criação de layouts, baseado no wlroots.
- Qtile — Um gerenciador de janelas e compositor Wayland cheio de funcionalidades e configurável ecrito e configurado em Python.
- river — Compositor Wayland tiling dinâmico inspirado pelo dwm e bspwm.
- Velox — Simples gerenciador de janelas baseado no swc, inspidado pelo dwm e xmonad.
Stacking
- Enlightenment — Veja Enlightenment#Manually. Para mais informações: [1] [2]
- 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 ⓘ] || hikariAUR
- KDE KWin — Veja KDE#Iniciando o Plasma.
- Liri Shell — Parte do Liri, escrito em QtQuick e QtCompositor como um compositor para Wayland.
- labwc — Compositor baseado no wlroots inspirado pelo Openbox.
- Mutter — Veja GNOME#Iniciando.
- wayfire — Compositor 3D inspirado pelo Compiz e baseado no wlroots.
- https://wayfire.org/ || wayfireAUR
- Weston — Implementação referência de um compositor Wayland.
- wio — Compositor baseado no wlroots que têm como objetivo replicar a aparência e sentimento do ambiente Rio do Plan 9.
Outros
- Cage — Exibe uma única aplicação em modo tela cheia como um quiosque.
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 zoomAUR.
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.
Para rodar um programa Clutter em Wayland, defina: CLUTTER_BACKEND=wayland
.
SDL2
Para rodar um programa SDL2 no Wayland, defina SDL_VIDEODRIVER=wayland
.
SDL_VIDEODRIVER=wayland
. Para forçar o programa a rodar com Xwayland, defina SDL_VIDEODRIVER=x11
.GLFW
Para usar GLFW com o backend Wayland, instale o pacote glfw-wayland[link quebrado: replaced by glfw] (ao invés do glfw-x11[link quebrado: replaced by glfw]).
GLEW
O pacote glew-waylandAUR 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 electron13AUR 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.
Driver da Nvidia
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 (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-gitAUR é 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