Após 7 meses de desenvolvimento, foi lançado o Sway 1.11, um gerenciador de composição 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 dispor janelas na tela de forma lógica, em vez de espacial. As janelas são organizadas em uma grade que utiliza de forma otimizada o espaço da tela, permitindo manipulação rápida apenas com o teclado. A compatibilidade com o i3 é garantida no nível de comandos, arquivos de configuração e IPC, permitindo que o Sway funcione como um substituto transparente do i3, utilizando o Wayland em vez do X11.
Para a configuração de um ambiente de usuário completo, são oferecidos componentes auxiliares: swayidle (processo em segundo plano com implementação de modo de espera), swaylock (protetor de tela), mako (gerenciador de notificações), grim (criação de capturas de tela), slurp (seleção de área na tela), wf-recorder (captura de vídeo), waybar (barra de aplicativos), virtboard (teclado na tela), wl-clipboard (gerenciamento da área de transferência), wallutils (gerenciamento de papéis de parede).
O Sway é desenvolvido como um projeto modular, construído sobre a biblioteca wlroots, que abstrai todos os primitivos básicos para a operação do gerenciador de composição. A wlroots inclui backends para abstrair o acesso ao vídeo, dispositivos de entrada, realização de renderização sem acesso direto ao OpenGL, interação com KMS/DRM, libinput, Wayland e X11 (com uma camada disponível para rodar aplicativos X11 em cima do Xwayland). Além do Sway, a biblioteca wlroots é amplamente utilizada em outros projetos. Além do suporte para C/C++, são fornecidas ligações para linguagens como Scheme, Common Lisp, Go, Haskell, OCaml, Zig, Python e Rust.
No novo lançamento:
- Foi adicionada a suporte ao protocolo Wayland linux-drm-syncobj-v1 para sincronização explícita de buffers, garantindo que a operação de renderização em um buffer seja concluída antes que o gerenciador de composição exiba esse buffer.
- Foi adicionada a suporte ao protocolo Wayland alpha-modifier-v1, que permite que os clientes alterem o nível de transparência da superfície e realizem operações de transparência no lado do gerenciador de composição. servidor, que por sua vez pode redirecionar essas operações para o módulo KMS que opera no nível do kernel.
- Foi adicionada a suporte aos protocolos Wayland ext-image-capture-source e ext-image-copy-capture para capturar conteúdo exibido na tela.
- Foi adicionada a suporte ao protocolo Wayland ext-data-control, que permite que clientes privilegiados gerenciem o processamento de dados, por exemplo, para a implementação de gerenciadores de área de transferência.
- Foi integrada ao mecanismo de comunicação entre processos (IPC) a suporte a metadados para contextos de segurança, implementada através do protocolo Wayland security-context-v1.
- A lógica de configuração da saída foi aprimorada para um retorno mais qualificado e rápido em outros dispositivos.
- Adicionada a suportar teclas de controle do ponteiro.
- Combinações de teclas para chamar as utilidades pactl, brightnessctl e grim foram adicionadas ao arquivo de configuração padrão.
- O menu sugerido por padrão foi alterado para utilizar a utilidade wmenu-run e não depende mais do script dmenu_path.
- Novas funcionalidades da biblioteca wlroots 0.19 foram ativadas. Entre as mudanças no wlroots:
- Protocolos Wayland implementados:
- color-management-v1 (para suporte HDR10);
- ext-image-capture-source-v1 e ext-image-copy-capture-v1 (para captura de conteúdo da tela);
- ext-data-control-v1 (para controle do clipboard);
- xdg-toplevel-icon-v1 (para vinculação de ícones personalizados);
- xdg-dialog-v1 (para criação de janelas de diálogo avançadas);
- xdg-system-bell-v1 (para emissão de sinal);
- ext-idle-notify-v1 (para monitoramento de atividade);
- presentation-time (para ajuste dinâmico da taxa de atualização do monitor);
- wlr-layer-shell-v1.5 (para definição de limites de zonas exclusivas na tela).
- Nos backends e motores de renderização, foi implementado o suporte à sincronização explícita de buffers usando objetos de sincronização DRM (Direct Rendering Manager).
- Adicionada a suporte Multi-GPU para dispositivos de exibição, como adaptadores USB GUD.
- A implementação de saída direta (direct scanout) nos backends agora suporta o corte e a escalabilidade dos buffers.
- Operações com o gráfico de cena foram otimizadas.
- Protocolos Wayland implementados:

Fonte: opennet.ru
