X Window System、Wayland与相关技术解析
在图形化界面的世界里,X Window System和Wayland是两个重要的存在。下面我们将深入探讨它们的核心接口、架构、渲染方式以及两者之间的差异,同时介绍Xwayland和一些相关的工具包。
1. Wayland核心接口
Wayland协议当前版本的接口存于一个XML文件中,这个文件就是Wayland的源代码。它列出了当前版本Wayland中现有的接口,以及这些接口的请求、事件和属性。任何Wayland合成器(如Wayfire)都必须实现这些接口,它们是最基本的要求。
2. 窗口系统对比
要理解Wayland架构以及它与X Window System的不同之处,一个好方法是跟踪从输入设备产生的事件,直到该事件影响的变化显示在屏幕上的整个过程。
2.1 X Window System的事件/请求循环步骤
- 内核获取事件并发送给X服务器 :内核通过evdev输入驱动从输入设备获取事件并发送给X服务器。内核承担了驱动设备以及将不同设备特定的事件协议转换为Linux evdev输入事件标准的繁重工作。
- X服务器确定受影响窗口并发送事件 :X服务器确定事件影响的窗口,并将事件发送给在该窗口上选择了该事件的客户端。但X服务器实际上并不清楚如何正确处理,因为窗口在屏幕上的位置由合成器控制,可能会进行X服务器无法理解的多种变换(如缩小、旋转、晃动等)。
- 客户端处理事件并发送渲染请求 :客户