Po 7 miesiącach rozwoju opublikowano wydanie menedżera kompozycji Sway 1.11, opartego na protokole Wayland, zgodnego z mozaikowym menedżerem okien i3 oraz panelem i3bar. Kod projektu został napisany w języku C i jest rozpowszechniany na licencji MIT. Projekt jest skierowany na użycie w systemach Linux i FreeBSD.
Sway umożliwia rozmieszczanie okien na ekranie w sposób logiczny, a nie przestrzenny. Okna są rozmieszczane w formie siatki, optymalnie wykorzystującej przestrzeń ekranu i pozwalającej na szybkie manipulowanie oknami tylko za pomocą klawiatury. Kompatybilność z i3 zapewniona jest na poziomie komend, plików konfiguracyjnych i IPC, co pozwala na użycie Sway jako przezroczystego zamiennika i3, korzystającego z Wayland zamiast X11.
Aby zorganizować pełnoprawne środowisko użytkownika, oferowane są komponenty towarzyszące: swayidle (proces w tle z implementacją trybu uśpienia), swaylock (wygaszacz ekranu), mako (menedżer powiadomień), grim (tworzenie zrzutów ekranu), slurp (wybór obszaru na ekranie), wf-recorder (nagrywanie wideo), waybar (panel aplikacji), virtboard (wirtualna klawiatura), wl-clipboard (obsługa schowka), wallutils (zarządzanie tłem pulpitu).
Sway rozwija się jako modułowy projekt, oparty na bibliotece wlroots, która zawiera wszystkie podstawowe elementy do organizacji pracy menedżera kompozycji. Wlroots obejmuje backendy do abstrahowania dostępu do ekranu, urządzeń wejściowych, renderowania bez bezpośredniego odwoływania się do OpenGL, interakcji z KMS/DRM, libinput, Wayland i X11 (zapewniając warstwę do uruchamiania aplikacji X11 na bazie Xwayland). Oprócz Sway, biblioteka wlroots jest aktywnie wykorzystywana w innych projektach. Oprócz wsparcia dla języków C/C++, zapewnione są bindy dla języków Scheme, Common Lisp, Go, Haskell, OCaml, Zig, Python i Rust.
W nowym wydaniu:
- Dodano wsparcie dla protokołu Wayland linux-drm-syncobj-v1, które umożliwia wyraźną synchronizację buforów, pozwalając upewnić się, że operacja renderowania w buforze została zakończona przed wyświetleniem tego bufora przez menedżera kompozycji.
- Dodano wsparcie dla protokołu Wayland alpha-modifier-v1, który pozwala klientom zmieniać poziom przezroczystości powierzchni i przenosić operacje zapewniające przezroczystość na stronę kompozytora. serwera, który z kolei może przekazać te operacje działającemu na poziomie jądra modułowi KMS.
- Dodano wsparcie dla protokołów Wayland ext-image-capture-source i ext-image-copy-capture do przechwytywania treści wyświetlanej na ekranie.
- Dodano wsparcie dla protokołu Wayland ext-data-control, który umożliwia uprzywilejowanym klientom zarządzanie przetwarzaniem danych, na przykład do wdrożenia menedżerów schowka.
- W mechanizmie komunikacji międzyprocesowej (IPC) zintegrowano wsparcie dla metadanych kontekstów bezpieczeństwa realizowanych za pomocą protokołu Wayland security-context-v1.
- Udoskonalono logikę konfigurowania wyjścia dla lepszego i szybszego przełączania między urządzeniami.
- Dodano wsparcie dla klawiszy sterujących wskaźnikiem.
- Do domyślnego pliku konfiguracyjnego dodano kombinacje klawiszy do wywoływania narzędzi pactl, brightnessctl i grim.
- Proponowane domyślne menu przeszło na użycie narzędzia wmenu-run i nie zależy już od skryptu dmenu_path.
- Wykorzystano nowe możliwości biblioteki wlroots 0.19. Wśród zmian w wlroots:
- Zrealizowane protokoły Wayland:
- color-management-v1 (dla wsparcia HDR10);
- ext-image-capture-source-v1 i ext-image-copy-capture-v1 (do przechwytywania treści ekranu);
- ext-data-control-v1 (do zarządzania schowkiem);
- xdg-toplevel-icon-v1 (do przypinania własnych ikon);
- xdg-dialog-v1 (do tworzenia zaawansowanych okien dialogowych);
- xdg-system-bell-v1 (do wysyłania sygnałów);
- ext-idle-notify-v1 (do monitorowania aktywności);
- presentation-time (do adaptacyjnej zmiany częstotliwości odświeżania monitora);
- wlr-layer-shell-v1.5 (do definiowania granic wyłącznych stref na ekranie).
- W backendach i silnikach renderujących wdrożono wsparcie dla jawnej synchronizacji buforów z wykorzystaniem obiektów synchronizacji DRM (Direct Rendering Manager).
- Dodano wsparcie dla Multi-GPU w urządzeniach wyświetlających, takich jak adaptery USB GUD.
- Realizacja bezpośredniego wyjścia (direct scanout) w backendach teraz wspiera kadrowanie i skalowanie buforów.
- Optymalizowano operacje związane z grafem sceny (Scene-graph).
- Zrealizowane protokoły Wayland:

Źródło: opennet.ru
