Após 13 meses de desenvolvimento, foi lançado o release estável do protocolo, mecanismo de interação entre processos e bibliotecas Wayland 1.24. A branch 1.24 é compatível retroativamente em nível de API e ABI com versões 1.x e contém principalmente correções de bugs e atualizações menores do protocolo. Os desenvolvimentos do projeto são distribuídos sob a licença MIT. O servidor compositor de referência Weston, que fornece código e exemplos de trabalho para o uso do Wayland em ambientes de desktop e soluções embarcadas, está sendo desenvolvido em um ciclo separado.
Mudanças principais no protocolo:
- Foi implementada a interface wl_fixes, que resolve problemas com outras interfaces de software dos protocolos básicos que não podem ser resolvidos pelas próprias capacidades dessas interfaces. Por exemplo, a solicitação "wl_fixes::destroy_registry" permite eliminar o objeto wl_registry, após o qual o cliente não poderá utilizá-lo, e o servidor compositor parará de transmitir eventos por meio dele.
- Na interface wl_keyboard::key, foi implementado um pseudo-estado "repeated", que indica que a tecla está pressionada. A tecla pode ser alterada para o estado "repeated" apenas após passar para o estado "pressed", mas antes de atingir o estado "released". Eventos relacionados a este novo estado podem ser gerados várias vezes enquanto a tecla estiver pressionada. Essa alteração permite que os servidores compostitores tratem pressionamentos repetidos ao manter a tecla como estados separados, em vez de apenas um fluxo de eventos repetidos de pressão ("pressed"), o que pode ser útil para a organização do trabalho com escritórios remotos.
- Foram adicionadas as funções wl_display_dispatch_queue_timeout() e wl_display_dispatch_timeout() para despachar eventos na fila considerando um tempo limite (as funções wl_display_dispatch e wl_display_dispatch_queue retornam 0 apenas na ausência de eventos, enquanto as variantes *_timeout também retornam ao ocorrer o tempo limite).
- Foram adicionadas as funções wl_shm_buffer_ref() e wl_shm_buffer_unref() para acesso à memória compartilhada associada ao buffer wl_shm_buffer, após sua eliminação (por exemplo, quando o cliente encerra). As funções permitem desvincular o buffer wl_shm_buffer do ciclo de vida do recurso principal wl_buffer, quando o servidor compositor precisa adiar a transição para um novo estado.
- Adicionadas as funções wl_proxy_get_interface() e wl_resource_get_interface(), que retornam wl_interface para o recurso especificado, o que é solicitado em bindings para linguagens com tipagem dinâmica.
- Adicionada a função wl_resource_post_error_vargs(), que atua como uma alternativa à função wl_resource_post_error() com a possibilidade de passar uma lista de argumentos para formatação de string (va_list).
Os eventos mais notáveis relacionados ao Wayland que ocorreram desde a publicação do último release:
- Melhoria no suporte ao Wayland em drivers proprietários da NVIDIA.
- O KDE planeja manter apenas o suporte ao Wayland. Separação do código kwin_x11 e kwin_wayland.
- Ubuntu e Kubuntu manterão apenas o suporte a sessões Wayland no GNOME e no KDE.
- No GDM, por padrão, foi mantido apenas o suporte ao Wayland.
- O GTK descontinuou o backend para X11.
- No Fedora 43, foi decidido remover do repositório os pacotes usados no GNOME para funcionar sobre o servidor X. Todos os usuários do GNOME com X11 serão forçados a mudar para uma sessão baseada em Wayland.
- No ambiente de desktop Budgie, será mantido apenas o suporte ao Wayland.
- No Xfce 4.20, foi implementado suporte parcial ao Wayland.
- MATE 1.28 com suporte experimental ao Wayland.
- Wayback — servidor compositor Wayland para executar desktops baseados em X11.
- A empresa Valve lançou o projeto Frog para acelerar a promoção de novos protocolos Wayland.
- A biblioteca de construção de interfaces gráficas Cosmoe, que utiliza Wayland e API no estilo BeOS.
- Ativação padrão do driver Wayland no Wine.
- Transição do Raspberry Pi OS para o uso do Wayland.
- Lançamento do toolkit gráfico FLTK 1.4.0 com suporte ao Wayland.
- No conjunto Wayland-Protocols, foi adicionada uma fase adicional de promoção de protocolos — "experimental", destinada a reduzir a barreira na integração de protocolos, acelerar a entrega de protocolos para desenvolvedores e estimular a implementação precoce em projetos existentes.
- A AMD está desenvolvendo seu próprio servidor compositor ACS, que utiliza Wayland.
- Sete lançamentos alpha do ambiente de desktop COSMIC.
- Atualização dos servidores compositores: Weston 14.0, Niri 25.05, Wayland Maker 0.5, miracle-wm 0.5, Hyprland 0.49, labwc 0.8.3, Cage 0.2, Wayfire 0.9, Sway 1.11.
Extensões de protocolos adicionadas no último ano, complementando o protocolo base Wayland e fornecidas em um conjunto separado Wayland-Protocols:
- color-management — recursos para gerenciamento de cores e suporte a faixa dinâmica extendida de brilho (HDR, High Dynamic Range).
- color-representation-v1 — definição da representação de cores da superfície Wayland.
- xdg-toplevel-tag — permite que clientes Wayland associem tags a superfícies de nível superior, que o servidor compositor pode usar para identificar janelas após a reinicialização do aplicativo.
- ext-background-effect — aplicação de efeitos às partes semitransparentes da superfície Wayland, como desfoque de fundo.
- pointer-warp — permite que o aplicativo mova instantaneamente o ponteiro para uma posição especificada.
- xx-session-management — restauração do estado das janelas para sessões interrompidas (por exemplo, após a falha do gerenciador de composição).
- xx-input-method — desenvolvimento de um novo protocolo para utilização de métodos de entrada de texto. ext-data-control — permite que clientes privilegiados gerenciem o processamento de dados, por exemplo, para implementar gerenciadores de área de transferência.
- ext-workspace — implementa o conceito para áreas de trabalho virtuais e oferece eventos com informações sobre o estado das áreas de trabalho, além de possibilidades para ativar e desativar áreas de trabalho.
- xdg-system-bell — permite emitir um sinal de sistema que pode ser utilizado, por exemplo, como aviso em emuladores de terminal.
- xdg-toplevel-icon — para vincular um ícone a uma janela de nível superior.
- ext-image-capture-source e ext-image-copy-capture — captura de conteúdo exibido na tela.
- fifo — implementa um mecanismo FIFO (primeiro a entrar — primeiro a sair) para o processamento de filas de atualização de conteúdo da superfície exibida.
- commit-timing — permite vincular uma restrição de tempo ao conteúdo da superfície (o servidor compositor deve exibir a alteração do conteúdo o mais próximo possível do tempo especificado, mas não antes).
Lembramos que o Wayland é um protocolo de interação entre o servidor compositor e os aplicativos que trabalham com ele. Os clientes cuidam da renderização de suas janelas em um buffer separado, enviando informações sobre atualizações ao servidor compositor, que combina o conteúdo dos buffers de aplicações individuais para formar a saída final, levando em consideração nuances como sobreposição de janelas e transparência. Em outras palavras, o servidor compositor não fornece uma API para renderizar elementos individuais, mas trabalha apenas com janelas já formadas, o que elimina a necessidade de dupla bufferização ao usar bibliotecas de alto nível como GTK e Qt, que assumem o trabalho de compor o conteúdo das janelas.
Wayland resolve muitos problemas de segurança do X11, pois, ao contrário deste, isola a entrada e saída para cada janela, não permite que um cliente acesse o conteúdo de janelas de outros clientes e também impede a interceptação de eventos de entrada relacionados a outras janelas. O suporte para operação direta com Wayland foi implementado para a maioria das bibliotecas gráficas utilizadas no Linux, incluindo GTK, Qt, SDL, FLTK, wxWidgets, Clutter e EFL (Enlightenment Foundation Library).
A interação com o hardware em Wayland/Weston, como inicialização, troca de modos de vídeo (drm modesetting) e gerenciamento de memória (GEM para i915 e TTM para radeon e nouveau) das placas gráficas, pode ser feita diretamente através de um módulo que opera no nível do kernel, permitindo evitar a necessidade de privilégios de superusuário. Para garantir a execução de aplicativos X11 comuns em um ambiente baseado em Wayland, é utilizado o componente DDX XWayland (X Dependente de Dispositivo), semelhante em estrutura ao Xwin e Xquartz para plataformas Win32 e macOS.


Fonte: opennet.ru
