O pacote wayland-protocols 1.46 foi lançado, contendo um conjunto de protocolos e extensões que complementam o protocolo Wayland básico e fornecem os recursos necessários para a construção de servidores compostos e ambientes de usuário.
Na nova versão:
- Foi adicionado um protocolo experimental, xx-input-method, que permite que aplicativos implementem métodos de entrada de texto para servidores compostos e gerem texto de entrada, o qual pode ser usado, por exemplo, para criar teclados virtuais e camadas IME (Editor de Método de Entrada) para processamento de entrada.
- O protocolo experimental xx-text-input foi adicionado, permitindo que servidores compostos implementem métodos de entrada e enviem texto para aplicativos. O protocolo padroniza as interações entre o servidor composto e os aplicativos e possibilita o controle de recursos como a transmissão de texto de entrada, o tratamento de eventos de foco de entrada e a consideração de especificidades do campo de entrada (idioma, seleção de texto, tipo de conteúdo).
- Os protocolos color-management-v1 e color-representation-v1 foram aprimorados, oferecendo recursos para gerenciamento de cores, suporte a HDR e definição da representação de cores de uma superfície Wayland.
Todos os protocolos passam sequencialmente pelas fases de 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”, em “staging” é proibido 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.
Para acelerar a entrega de protocolos aos desenvolvedores e incentivar a implementação antecipada de protocolos em projetos existentes, começando com a versão anterior, foi adicionada uma fase "experimental", que permite alterações que quebram a compatibilidade e a adição de protocolos "brutos" que podem ser gradualmente levados ao nível adequado. Embora um protocolo precise formar uma equipe de suporte e receber um certo número de confirmações (ACKs) dos revisores para entrar na fase de preparação, ele só precisa receber nenhuma objeção (NACKs) durante o período de revisão de duas semanas para entrar na fase experimental.
O conjunto wayland-protocols atualmente inclui os seguintes protocolos estáveis, que são compatíveis 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, permitindo movê-las pela tela, recolhê-las, expandi-las, redimensioná-las, etc.
- "linux-dmabuf" - fornece recursos para criar wl_buffers baseados 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).
- tipo de conteúdo - Permite que os clientes passem informações sobre o conteúdo que está sendo exibido para o servidor composto, que pode ser usado para otimizar o comportamento de reconhecimento de conteúdo, como definir propriedades DRM específicas, como "tipo de conteúdo". É declarado suporte para os seguintes tipos de conteúdo: nenhum (nenhuma informação sobre o tipo de dados), foto (saída de fotos digitais, exigindo processamento mínimo), vídeo (vídeo ou animação, sincronização mais precisa é necessária para evitar travamentos) e jogo (lançamento jogos, saída do atraso mínimo).
- 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 sincronização explícita de buffer usando objetos de sincronização DRM (Direct Rendering Manager). Supõe-se que, no contexto de sincronização ao renderizar para 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 permite garantir que uma operação de desenho em um buffer seja concluída antes que o gerenciador de composição exiba esse buffer.
- modificador alfa, que permite aos clientes alterar o nível de transparência da superfície e transferir operações para garantir transparência para o lado do servidor composto, que por sua vez pode redirecionar essas operações para o KMS.
- xdg-toplevel-icon - vincula o ícone à janela de nível superior.
- ext-image-capture-source e ext-image-copy-capture - organização da captura do conteúdo exibido na tela.
- xdg-system-bell - permite emitir um sinal do sistema, que pode ser usado, por exemplo, como um aviso em um emulador de terminal. A forma de saída do sinal é determinada a critério do gerenciador composto; pode ser não apenas uma resposta sonora, mas também visual.
- fifo - implementa um mecanismo FIFO (primeiro a entrar, primeiro a sair) para processar a fila de atualização de conteúdo da superfície exibida. Do lado prático, o protocolo permite que a saída use a espera pela conclusão da varredura vertical (vblank) em vez de usar chamadas de retorno cada vez que estiver pronto para exibir um novo quadro, o que resolve o problema de alta carga da GPU ao usar VSync.
- commit-timing - permite vincular um limite de tempo ao conteúdo da superfície (o servidor composto deve refletir a alteração do conteúdo, se possível, após o tempo especificado, mas não antes).
- ext-data-control - Permite que clientes privilegiados controlem o processamento de dados, por exemplo, para implementar gerenciadores de área de transferência.
- ext-workspace — implementa o conceito desktops virtuais e oferece eventos com informações sobre o estado das áreas de trabalho, bem como a possibilidade de ativar e desativar áreas de trabalho. O protocolo pode ser usado para criar painéis e indicadores que exibem uma lista de áreas de trabalho virtuais disponíveis e permitem alternar entre elas.
- gerenciamento de cores — fornece recursos para gerenciamento de cores e suporte para faixa dinâmica estendida de brilho (HDR, High Dynamic Range). Com a extensão adicionada, os aplicativos clientes podem obter informações sobre as propriedades relacionadas à cor dos dispositivos de saída e passar dados sobre as propriedades relacionadas à cor do seu próprio conteúdo para o servidor composto. Em um servidor composto, essas informações podem ser usadas para gerenciar automaticamente as cores ao exibir conteúdo em diferentes dispositivos de saída, por exemplo, para converter conteúdo em uma apresentação adequada para exibição em monitores HDR. Os perfis ICC são usados para descrever espaços de cores.
- xdg-toplevel-tag — Permite que clientes Wayland anexem tags a superfícies de nível superior que o servidor de composição pode usar para identificar janelas após o aplicativo ser reiniciado (por exemplo, um aplicativo pode definir tags "janela principal" e "configurações" para a janela principal e a janela de configurações). Essa identificação é útil para restaurar a posição, o tamanho e as propriedades das janelas após uma reinicialização e para definir regras especiais para tipos individuais de janelas.
- color-representation — define a representação de cores da superfície Wayland. Os clientes Wayland podem passar metadados necessários para definir transparência, modelo de cores, subamostragem e intervalo de quantização, e são usados na conversão de um buffer com dados correspondentes ao modelo de cores YCbCr para uma representação RGB.
- ext-background-effect - aplica efeitos a partes semitransparentes de uma superfície Wayland, como desfoque de fundo.
- pointer-warp - Permite que um aplicativo mova instantaneamente o ponteiro para uma posição especificada.
Protocolos em desenvolvimento no ramo experimental:
- xx-session-management - restaura o estado das janelas para sessões interrompidas (por exemplo, após uma falha do gerenciador composto).
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
