Foi lançado o pacote wayland-protocols 1.48, que contém um conjunto de protocolos e extensões que complementam o protocolo básico Wayland e fornecem as funcionalidades necessárias para a construção de servidores compostos e ambientes de usuário.
Na nova versão:
- Adicionado o protocolo xdg-session-management à categoria «staging», 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 servidor compositor ou aplicativo.
- Aumentadas as capacidades do protocolo text-input, permitindo que servidores compostos implementem métodos de entrada e enviem texto para aplicativos. Por exemplo, foi adicionado o flag no_emoji para entrada sem Emoji, implementado suporte a ações adicionais além da inserção de texto, adicionado o flag language para passar informações sobre o idioma, foram adicionadas solicitações para mostrar e ocultar o painel de entrada, e o flag preedit_hint para ajustar o estilo de pré-editação.
- Adicionado o protocolo experimental xx-cutouts para obter informações sobre recortes na tela (por exemplo, áreas sob a câmera frontal em uma tela de smartphone).
- Adicionado o protocolo experimental 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 a disposição lógica das janelas, onde cada janela é posicionada em relação a outra.
- Adicionado o protocolo experimental xx-keyboard-filter para interceptar eventos de teclado selecionados pelo cliente, modificar eventos de entrada ou bloquear a transmissão de certos eventos para a superfície Wayland que tem o foco de entrada.
Todos os protocolos passam por fases de desenvolvimento, teste e estabilização de maneira sequencial. Após a conclusão da fase de desenvolvimento (categoria 'unstable'), o protocolo é movido para a ramificação 'staging' e é oficialmente incluído no conjunto wayland-protocols, e depois de concluídos os testes, é transferido para a categoria estável. Protocolos da categoria 'staging' já podem ser utilizados em compósitos servidores e clientes onde a funcionalidade associada é necessária. Ao contrário da categoria 'unstable', na 'staging' não são permitidas alterações que quebrem a compatibilidade, mas, caso sejam detectados problemas e imperfeições durante os testes, não se descarta a possibilidade de substituição por uma nova versão significativa do protocolo ou outra extensão do Wayland.
Para acelerar a entrega dos protocolos aos desenvolvedores e estimular a implementação precoce dos protocolos em projetos existentes, a partir da versão anterior foi adicionada uma fase 'experimental', na qual são permitidas alterações que quebrem a compatibilidade e a adição de protocolos 'brutos', que podem ser progressivamente refinados. Se a inclusão de um protocolo na fase 'staging' requer a formação de uma equipe de suporte e a obtenção de um certo número de confirmações (ACK) dos revisores, a inclusão na 'experimental' apenas necessita da ausência de objeções (NACK) durante um período de revisão de duas semanas.
Atualmente, o conjunto de wayland-protocols inclui os seguintes protocolos estáveis, que garantem a compatibilidade retroativa:
- viewporter — permite que o cliente execute ações de escalonamento e corte das bordas da superfície do lado servidor.
- "presentation-time" — fornece a exibição de vídeo.
- «xdg-shell» — interface para criar e interagir com superfícies como janelas, permitindo movê-las na tela, minimizar, maximizar, redimensionar, etc.
- «linux-dmabuf» — fornece recursos para criar wl_buffers com base em DMA-BUF.
- "tablet" — organização da entrada de dispositivos gráficos.
Protocolos testados na ramificação «staging»:
- drm-lease — fornece os recursos necessários para formar uma imagem estereoscópica com buffers diferentes para o olho esquerdo e o direito ao exibir em headsets de realidade virtual.
- «ext-session-lock» — define os meios para bloquear a sessão, por exemplo, durante a execução do protetor de tela ou a exibição de um diálogo de autenticação.
- «single-pixel-buffer» — permite criar buffers de um único pixel, incluindo quatro valores de 32 bits RGBA.
- «xdg-activation» — permite transferir o foco entre diferentes superfícies de primeiro nível (por exemplo, através do xdg-activation, um aplicativo pode mudar o foco para outro).
- content-type — permite que os clientes transmitam ao compositor servidor informações sobre o conteúdo exibido, que podem ser usadas para otimizar o comportamento levando em conta o conteúdo, como a definição de propriedades DRM específicas, como 'tipo de conteúdo'. O suporte foi declarado para os seguintes tipos de conteúdo: none (sem informações sobre o tipo de dado), photo (exibição de fotos digitais, exigindo mínimo processamento), video (vídeo ou animação, requerendo sincronização mais precisa para evitar engasgos) e game (execução de jogos, requerendo saída com mínima latência).
- ext-idle-notify — permite que os servidores de composição enviem notificações de inatividade do usuário aos clientes, o que pode ser utilizado para ativar modos adicionais de economia de energia após um determinado tempo de inatividade.
- tearing-control — permite desativar a sincronização vertical (VSync) com um pulso de inibição de quadros em aplicativos em tela cheia, que é aplicado para prevenir o aparecimento de rasgos na exibição (tearing). Em aplicativos multimídia, o aparecimento de artefatos devido a rasgos é um efeito indesejado, mas em programas de jogos artefatos podem ser tolerados se a luta contra eles resultar em atrasos adicionais.
- ext-foreign-toplevel-list — obtenção de informações sobre superfícies localizadas no nível superior (toplevel), que permitem a fixação de janelas sobre outro conteúdo, por exemplo, para conectar painéis e alternadores de janelas personalizados.
- security-context — permite identificar clientes que utilizam isolamento sandbox. O cliente pode registrar uma nova conexão ao servidor compositor baseado em Wayland e anexar a ela um contexto de segurança, após o qual, de acordo com o contexto de segurança especificado, o gerenciador de composição limitará as capacidades disponíveis para a conexão estabelecida.
- cursor-shape — um método alternativo de configuração da aparência do cursor, baseado na transmissão de uma série de imagens do cursor em vez de vincular a uma superfície (wl_surface).
- «ext-transient-seat» — destinado a criar sessões temporárias independentes (seats) projetadas para uso com dispositivos de entrada virtuais. Por exemplo, ao implementar a capacidade de conexão a uma área de trabalho remota, o protocolo permite criar uma sessão separada para cada usuário com um teclado e mouse virtuais.
- «xdg-toplevel-drag» expande o mecanismo de «drag & drop» com a capacidade de anexar janelas de topo à operação de movimentação, o que pode ser usado, por exemplo, para organizar o arraste de barras de ferramentas ou guias de navegador. O novo protocolo permite criar partes destacáveis da janela, que ao serem arrastadas para fora dessa janela tornam-se novas janelas e podem se mover sobre janelas existentes antes de serem reconectadas.
- «xdg-dialog» permite atribuir a superfícies de topo características específicas para janelas de diálogo, por exemplo, é possível criar diálogos modais que bloqueiam a interação do usuário com o restante da interface.
- «linux-drm-syncobj» — fornece ferramentas para sincronização explícita de buffers utilizando objetos de sincronização DRM (Direct Rendering Manager). Espera-se que, no contexto de sincronização durante a renderização em buffer, o protocolo proposto melhore o desempenho com drivers baseados em APIs gráficas Vulkan e OpenGL (a implementação é baseada em manipuladores nos drivers). O novo protocolo permite garantir que a operação de renderização em buffer seja concluída antes que o compositor exiba esse buffer.
- alpha-modifier, permitindo que os clientes alterem o nível de transparência da superfície e realizem operações de transparência para o lado do servidor de composição, que por sua vez pode redirecionar essas operações KMS.
- xdg-toplevel-icon — associação de um ícone à janela de topo.
- ext-image-capture-source e ext-image-copy-capture — organização da captura de conteúdo exibido na tela.
- xdg-system-bell — permite a apresentação de um sinal de sistema, que pode ser utilizado, por exemplo, como um aviso em emuladores de terminal. A forma de apresentação do sinal é determinada pelo gerenciador de composição, podendo ser não apenas um som, mas também um feedback visual.
- fifo — implementa um mecanismo FIFO (primeiro a entrar, primeiro a sair) para o processamento da fila de atualização do conteúdo da superfície exibida. Do ponto de vista prático, o protocolo permite utilizar a espera pela conclusão da varredura vertical (vblank) ao invés de chamadas de retorno sempre que um novo quadro estiver pronto para ser exibido, resolvendo assim o problema de alta carga na GPU ao usar VSync.
- 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).
- 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 para áreas de trabalho virtuais e oferece eventos com informações sobre o estado das áreas de trabalho, bem como recursos para ativação e desativação de áreas de trabalho. O protocolo pode ser utilizado para criar painéis e indicadores que exibem a lista de áreas de trabalho virtuais disponíveis e permitem alternar entre elas.
- color-management — fornece funcionalidades para gerenciamento de cores e suporte a larguras dinâmicas estendidas (HDR, High Dynamic Range). Com a extensão adicionada, os aplicativos clientes podem obter informações sobre as propriedades relacionadas à reprodução de cores dos dispositivos de saída e enviar ao servidor compositor dados sobre as propriedades de reprodução de cores de seu próprio conteúdo. No compositor, servidor essas informações podem ser usadas para gerenciamento automático de cores ao exibir conteúdo em vários dispositivos de saída, por exemplo, para converter o conteúdo em uma apresentação adequada para exibição em monitores HDR. Perfis ICC são usados para descrever os espaços de cor.
- xdg-toplevel-tag — permite que clientes Wayland vinculem tags a superfícies de nível superior, que o servidor compositor pode usar para identificar janelas após a reinicialização do aplicativo (por exemplo, um aplicativo pode definir tags como "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 a reinicialização, bem como para estabelecer regras especiais para tipos específicos de janelas.
- color-representation — definição da representação de cor da superfície Wayland. Os clientes Wayland podem transmitir metadados necessários para determinar a transparência, modelo de cor, subamostragem e faixa de quantização, aplicáveis ao converter o buffer de dados correspondente ao modelo de cor YCbCr em uma representação RGB.
- 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.
Protocolos em desenvolvimento no ramo "experimental":
- 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 — permite que os aplicativos implementem métodos de entrada de texto para compostos servidores e formem o texto inserido, o que pode ser aplicado, por exemplo, para criação de teclados virtuais e camadas IME (Editor de Métodos de Entrada) para o processamento de entradas.
- xx-text-input — permite que servidores compostos implementem métodos de entrada e enviem texto para aplicativos. O protocolo padroniza a interação entre o composto servidor e os aplicativos, permitindo gerenciar funcionalidades como a transmissão de texto inserido, tratamento de eventos de mudança de foco de entrada e consideração das especificidades dos campos de entrada (idioma, seleção de texto, tipo de conteúdo).
Protocolos em desenvolvimento na ramificação «unstable»:
- «fullscreen-shell» — gerenciamento de operação em modo de tela cheia.
- «input-method» — processamento de métodos de entrada.
- «idle-inhibit» — bloqueio do início do protetor de tela.
- «input-timestamps» — carimbos de tempo para eventos de entrada.
- «keyboard-shortcuts-inhibit» — gerenciamento de combinações de teclas e atalhos.
- «linux-explicit-synchronization» — mecanismo de sincronização de buffers específico para Linux atrelado à superfície.
- «pointer-gestures» — controle a partir de telas sensíveis ao toque.
- «pointer constraints» — restrições de ponteiro (bloqueio).
- «primary-selection» — semelhante ao X11, fornece o funcionamento do buffer de troca primário (primary selection), cuja inserção de informação geralmente é feita pelo botão do meio do mouse.
- «relative pointer events» — eventos de ponteiro relativos.
- «text-input» — organização da entrada de texto.
- «xdg-foreign» — interface de interação com superfícies de clientes «vizinhos».
- «xdg-decoration» — renderização de decorações de janelas do lado do servidor.
- «xdg-output» — informações adicionais sobre a saída de vídeo (usada para escalonamento fracionário).
- «xwayland-keyboard-grab» — captura de entrada em aplicativos XWayland.
Fonte: opennet.ru
