Após quatro meses de desenvolvimento, foi apresentado o lançamento estável do protocolo, mecanismo de comunicação entre processos e bibliotecas Wayland 1.26. A ramificação 1.26 é retrocompatível em nível de API e ABI com lançamentos 1.x e contém principalmente correções de erros e atualizações menores do protocolo. Os desenvolvimentos do projeto são distribuídos sob a licença MIT. O compositor de referência servidor Weston, que fornece código e exemplos práticos para uso do Wayland em ambientes de desktop e soluções embarcadas, está em desenvolvimento dentro de um ciclo de desenvolvimento separado.
Mudanças principais no protocolo:
- Adicionado o evento wl_pointer.warp, através do qual é possível receber notificações sobre uma nova posição do ponteiro sem o processamento do evento wl_pointer.motion, gerado pela atividade do usuário.
- Adicionada a solicitação wl_fixes.ack_global_remove, destinada ao envio de confirmação ao gestor de composição de que o cliente parou de processar o evento, a fim de evitar condições de corrida ao remover eventos globais. Após receber a confirmação de todos os clientes, o gestor de composição pode remover o manipulador de evento associado do seu lado.
- Adicionada a função wl_display_remove_socket_fd() para remover soquetes adicionados anteriormente através da chamada wl_display_add_socket_fd().
- No modo de depuração WAYLAND_DEBUG, agora é fornecida uma saída de log com o tempo no formato "HH:MM:ss.xxxxxx", facilitando a análise e comparação de logs.
Extensões de protocolo adicionadas após o último lançamento do Wayland, que complementam o protocolo base do Wayland e são fornecidas em um conjunto separado de Wayland-Protocols:
- xx-fractional-scale — para escalonamento do sistema de coordenadas lógicas, cujos valores são definidos como números inteiros, para aumentar a precisão de posicionamento e aumentar a resolução das coordenadas lógicas até pixels individuais. Este recurso resolve o problema da resolução limitada do sistema de coordenadas lógicas, que não é suficiente para posicionamento a nível de pixels individuais, necessário para a implementação completa do escalonamento fracionário.
- xx-cutouts — para obter informações sobre recortes na tela (por exemplo, áreas sob a câmera frontal na tela de um smartphone).
- xx-zones — para criar e adicionar janelas de nível superior em "zonas" — ambientes com seu próprio espaço de coordenadas. O protocolo permite organizar uma disposição lógica das janelas, na qual cada janela é posicionada em relação a outra janela.
- xx-keyboard-filter — para interceptar eventos de teclado selecionados pelo cliente, modificar eventos de entrada ou bloquear a transmissão de determinados eventos para a superfície Wayland, onde o foco de entrada está ativado.
- Na categoria "staging" foi adicionado o protocolo xdg-session-management, que oferece recursos para restaurar o estado e a posição das janelas de uma sessão interrompida em ambientes baseados no protocolo Wayland, por exemplo, após uma falha no compositor ou aplicativo. servidor ou aplicativo.
- No protocolo "linux-dmabuf" foi adicionada suporte a operações em sistemas com várias GPUs. Em tais sistemas, o cliente pode negociar com os compositores qual GPU deve ser utilizada. servidor qual GPU deve ser utilizada.
- No protocolo color-management-v1 foi adicionada suporte a metadados de imagens no formato BT.2100 para aplicação em compositores específicas que permiten a correta exibição de conteúdo HDR criado para Windows. servidor específicos que permitem corretamente exibir conteúdo HDR criado para Windows.
Os eventos mais notáveis relacionados ao Wayland que ocorreram desde a publicação da última versão:
- O Cinnamon implementou suporte completo ao Wayland.
- Na biblioteca ANGLE, utilizada no Chrome e Android, foi adicionada suporte ao Wayland.
- No KDE, ao usar o Wayland, foi implementado suporte à restauração de sessões e foi implementado o protocolo Wayland xx-fractional-scale-v2 para escalonamento fracionado.
- Foi criado um port driver Synaptics para ambientes baseados em Wayland.
- Iniciada a verificação da prontidão das plataformas VFX e animação para a substituição do X11 pelo Wayland.
- Começou os testes do servidor compositor Xfwl4 do projeto Xfce.
- Baseado no Wayfire e Libadwaita, foi recriada uma interface de usuário Unity.
- Atualizados os servidores compositores e ambientes de área de trabalho: COSMIC 1.3.0, Weston 16, Phosh 0.56, Nourish 1.0.0, miracle-wm 0.10, KDE Plasma 6.7, labwc 0.20, Sway 1.2, Wayland Maker 0.8, Hyprland 0.55, Niri 26.04, LXQt 2.4.0, Cage 0.3.
Lembramos que o Wayland é um protocolo de interação entre o servidor compositor e os aplicativos que operam com ele. Os clientes realizam a renderização de suas janelas em um buffer separado, transmitindo informações sobre atualizações para o compositor. servidor, que combina o conteúdo dos buffers de aplicativos individuais para formar a saída final, levando em conta 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 opera 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 lidam com a composição do conteúdo das janelas.
Wayland resolve muitos problemas de segurança do X11 no X.Org Server, pois, ao contrário deste último, isola a entrada e a saída para cada janela, não permitindo que um cliente acesse o conteúdo das janelas de outros clientes, além de impedir a captura de eventos de entrada relacionados a outras janelas (no XLibre XServer, a extensão do X11 Xnamespace é implementada, proporcionando isolamento de clientes por meio da divisão em níveis de nomes). O suporte para operação direta com Wayland foi implementado na maioria das bibliotecas gráficas utilizadas no Linux, incluindo GTK, Qt, SDL, FLTK, wxWidgets, Clutter e EFL (Biblioteca da Fundação Enlightenment).
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
