Después de casi un año de desarrollo, se ha publicado la versión del gestor de composición Sway 1.12, construido utilizando el protocolo Wayland y compatible con el gestor de ventanas en mosaico i3 y la barra i3bar. El código del proyecto está escrito en C y se distribuye bajo la licencia MIT. El proyecto está orientado para su uso en Linux y FreeBSD.
Sway permite el uso de la colocación lógica de ventanas (el gestor de ventanas selecciona dinámicamente la posición y tamaño de la ventana, teniendo en cuenta otras ventanas abiertas y evitando la superposición de las mismas), en lugar de la colocación espacial tradicional (el usuario selecciona un lugar y tamaño arbitrario para la ventana, con posible superposición). Las ventanas se disponen formando una cuadrícula que utiliza de manera óptima el espacio de la pantalla y permite manipular ventanas rápidamente solo con el teclado. La compatibilidad con i3 se asegura a nivel de comandos, archivos de configuración e IPC, lo que permite usar Sway como un reemplazo transparente de i3 que utiliza Wayland en lugar de X11.
Para configurar un entorno de usuario completo se ofrecen componentes adicionales: swayidle (proceso en segundo plano que implementa el modo de espera), swaylock (protector de pantalla), mako (gestor de notificaciones), grim (creación de capturas de pantalla), slurp (selección de áreas en pantalla), wf-recorder (captura de video), waybar (barra de aplicaciones), virtboard (teclado en pantalla), wl-clipboard (gestión del portapapeles), wallutils (gestión de fondos de escritorio).
Sway se desarrolla como un proyecto modular construido sobre la biblioteca wlroots, que incluye todos los elementos básicos para la operación del gestor de composición. Wlroots incluye controladores para
abstraer el acceso a la pantalla, dispositivos de entrada, renderizado sin acceso directo a OpenGL, interacción con KMS/DRM, libinput, Wayland y X11 (se proporciona una capa para ejecutar aplicaciones X11 sobre Xwayland). Además de Sway, la biblioteca wlroots se utiliza activamente en otros proyectos. Aparte de soportar lenguajes C/C++, se ofrecen enlaces para Scheme, Common Lisp, Go, Haskell, OCaml, Zig, Python y Rust.
En esta nueva versión:
- Se ha añadido la opción de capturar ventanas individuales.
- Se ha implementado soporte para salida en alto rango dinámico HDR10 al utilizar renderizado basado en la API Vulkan.
- Se ha añadido soporte para los protocolos de Wayland:
- color-management-v1 para la gestión del color y el soporte de rango dinámico alto (HDR, High Dynamic Range).
- color-representation-v1 para la definición de la representación del color de la superficie Wayland.
- xdg-toplevel-tag-v1 para que los clientes de Wayland adjunten etiquetas a las superficies de nivel superior, que el compositor servidor puede utilizar para restaurar la posición, tamaño y propiedades de las ventanas tras un reinicio, así como para definir reglas especiales para distintos tipos de ventanas.
- ext-workspace-v1 para crear paneles o indicadores que muestren una lista de los disponibles escritorios virtuales y permitan alternar entre ellos.
- wl_fixes para resolver problemas con otras interfaces de programación de los protocolos base que no pueden ser solucionados con las capacidades intrínsecas de dichas interfaces.
- Se ha implementado la opción «—device-primaries», mediante la cual el perfil de color se forma basado en los datos proporcionados por el monitor a través de EDID.
- Se añadió soporte para detectar la presencia de un teclado numérico utilizando el flag LIBINPUT_SWITCH_KEYPAD_SLIDE en libinput.
- Se incluyeron en el archivo de configuración atajos para teclas multimedia especiales (pausar, reanudar reproducción, siguiente pista, etc.) para controlar la reproducción de contenido multimedia utilizando la utilidad playerctl.
- El perfil de color de salida srgb ha sido modificado para usar una función de transferencia por tramos (piece-wise) de sRGB en lugar de gamma 2.2 (se debe usar un perfil separado gamma22 para gamma 2.2, que se aplica por defecto).
- El arranque en sistemas con GPU no compatibles (por ejemplo, al usar controladores propietarios de NVIDIA), ahora genera una advertencia en lugar de terminar con un error. Esta advertencia se puede desactivar utilizando la opción «—unsupported-gpu» o la variable de entorno SWAY_UNSUPPORTED_GPU.
- Se añadió soporte oficial para el uso de gestores de pantallas para iniciar Sway.
- Se han activado nuevas funcionalidades de la biblioteca wlroots 0.20. Entre los cambios en la nueva versión de wlroots: Soporte para la definición de la representación del color de la superficie Wayland, gestión del color y uso de HDR a través de los protocolos color-representation-v1 y color-management-v1. Soporte para los protocolos de Wayland cursor-shape-v1 para personalizar la apariencia del cursor.
ext-workspace-v1 para utilizar el concepto de escritorios virtuales y xdg-toplevel-tag-v1 para identificar ventanas/superficies a través de la vinculación de etiquetas.

Fuente: opennet.ru
