Após quatro meses de desenvolvimento, foi lançada a versão estável do protocolo Wayland 1.26, do mecanismo de comunicação entre processos e das bibliotecas. A versão 1.26 é retrocompatível em nível de API e ABI com as versões 1.x e contém principalmente correções de bugs e pequenas atualizações de protocolo. O trabalho do projeto é distribuído sob a licença MIT. [Referência composta] servidor O Weston, que fornece código e exemplos práticos para usar o Wayland em ambientes desktop e embarcados, é desenvolvido em um ciclo de desenvolvimento separado.
Principais mudanças no protocolo:
- Adicionado o evento wl_pointer.warp, que permite receber notificações sobre a nova posição do ponteiro sem lidar com o evento wl_pointer.motion gerado pela atividade do usuário.
- Adicionada a solicitação wl_fixes.ack_global_remove, projetada para enviar uma confirmação ao gerenciador de componentes de que o cliente parou de processar o evento, evitando condições de corrida ao remover eventos globais. Após receber a confirmação de todos os clientes, o gerenciador de componentes pode remover o manipulador associado ao evento em seu lado.
- Adicionada a função wl_display_remove_socket_fd() para remover sockets adicionados anteriormente através da chamada wl_display_add_socket_fd().
- No modo de depuração WAYLAND_DEBUG, o tempo é registrado no formato "HH:MM:ss.xxxxxx", simplificando a análise e comparação dos registros.
Extensões de protocolo adicionadas desde a versão anterior do Wayland que complementam o protocolo Wayland principal e são fornecidas em um conjunto separado de protocolos Wayland:
- xx-fractional-scale — para dimensionar um sistema de coordenadas lógicas, no qual os valores são especificados como inteiros, a fim de melhorar a precisão do posicionamento e aumentar a resolução das coordenadas lógicas até pixels individuais. Esse recurso resolve o problema da resolução limitada do sistema de coordenadas lógicas, que é insuficiente para o posicionamento no nível de pixel individual, necessário para a implementação completa do dimensionamento fracionário.
- xx-cutouts — para obter informações sobre recortes na tela (por exemplo, a área abaixo da câmera frontal na tela do smartphone).
- xx-zones — para criar e adicionar janelas de nível superior a "zonas" — ambientes com seu próprio espaço de coordenadas. O protocolo permite um arranjo lógico de janelas, no qual cada janela é posicionada em relação a todas as outras.
- xx-keyboard-filter — para que o cliente intercepte eventos de teclado selecionados, modifique eventos de entrada ou bloqueie determinados eventos de serem passados para a superfície Wayland em foco.
- O protocolo xdg-session-management foi adicionado à categoria de staging, proporcionando a capacidade de restaurar o estado e a posição das janelas a partir de uma sessão interrompida em ambientes baseados no protocolo Wayland, por exemplo, após uma falha composta. servidor ou aplicativos.
- O protocolo "linux-dmabuf" foi atualizado para suportar sistemas com múltiplas GPUs. Nesses sistemas, o cliente pode negociar o protocolo composto. servidor Qual placa de vídeo (GPU) deve ser usada?
- O protocolo color-management-v1 foi atualizado para suportar metadados de imagem BT.2100 para uso em composições. servidor manipuladores específicos que permitem a exibição correta de conteúdo HDR criado para Windows.
Eventos notáveis relacionados a Wayland desde a publicação da última edição:
- Cinnamon apoia totalmente Wayland.
- Na biblioteca ANGLE usada no Chrome e AndroidAdicionado suporte para Wayland.
- O KDE, ao usar o Wayland, implementa suporte para restauração de sessão e o protocolo Wayland xx-fractional-scale-v2 para escalonamento fracionário.
- Foi criada uma versão do driver Synaptics X.Org para ambientes baseados em Wayland.
- Foi iniciada uma verificação de prontidão para que as plataformas de efeitos visuais e animação substituam o X11 pelo Wayland.
- Os testes do servidor composto Xfwl4 do projeto Xfce foram iniciados.
- A interface de usuário do Unity foi recriada usando Wayfire e Libadwaita.
- Servidores compostos e ambientes de desktop atualizados: 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.
Lembremos que o Wayland é um protocolo para interação entre um servidor de composição e os aplicativos que nele são executados. Os clientes renderizam suas janelas independentemente em um buffer separado, passando informações de atualização para o servidor de composição. servidor, que combina o conteúdo dos buffers individuais da aplicação para gerar a saída final, levando em consideração nuances como sobreposição e transparência das janelas. Em outras palavras, o servidor composto não fornece uma API para renderizar elementos individuais, mas opera apenas em janelas pré-renderizadas, eliminando o buffer duplo ao usar bibliotecas de alto nível como GTK e Qt, que cuidam da composição do conteúdo das janelas.
O Wayland resolve muitos dos problemas de segurança do X11 no X.Org Server, pois, ao contrário deste, isola a entrada e a saída de cada janela, não permite que um cliente acesse o conteúdo das janelas de outros clientes e não permite a interceptação de eventos de entrada relacionados a outras janelas (o XLibre XServer implementa a extensão Xnamespace do X11, que fornece isolamento de cliente por meio da separação no nível do namespace). O suporte para trabalho direto com o Wayland está implementado para a maioria das plataformas utilizadas em Linux Bibliotecas gráficas, 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 modo de vídeo (configuração de modo DRM) e gerenciamento de memória (GEM para i915 e TTM para Radeon e Nouveau) para placas gráficas, pode ser realizada diretamente por meio de um módulo em nível de kernel, eliminando a necessidade de privilégios de superusuário. Para garantir a execução de aplicativos X11 padrão em um ambiente baseado em Wayland, o componente DDX XWayland (Device-Dependent X) é utilizado, que é semelhante em operação ao Xwin e Xquartz para Win32 e 365. macOS.
Fonte: opennet.ru
