Após quase um ano de desenvolvimento, foi publicado o lançamento do gerenciador de composição Sway 1.12, construído utilizando o protocolo Wayland e compatível com o gerenciador de janelas em mosaico i3 e a barra i3bar. O código do projeto é escrito em C e distribuído sob a licença MIT. O projeto é voltado para uso em Linux e FreeBSD.
O Sway permite o uso de posicionamento lógico de janelas (o gerenciador de janelas escolhe dinamicamente a posição e o tamanho da janela considerando outras janelas abertas e evitando sobreposição), em vez do tradicional posicionamento espacial (o usuário escolhe um lugar e tamanho arbitrários para a janela, com possível sobreposição). As janelas são dispostas formando uma grade, utilizando de forma otimizada o espaço na tela e permitindo manipular janelas rapidamente apenas com o teclado. A compatibilidade com o i3 é garantida a nível de comandos, arquivos de configuração e IPC, o que permite usar o Sway como um substituto transparente para o i3, utilizando Wayland em vez de X11.
Para configurar um ambiente de usuário completo, são oferecidos componentes auxiliares: swayidle (processo em segundo plano implementando um modo de espera), swaylock (protetor de tela), mako (gerenciador de notificações), grim (captura de screenshots), slurp (seleção de área na tela), wf-recorder (captura de vídeo), waybar (barra de aplicativos), virtboard (teclado na tela), wl-clipboard (manipulação da área de transferência), wallutils (gerenciamento de papéis de parede).
O Sway se desenvolve como um projeto modular, construído sobre a biblioteca wlroots, da qual todos os primitivas básicas para organizar o funcionamento do gerenciador de composição foram extraídas. A wlroots inclui backends para
abstrair o acesso à tela, dispositivos de entrada, renderização sem chamada direta ao OpenGL, interação com KMS/DRM, libinput, Wayland e X11 (fornecendo uma camada para executar aplicativos X11 na base de Xwayland). Além do Sway, a biblioteca wlroots é ativamente usada em outros projetos. Além do suporte a linguagens C/C++, são fornecidas interfaces para as linguagens Scheme, Common Lisp, Go, Haskell, OCaml, Zig, Python e Rust.
No novo lançamento:
- Adicionada a possibilidade de captura de janelas individuais.
- Implementado suporte para saída de brilho dinâmico estendido HDR10 usando renderização baseada na API Vulkan.
- Adicionado suporte para protocolos Wayland:
- color-management-v1 para gerenciamento de cores e suporte à faixa dinâmica expandida de brilho (HDR, High Dynamic Range).
- color-representation-v1 para definir a representação de cores da superfície Wayland.
- xdg-toplevel-tag-v1 para anexar tags pelos clientes Wayland a superfícies de nível superior que o compositor servidor pode usar para restaurar a posição, tamanho e propriedades das janelas após a reinicialização, bem como para definir regras especiais para tipos específicos de janelas.
- ext-workspace-v1 para criar painéis ou indicadores que exibem uma lista de disponíveis para áreas de trabalho virtuais e permitem a troca entre eles.
- wl_fixes para resolver problemas com outras interfaces de programação de protocolos básicos que não podem ser abordados pelas próprias capacidades dessas interfaces.
- Implementada a opção "—device-primaries", ao especificá-la, o perfil de cor é gerado com base nos dados fornecidos pelo monitor através do EDID.
- Adicionada a suporte para detectar a presença de um teclado utilizando a flag LIBINPUT_SWITCH_KEYPAD_SLIDE no libinput.
- O arquivo de configuração inclui mapeamentos de teclas multimídias especiais (pausar, continuar reprodução, próxima faixa, etc.) para controlar a reprodução de conteúdo multimídia utilizando a ferramenta playerctl.
- O perfil de cor de saída srgb foi alterado para usar uma função de transferência em partes (piece-wise) sRGB em vez de gamma 2.2 (para gamma 2.2 deve-se usar um perfil separado gamma22, que é aplicado por padrão).
- A inicialização em sistemas com GPUs não suportadas (por exemplo, ao usar drivers proprietários da NVIDIA) agora gera um aviso em vez de finalizar com erro. O aviso pode ser desativado com a flag "—unsupported-gpu" ou a variável de ambiente SWAY_UNSUPPORTED_GPU.
- Adicionada suporte oficial para o uso de gerenciadores de exibição para iniciar o Sway.
- Novos recursos da biblioteca wlroots 0.20 foram ativados. Entre as mudanças na nova versão do wlroots: Suporte para definição da representação de cores da superfície Wayland, gerenciamento de cores e uso de HDR por meio dos protocolos color-representation-v1 e color-management-v1. Suporte para os protocolos Wayland cursor-shape-v1 para personalizar a aparência do cursor,
ext-workspace-v1 para a utilização do conceito de desktops virtuais e xdg-toplevel-tag-v1 para a identificação de janelas/superfícies por meio da ligação de tags.

Fonte: opennet.ru
