经过一年多的开发,协议、进程间通信机制和Wayland 1.23库均已稳定发布。 1.23 分支在 API 和 ABI 级别向后兼容 1.x 版本,并且主要包含错误修复和次要协议更新。该项目的开发是根据麻省理工学院的许可证进行分发的。 Weston Composite Reference Server 提供了在桌面和嵌入式环境中使用 Wayland 的代码和工作示例,正在作为单独的开发周期进行开发。
协议的主要变化:
- libwayland 实现了一个 API,允许客户端确定服务器端内部连接缓冲区的最大大小。基本最大缓冲区大小是通过 wl_display 接口设置的,新的 API 允许客户端在每个客户端连接的基础上更改它。在实际方面,这一变化允许在特定于 Wayland 的客户端(例如 Xwayland)中使用更大的缓冲区,其特点是输入事件的强度更高。
- 现在可以使用 XML 属性“deprecated-since”来标记已弃用的元素,用于请求、事件和枚举。在 Wayland 术语中,请求是指客户端发送到服务器的消息。 伺服器事件是从服务器发送到客户端的消息;枚举是由协议操作的已命名数值集合。
- wayland-scanner 实用程序中添加了“enum-header”模式,旨在根据描述协议的 XML 文件生成头文件和 C 语言代码,其中包括在头文件中仅指定“枚举”。
- Wayland-scanner 为服务器端的“枚举”提供验证函数(validator)的生成。
- 添加了为事件队列分配名称以简化调试的功能。
- 添加了函数 wl_client_get_user_data() 和 wl_client_set_user_data(),以便更轻松地将任意数据附加到客户端。
- 添加了 wl_shm.release 请求,允许客户端通知服务器停止使用共享对象,从而允许服务器释放与其关联的内存。
- 添加了对 OpenBSD 平台的支持。
自上一期出版以来发生的 Wayland 相关事件:
- XWayland 24.1.0 已发布,支持显式同步技术,并改进了对 GLAMOR 和 EXA 2D 加速架构的支持。
- 更新了 labwc(Lab Wayland Compositor)复合服务器,其功能类似于 Openbox 窗口管理器。
- wprs 项目为 Wayland 开发了一个会话管理器,类似于屏幕实用程序,但用于图形应用程序。
- 使用 Wayland 发布复合 Niri 服务器,并提供平铺布局方法,将窗口分组到屏幕上无限滚动的功能区中。
- Wayland-Protocols 协议和扩展集的更新:1.34、1.33、1.32、1.35。
- 开发默认使用 Wayland 的 SDL3 库。
- 发布 LXQt 2.0.0 桌面环境,在 PCManFM-Qt 文件管理器、通知系统、桌面、Runner、面板、注销界面、LXQt 配置界面和大多数应用程序中支持 Wayland。
- 使用 Wayland 发布 Sway 1.9 用户环境。
- 新的复合管理器 Miracle-wm,基于 Wayland 和用于构建 Mir 复合管理器的组件。
- Louvre 是一个用于开发复合材料的新库 服务器 基于 Wayland。
- 致力于在 Xfce 中实现 Wayland 支持。
- Budgie 桌面环境中对 Wayland 的初步支持。
- 初步支持 Cinnamon 桌面环境中的 Wayland。
- 将 MATE 桌面移植到 Wayland 已基本完成。
- 分布 Lubuntu 切换到使用 Qt 6 和 Wayland。
- KDE 6 提供使用 Wayland 协议的默认会话。实现了对 Wayland 颜色管理扩展的支持。
- Electron 平台启用了 Wayland 的窗口装饰模式。
- 更新了 Wayfire 复合服务器,它使用 Wayland 并允许您以 Compiz 3D 插件的风格创建具有 3D 效果的用户界面。
- IntelliJ 和 OpenJDK IDE 中的 Wayland 支持。
- GNU Emacs 文本编辑器中的 Wayland 支持。
- GNOME 基于 Wayland 的会话包括对 Input Leap 软件 KVM 切换器的支持,它允许您使用单个键盘和鼠标来控制多台计算机。
- Fedora 的 KDE 桌面版已停止支持基础发行版中基于 X11 的会话。
- 改进了专有 NVIDIA 驱动程序中对基于 Wayland 的环境的支持。
- 已经实现了一个驱动程序,允许您在基于 Wayland 协议的环境中使用 Wine,而无需使用 XWayland 和 X11 组件。
- Weston 13.0 复合服务器已经发布。
- 为了测试 KDE、GNOME、Enlightenment、Wayfire、Mir、Xfce 和 Sway 在 Wayland 上的运行情况,我们发布了一个名为 Rebecca Black 的特殊 Live 发行版。 Linux.
- В LinuxFirefox 构建版本现在默认使用 Wayland 复合服务器,而非 XWayland。目前已支持创建仅支持 Wayland 的构建版本。
让我们回想一下,Wayland 是一种用于复合服务器和与其一起工作的应用程序之间交互的协议。客户端在单独的缓冲区中渲染自己的窗口,将更新传递给复合服务器,复合服务器组合各个应用程序缓冲区的内容以生成最终输出,该输出考虑了窗口重叠和透明度等可能的细微差别。换句话说,复合服务器不提供用于渲染单个元素的 API,而仅在已经形成的窗口上进行操作,这使您可以在使用 GTK 和 Qt 等高级库时摆脱双缓冲,这些库承担了合成窗口内容的工作。
Wayland 通过在每个窗口的基础上隔离输入和输出、防止客户端访问其他客户端窗口的内容以及防止与其他窗口关联的输入事件被拦截,解决了许多 X11 的安全问题。目前,GTK、Qt、SDL(从版本 2.0.2 开始)、Clutter 和 EFL(Enlightenment Foundation Library)库已经实现了对与 Wayland 直接合作的支持。从 Qt 5.4 开始,QtWayland 模块包含在由 Wayland 项目开发的 Weston 复合服务器环境中运行 Qt 应用程序的组件实现中。
在 Wayland/Weston 中,与硬件的交互,例如初始化、视频模式切换(DRM 模式设置)以及显卡的内存管理(i915 使用 GEM,Radeon 和 Nouveau 使用 TTM),可以直接通过内核级模块执行,无需超级用户权限。Weston 复合服务器无需完全依赖内核 DRM 模块即可运行。 Linux此外,它还基于 X11、另一个 Wayland 合成服务器、帧缓冲区和 RDP。另外,目前正在进行一些项目,以支持在该平台图形堆栈之上进行工作。 Android.
Weston 项目正在开发复合服务器的实现方案。任何其他支持 Wayland 协议的产品也可以用作复合服务器。例如,目前正在进行 KWin 对 Wayland 的支持工作。Weston 目前的功能已经超越了用于测试 Wayland 协议的示例集,并且可以通过插件和附加组件获得额外的功能。用户界面和高级窗口管理功能计划作为 Weston 的外部后端来实现。为了确保标准 X11 应用程序在基于 Wayland 的环境中运行,使用了 XWayland(设备相关 X)DDX 组件,其运行方式类似于 Win32 的 Xwin 和 Xquartz。 macOS.


来源: opennet.ru
