После четырёх месяцев разработки представлен стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.26. Ветка 1.26 обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ошибок и незначительные обновления протокола. Наработки проекта распространяются под лицензией MIT. Эталонный композитный сервер Weston, предоставляющий код и рабочие примеры для использования Wayland в десктоп-окружениях и встраиваемых решениях, развивается в рамках отдельного цикла разработки.
协议的主要变化:
- Добавлено событие 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 — 获取有关屏幕上的切口的信息(例如,智能手机屏幕上前置摄像头下方的区域)。
- xx-zones — для создания и добавления окон верхнего уровня в «зоны» — окружения со своим пространством координат. Протокол позволяет организовать логическую расстановку окон, в которой каждое окно размещается относительно другого окна.
- xx-keyboard-filter — 允许客户端拦截选定的键盘事件、修改输入事件或阻止某些事件传递到焦点 Wayland 表面。
- xdg-session-management 协议已添加到暂存类别中,它能够从基于 Wayland 的环境中中断的会话中恢复窗口的状态和位置,例如在复合服务器或应用程序崩溃之后。
- “linux-dmabuf”协议已更新,以支持多GPU系统。在此类系统中,客户端可以与复合服务器协商使用哪个GPU。
- 色彩管理 v1 协议已更新,支持 BT.2100 格式的图像元数据,以便在复合服务器中使用特定的处理程序,从而能够正确显示为 HDR 内容而创建的 HDR 内容。 Windows.
Наиболее заметные события, связанные с Wayland и произошедшие после публикации прошлого выпуска:
- В Cinnamon реализована полноценная поддержка Wayland.
- 在 Chrome 中使用的 ANGLE 库中, 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.
让我们回想一下,Wayland 是一种用于复合服务器和与其一起工作的应用程序之间交互的协议。客户端在单独的缓冲区中渲染自己的窗口,将更新传递给复合服务器,复合服务器组合各个应用程序缓冲区的内容以生成最终输出,该输出考虑了窗口重叠和透明度等可能的细微差别。换句话说,复合服务器不提供用于渲染单个元素的 API,而仅在已经形成的窗口上进行操作,这使您可以在使用 GTK 和 Qt 等高级库时摆脱双缓冲,这些库承担了合成窗口内容的工作。
Wayland решает многие проблемы с безопасностью X11 в X.Org Server, так как в отличие от последнего изолирует ввод и вывод для каждого окна, не позволяет клиенту получить доступ к содержимому окон других клиентов, а также не допускает перехват связанных с другими окнами событий ввода (в XLibre XServer реализовано X11-расширение Xnamespace, обеспечивающее изоляцию клиентов через разделение на уровне пространств имён). Поддержка прямой работы c Wayland реализована для большинства применяемых в Linux 图形库包括 GTK、Qt、SDL、FLTK、wxWidgets、Clutter 和 EFL(启蒙基金会库)。
在 Wayland/Weston 中,与硬件的交互,例如初始化、视频模式切换(DRM 模式设置)以及显卡的内存管理(i915 使用 GEM,Radeon 和 Nouveau 使用 TTM),可以直接通过内核级模块执行,无需超级用户权限。为了确保标准 X11 应用程序在基于 Wayland 的环境中运行,使用了 XWayland(设备相关 X)DDX 组件,其运行方式类似于 Win32 的 Xwin 和 Xquartz。 macOS.
来源: opennet.ru
