Zespół deweloperów środowiska graficznego Xfce ogłosił rozpoczęcie prac nad nowym kompozytowym serwerem Xfwl4, który wykorzystuje protokół Wayland. W Xfwl4 postanowiono nie korzystać z bazy kodowej obecnego menedżera okien xfwm4 i rozwijać projekt od podstaw w języku Rust, przy użyciu biblioteki Smithay. Projekt znajduje się na wczesnym etapie rozwoju, a pierwsza wersja testowa spodziewana jest w połowie 2026 roku. Kod Xfwl4 jest rozpowszechniany na licencji GPLv3.
W Xfwl4 planowane jest zaimplementowanie całej funkcjonalności dostępnej w xfwm4, w tym możliwość użycia istniejących ustawień xfconf oraz interfejsu konfiguracji, ale z uwzględnieniem specyfiki używania Wayland zamiast X11. Wśród rozszerzonych funkcji wyróżnia się znaczne przekształcenie logiki uruchamiania sesji, implementację protokołu Wayland xdg-session-management oraz wsparcie dla uruchamiania aplikacji X11 za pomocą XWayland.
Za powód stworzenia nowego kompozytowego serwera wspomniana jest nieudana próba jednoczesnego wsparcia X11 i Wayland w istniejącej bazie kodowej menedżera okien xfwm4, który pierwotnie został zaprojektowany z myślą o ścisłej integracji protokołu X11, co utrudniało oddzielenie ogólnej logiki zarządzania oknami od specyfiki X11.
Stopniowe dodawanie wsparcia dla Wayland w xfwm4 uznano za nieopłacalne z powodu możliwości obniżenia stabilności i występowania nowych błędów w trakcie refaktoryzacji. Łatwiej okazało się pozostawić xfwm4 powiązanym z X11 i równolegle rozwijać nowy kompozytowy serwer dla Wayland. Za powody wymienia się także niemożność dostosowania niektórych koncepcji zarządzania oknami X11 do Wayland oraz konieczność użycia języka C i biblioteki wlroots w przypadku kontynuacji rozwoju xfwm4, mimo dostępności lepszych alternatyw.
Xfwl4 postanowiono rozwijać na bazie biblioteki Smithay, która oferuje implementację niemal wszystkich oficjalnych rozszerzeń protokołu Wayland, a także protokołów wlroots i KDE. Smithay jest wykorzystywana w takich projektach jak Cosmic i Niri. Podobnie jak wlroots, biblioteka Smithay dostarcza abstrahacje na wysokim poziomie, ale jednocześnie pozwala na ingerencję w działanie systemów niskiego poziomu oraz dostosowywanie metod renderowania grafiki, interakcji z urządzeniami wejściowymi, zachowania protokołów Wayland oraz obsługi zadań związanych z budową desktopu. Język Rust został wybrany, ponieważ utrudnia popełnianie błędów związanych z pamięcią i zmniejsza prawdopodobieństwo problemów prowadzących do awarii.
Źródło: opennet.ru
