X与Wayland的主要差异,就是X系统中存在一个X服务器(通常用的是Xorg)。X服务器日理万机,每个窗口的所有控件他都要知道,一边接受鼠标键盘等输入设备的信号,一边找窗口管理器要窗口的位置,计算哪个位置需要更新,也是他负责让显卡绘图。还要有个专门的合成管理器往窗口旁边画影子(有的窗口管理器也顺便兼职了)。一开始这套系统还行,但是后来随着技术的发展他要管的事越来越多,因此不断地打补丁,造成维护麻烦。
到Wayland这里就简单多了,服务端没有那么多多弯弯绕绕,只要Wayland合成器(X系统中的窗口管理器),接受到输入信号直接发给窗口,让应用程序自己处理输入和绘图,画完以后把图给合成器,合成器再把各个窗口的图叠到一起去显示出来。这样做另一个好处就是各个应用程序之间是隔离的,每个应用程序只知道自己窗口的情况,提高了安全性。
Wayland取代X的进度已经完成很多,所有流行的用户界面库都已经支持Wayland,对于一些不支持Wayland的程序,解决方案是用一个运行在Wayland中的X服务器XWayland来兼容。对Wayland支持最激进的桌面是GNOME,多年前他就默认向用户提供Wayland会话,而KDE虽然也提供了Wayland会话,但是默认选择的还是X11。虽然Wayland协议还在发展,一些在X11中已经完善的特性Wayland还没有补全,但是Wayland也有一些X11不支持的功能,比如GNOME桌面的触摸板手势。
客户端应用需要移植到 Wayland 协议,或使用具有 Wayland 后端(如 GTK)的图形工具包,以便能够与基于 Wayland 的合成器和显示服务器原生工作。
无法移植到 Wayland 的传统 X11 应用程序将自动使用 Xwayland 作为 X11 传统客户端和 Wayland 合成器之间的代理。XWayland 同时作为 X11 服务器和 Wayland 客户端。Xwayland 的角色是将 X11 协议转换为 Wayland 协议,从而使旧的X11 应用程序可以与基于 Wayland 的显示服务器一起工作。
在 GNOME Shell on Wayland 上,Xwayland 在启动时自动启动,这样可确保大多数 X11 传统应用程序在使用 GNOME Shell on Wayland 时能按预期工作。但是,X11 和 Wayland 协议不同,因此某些依赖于 X11 特定功能的客户端在 Xwayland 下的行为可能有所不同。