После четырёх месяцев разработки представлен стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.26. Ветка 1.26 обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ошибок и незначительные обновления протокола. Наработки проекта распространяются под лицензией MIT. Эталонный композитный сервер Weston, предоставляющий код и рабочие примеры для использования Wayland в десктоп-окружениях и встраиваемых решениях, развивается в рамках отдельного цикла разработки.
Główne zmiany w protokole:
- Добавлено событие wl_pointer.warp, через которое можно получать уведомления о новой позиции указателя без обработки события wl_pointer.motion, генерируемого при активности пользователя.
- Добавлен запрос wl_fixes.ack_global_remove, предназначенный для отправки композитному менеджеру подтверждения того, что клиент прекратил обработку события для исключения состояния гонки при удалении глобальных событий. После получения подтверждения от всех клиентов композитный менеджер может удалить связанный с событием обработчик на своей стороне.
- Добавлена функция wl_display_remove_socket_fd() для удаления сокетов, до этого добавленных через вызов wl_display_add_socket_fd().
- В отладочном режиме WAYLAND_DEBUG обеспечен вывод в лог времени в формате «HH:MM:ss.xxxxxx», упрощающем разбор и сравнение логов.
Добавленные после рошлого выпуска Wayland расширения протоколов, дополняющие базовый протокол Wayland и поставляемые в отдельном наборе Wayland-Protocols:
- xx-fractional-scale — для масштабирования системы логических координат, значения в которой задаются целыми числами, для повышения точности позиционирования и увеличения разрешения логических координат до отдельных пикселей. Подобная возможность решает проблему с ограниченным разрешением системы логических координат, недостаточным для позиционирования на уровне отдельных пикселей, необходимого для полноценной реализации дробного масштабирования.
- xx-cutouts — aby uzyskać informacje o wycięciach na ekranie (na przykład obszar pod przednim aparatem na ekranie smartfona).
- xx-zones — для создания и добавления окон верхнего уровня в «зоны» — окружения со своим пространством координат. Протокол позволяет организовать логическую расстановку окон, в которой каждое окно размещается относительно другого окна.
- xx-keyboard-filter — umożliwia klientowi przechwytywanie wybranych zdarzeń klawiatury, modyfikowanie zdarzeń wejściowych lub blokowanie przekazywania określonych zdarzeń do skoncentrowanej powierzchni Wayland.
- Protokół xdg-session-management dodano do kategorii staging, umożliwiając przywrócenie stanu i pozycji okien z przerwanej sesji w środowiskach opartych na Wayland, na przykład po awarii serwera złożonego lub aplikacji.
- Protokół „linux-dmabuf” został zaktualizowany, aby obsługiwać systemy z wieloma procesorami graficznymi. W takich systemach klient może negocjować z serwerem kompozytowym, który procesor graficzny ma zostać użyty.
- Zaktualizowano protokół zarządzania kolorami v1, aby zapewnić obsługę metadanych obrazu w formacie BT.2100 do użytku przez określone moduły obsługi na serwerze kompozytowym, co umożliwia prawidłowe wyświetlanie zawartości HDR utworzonej dla Windows.
Наиболее заметные события, связанные с Wayland и произошедшие после публикации прошлого выпуска:
- В Cinnamon реализована полноценная поддержка Wayland.
- W bibliotece ANGLE używanej w Chrome i Android, добавлена поддержка Wayland.
- В KDE при использовании Wayland реализована поддержка восстановления сеансов и реализован Wayland-протокол xx-fractional-scale-v2 для дробного масштабирования.
- Создан порт X.Org-драйвера Synaptics для окружений на базе Wayland.
- Инициирована проверка готовности платформ VFX и анимации к замене X11 на Wayland.
- Началось тестирование композитного сервера Xfwl4 от проекта Xfce.
- На базе Wayfire и Libadwaita воссоздана пользовательская оболочка Unity.
- Обновлены композитные серверы и среды рабочего стола: COSMIC 1.3.0, Weston 16, Phosh 0.56, Nourish 1.0.0, miracle-wm 0.10, KDE Plasma 6.7, labwc 0.20, Sway 1.2, Wayland Maker 0.8, Hyprland 0.55, Niri 26.04, LXQt 2.4.0, Cage 0.3.
Przypomnijmy, że Wayland to protokół interakcji między serwerem złożonym a aplikacjami z nim współpracującymi. Klienci niezależnie renderują swoje okna w oddzielnym buforze, przekazując informacje o aktualizacjach do serwera złożonego, który łączy zawartość buforów poszczególnych aplikacji, aby utworzyć ostateczny wynik, biorąc pod uwagę możliwe niuanse, takie jak nakładanie się okien i przezroczystość. Innymi słowy, serwer złożony nie udostępnia API do renderowania poszczególnych elementów, ale działa tylko z już uformowanymi oknami, co pozwala pozbyć się podwójnego buforowania podczas korzystania z bibliotek wysokiego poziomu, takich jak GTK i Qt, które przejmują pracę komponowania zawartości okien.
Wayland решает многие проблемы с безопасностью X11 в X.Org Server, так как в отличие от последнего изолирует ввод и вывод для каждого окна, не позволяет клиенту получить доступ к содержимому окон других клиентов, а также не допускает перехват связанных с другими окнами событий ввода (в XLibre XServer реализовано X11-расширение Xnamespace, обеспечивающее изоляцию клиентов через разделение на уровне пространств имён). Поддержка прямой работы c Wayland реализована для большинства применяемых в Linux biblioteki graficzne, w tym GTK, Qt, SDL, FLTK, wxWidgets, Clutter i EFL (Enlightenment Foundation Library).
Interakcja ze sprzętem w Wayland/Weston, taka jak inicjalizacja, przełączanie trybu wideo (ustawianie trybu DRM) i zarządzanie pamięcią (GEM dla i915 oraz TTM dla Radeon i Nouveau) w przypadku kart graficznych, może odbywać się bezpośrednio za pośrednictwem modułu na poziomie jądra, eliminując potrzebę uprawnień superużytkownika. Aby zapewnić wykonywanie standardowych aplikacji X11 w środowisku opartym na Wayland, używany jest komponent DDX XWayland (Device-Dependent X), który działa podobnie do Xwin i Xquartz dla Win32 i macOS.
Źródło: opennet.ru
