经过八个月的开发,Wayland 1.25 协议、进程间通信机制和库的稳定版本已发布。1.25 分支在 API 和 ABI 层面向下兼容 1.x 版本,主要包含错误修复和少量协议更新。该项目采用 MIT 许可证。Weston 参考复合服务器(提供在桌面环境和嵌入式解决方案中使用 Wayland 的代码和工作示例)正在另一个开发周期中开发。
协议的主要变化:
- 文档已从 DocBook 格式转换为 mdBook(Markdown)格式。
- Wayland XML 方言、内容更新模型和颜色管理功能均有完整的文档说明。
- 为具有多个父接口的接口添加了新属性“frozen”。
- 新增了 wl_surface.get_release 请求,用于接收客户端通过 wl_surface.attach 附加的缓冲区释放通知。与 wl_buffer.release 不同,wl_surface.get_release 的通知与特定的渲染时刻相关联。
- 添加了 wl_display_dispatch_pending_single() 函数,该函数允许您从事件队列中检索和处理单个事件,而不是像 wl_display_dispatch_pending() 那样检索和处理所有累积的事件。
- 对 WAYLAND_DEBUG 调试输出进行颜色高亮显示。
自 Wayland 1.25 发布以来添加的协议扩展,是对 Wayland 核心协议的补充,并在单独的 Wayland-Protocols 集中提供:
- xx-input-method — 允许应用程序为复合文本实现文本输入法 服务器 并生成输入的文本,例如,可用于创建虚拟键盘和 IME 层(输入法编辑器)以处理输入。
- xx-text-input 协议允许复合服务器实现输入法并将文本发送到应用程序。该协议规范了复合服务器之间的交互。 服务器 以及应用程序,并允许您管理诸如传输输入文本、处理输入焦点更改事件以及考虑输入字段的具体情况(语言、文本选择、内容类型)等功能。
- color-management-v1 和 color-representation-v1 协议得到了改进,提供了颜色管理、HDR 支持以及定义 Wayland 表面颜色表示的功能。
自上期出版以来,与 Wayland 相关的最值得注意的事件有:
- GNOME 50 移除了对 X11 的支持。KDE Plasma 6.8 也将放弃对 X11 的支持。
- JetBrains 正在将 IntelliJ IDE 的默认设置更改为使用 Wayland。
- Xfce 发布了使用 Wayland 的 Xfwl4 合成服务器。
- Budgie 10.10 桌面环境已迁移到 Wayland。
- 基于 Wayland 的 QNX 开发人员桌面。
- Marathon OS 是一个基于 Wayland 的移动操作系统。
- 发布 Wayback,这是一个使用 Wayland 组件运行 X11 桌面的层。
- Cinnamon 现在可以选择为 Wayland 安装会话文件,并且实现了在使用 Wayland 时切换键盘布局的功能。
- Wine 驱动程序在基于 Wayland 的环境中运行时,可实现对剪贴板、输入法、非矩形窗口和透明度的支持。
- Cairo-Dock 已添加 Wayland 支持。
- 复合服务器已更新:Weston 15.0、River 0.4.0、Hyprland 0.54、labwc 0.9.4、Niri 25.11、miracle-wm 0.8、Wayfire 0.10、wlmaker 0.6、labwc 0.9.0。
请记住,Wayland 是一种复合通信协议。 伺服器 以及与之配合使用的应用程序。客户端在单独的缓冲区中独立渲染各自的窗口,并将更新信息传递给复合窗口。 伺服器它将各个应用程序缓冲区的内容组合起来生成最终输出,并考虑窗口重叠和透明度等可能存在的细微差别。换句话说,复合服务器不提供用于渲染单个元素的 API,而只对预渲染的窗口进行操作,从而在使用 GTK 和 Qt 等高级库(这些库负责处理窗口内容的组合工作)时消除了双缓冲。
Wayland 解决了 X11 的许多安全问题,因为与 XXNUMX 不同,它隔离了每个窗口的输入和输出,不允许客户端访问其他客户端窗口的内容,也不允许拦截与其他窗口相关的输入事件。Linux 中使用的大多数图形库都支持直接使用 Wayland,包括 GTK、Qt、SDL、FLTK、wxWidgets、Clutter 和 EFL(Enlightenment Foundation Library)。
在 Wayland/Weston 中,与硬件的交互,例如初始化、切换视频模式(drm 模式设置)以及显卡的内存管理(i915 的 GEM 以及 Radeon 和 Nouveau 的 TTM),可以直接通过内核级运行的模块执行,无需超级用户权限。为了确保常规 X11 应用程序在基于 Wayland 的环境中能够执行,我们使用了 XWayland(设备相关 X)DDX 组件,其组织结构与 Win32 和 macOS 平台上的 Xwin 和 Xquartz 类似。


来源: opennet.ru
