O pacote wayland-protocols 1.35 foi lançado, contendo um conjunto de protocolos e extensões que complementam os recursos do protocolo Wayland básico e fornecem os recursos necessários para a construção de servidores compostos e ambientes de usuário.
Todos os protocolos passam sequencialmente por três fases – desenvolvimento, teste e estabilização. Após completar a fase de desenvolvimento (categoria “instável”), o protocolo é colocado no ramo “staging” e oficialmente incluído no conjunto de protocolos wayland e, após a conclusão dos testes, é movido para a categoria estável. Os protocolos da categoria “staging” já podem ser usados em servidores compostos e clientes onde a funcionalidade relacionada é necessária. Ao contrário da categoria “instável”, “staging” proíbe fazer alterações que violem a compatibilidade, mas se forem identificados problemas e deficiências durante os testes, a substituição por uma nova versão significativa do protocolo ou outra extensão Wayland não está excluída.
Na nova versão:
- O protocolo tablet-v2, que fornece ferramentas para organizar entradas de tablets gráficos, foi transferido para a categoria estável.
- Um novo protocolo modificador alfa foi adicionado à categoria “staging”, permitindo que os clientes alterem o nível de transparência da superfície e terceirizem as operações de transparência para o servidor composto, que por sua vez pode encaminhar essas operações para o KMS.
- Uma recomendação foi adicionada ao protocolo xdg-shell para não exibir decoração fora dos limites geométricos da janela ao usar um layout de janela lado a lado.
Atualmente, os protocolos wayland incluem os seguintes protocolos estáveis, que fornecem compatibilidade com versões anteriores:
- "viewporter" - permite que o cliente execute ações de dimensionamento e corte de bordas de superfície no lado do servidor.
- "tempo de apresentação" - fornece exibição de vídeo.
- “xdg-shell” é uma interface para criar e interagir com superfícies como janelas, que permite movê-las pela tela, minimizar, expandir, redimensionar, etc.
- “linux-dmabuf” - permite o compartilhamento de diversas placas de vídeo usando a tecnologia DMA-BUF (permite criar um wl_buffer baseado em DMA-BUF).
- "tablet" - organização de entradas de tablets gráficos.
Protocolos testados no ramo “staging”:
- drm-lease - fornece os recursos necessários para gerar uma imagem estéreo com buffers diferentes para os olhos esquerdo e direito ao enviar para fones de ouvido de realidade virtual.
- "ext-session-lock" - define um meio de bloquear a sessão, por exemplo, enquanto a proteção de tela está em execução ou a caixa de diálogo de autenticação é exibida.
- "buffer de pixel único" - permite criar buffers de pixel único que incluem quatro valores RGBA de 32 bits.
- “ativação xdg” - permite transferir o foco entre diferentes superfícies de primeiro nível (por exemplo, usando a ativação xdg, um aplicativo pode mudar o foco para outro).
- content-type - permite que os clientes passem dados compostos servidor Informações sobre o conteúdo exibido que podem ser usadas para otimizar o comportamento sensível ao conteúdo, como definir propriedades DRM específicas, como "tipo de conteúdo". O suporte para os seguintes tipos de conteúdo foi declarado: nenhum (sem informações de tipo de dados), foto (saída de foto digital que requer processamento mínimo), vídeo (vídeo ou animação, que requer sincronização mais precisa para evitar travamentos) e jogo (inicialização de jogo, que requer saída com latência mínima).
- ext-idle-notify - Permite que servidores compostos enviem notificações aos clientes sobre a inatividade do usuário, que podem ser usadas para ativar modos adicionais de economia de energia após um certo tempo de inatividade.
- tearing-control - permite desabilitar a sincronização vertical (VSync) com um pulso de amortecimento vertical em aplicativos de tela cheia, usado para proteger contra tearing na saída. Em aplicações multimídia, os artefatos devido ao tearing são um efeito indesejável, mas em programas de jogos, os artefatos podem ser tolerados se lidar com eles causar atrasos adicionais.
- ext-foreign-toplevel-list - Recupera informações sobre superfícies colocadas no nível superior, que permitem organizar janelas para encaixar em cima de outro conteúdo, por exemplo, para anexar seus próprios painéis e interruptores de janela.
- contexto de segurança - permite identificar clientes usando isolamento de sandbox. Um cliente pode registrar uma nova conexão com um servidor composto baseado em Wayland e anexar um contexto de segurança a ele, após o qual o gerenciador composto limitará os recursos disponíveis para a conexão estabelecida com base no contexto de segurança especificado.
- cursor-shape é uma forma alternativa de personalizar a aparência do cursor, com base na passagem de uma série de imagens do cursor em vez de se ajustar a uma superfície (wl_surface).
- "ext-transient-seat" foi projetado para criar sessões independentes temporárias (assentos) destinadas ao uso com dispositivos de entrada virtuais. Por exemplo, ao implementar a capacidade de se conectar a área de trabalho remota O protocolo permite a criação de uma sessão separada com teclado e mouse virtuais para cada usuário.
- "xdg-toplevel-drag" - estende o mecanismo "arrastar e soltar" com a capacidade de anexar janelas de nível superior a uma operação de arrastar, que pode ser usada, por exemplo, para organizar o arrastamento de barras de ferramentas ou guias do navegador com o mouse. O novo protocolo permite criar partes destacáveis de uma janela que, quando arrastadas dessa janela, tornam-se novas janelas e podem ser movidas para cima da janela existente antes de serem reanexadas.
- "xdg-dialog" - permite atribuir atributos específicos de diálogo a superfícies de nível superior, por exemplo, você pode criar diálogos modais que bloqueiam a interação do usuário com o resto da interface.
- "linux-drm-syncobj" - Fornece ferramentas para sincronizar buffers explicitamente usando objetos de sincronização DRM (Direct Rendering Manager). Supõe-se que no contexto da sincronização ao desenhar em um buffer, o protocolo proposto melhorará o trabalho com drivers baseados nas APIs gráficas Vulkan e OpenGL (a implementação é baseada em manipuladores nos drivers). O novo protocolo torna possível garantir que uma operação de renderização para um buffer seja concluída antes que o gerenciador composto renderize o buffer.
Protocolos sendo desenvolvidos no ramo “instável”:
- “fullscreen-shell” - controle de trabalho em modo de tela cheia.
- "input-method" - processando métodos de entrada.
- “idle-inhibit” - bloqueando o lançamento do protetor de tela (protetor de tela).
- "input-timestamps" - carimbos de data e hora para eventos de entrada.
- "keyboard-shortcuts-inhibit" - controla a anexação de atalhos de teclado e teclas de atalho.
- "linux-explicit-synchronization" é específico para Linux Mecanismo para sincronizar os tampões em relação à superfície.
- “gestos de ponteiro” - controle a partir de telas sensíveis ao toque.
- “restrições de ponteiro” - restrições de ponteiro (bloqueio).
- “seleção primária” - por analogia com o X11, garante o funcionamento da área de transferência primária (seleção primária), cujas informações geralmente são inseridas com o botão do meio do mouse.
- “eventos de ponteiro relativo” - eventos de ponteiro relativo.
- “entrada de texto” - organização da entrada de texto.
- “xdg-foreign” é uma interface para interagir com as superfícies do cliente “vizinho”.
- "xdg-decoration" - renderizando decorações de janelas no lado do servidor.
- "xdg-output" - informações adicionais sobre a saída de vídeo (usadas para escala fracionária).
- "xwayland-keyboard-grab" - captura entrada em aplicativos XWayland.
Fonte: opennet.ru
