经过四个月的开发,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 内容而创建的内容。 Windows.
自上一期出版以来,与韦兰相关的重大事件:
- Cinnamon 完全支持 Wayland。
- 在 Chrome 中使用的 ANGLE 库中, Android新增对 Wayland 的支持。
- KDE 在使用 Wayland 时,实现了会话恢复支持和 xx-fractional-scale-v2 Wayland 协议,用于分数缩放。
- Synaptics X.Org 驱动程序已移植到基于 Wayland 的环境。
- 针对视觉特效和动画平台,已启动用 Wayland 取代 X11 的准备情况检查。
- Xfce 项目中的 Xfwl4 复合服务器的测试已经开始。
- Unity 的用户界面已使用 Wayfire 和 Libadwaita 重新创建。
- 更新的复合服务器和桌面环境: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 解决了 X.Org Server 中的许多 X11 安全问题,因为与后者不同,它隔离了每个窗口的输入和输出,不允许客户端访问其他客户端窗口的内容,也不允许拦截与其他窗口相关的输入事件(XLibre XServer 实现了 X11 扩展 Xnamespace,它通过命名空间级别的隔离提供客户端隔离)。大多数平台都实现了对 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
