Wayland 是一个桌面的显示服务器协议和在Linux上实做这个协议的软件库。它是一个自由软件专案,采用MIT许可证释出,于2008年由 Intel 开放源代码技术中心 (Open Source Technology Center, OSTC) 的成员 Kristian Høgsberg 所发起的。[1]作者声称“每一个显示画面皆是完美的,我的意思是应用程序将能充分地去控制图形的显示,使我们完全无法察觉任何的撕裂、延迟、重画及闪烁”。[2][3]Wayland使得Compositor能够与应用程序和视频硬件直接交互。应用程序在它们自己的缓冲区中进行图形渲染。这样一来,窗口管理器就变成了一个显示管理服务,专门负责渲染那些屏幕上的程序。这比X Window系统中的窗口管理器要更简单,高效。
现有的Compositor例如Compiz,KWin和Mutter对Wayland都有着不同程度的支持。
Kristian Høgsberg,一个专注于GNU/Linux图形开发的软件工程师,在2008年发起了Wayland project。当时他在Red Hat[4]工作,现在他在intel。[5]Wayland是自由软件,它的库(libwayland-server and libwayland-client)以MIT License授权,示例程序和Compositor一开始以GPLv2授权。现在整个Project都是以MIT License授权的了。直到2010年11月份,Wayland还仅仅只能在intel,AMD,Nvidia的开源驱动上运行。
“Wayland”这个名字来自于Wayland,MA。据说Høgsberg是在开车穿过那个小镇时得到灵感的。
Wayland 运用既有的 Linux 核心技术,像是 Direct Rendering Manager (DRM), kernel mode-setting (KMS) 以及 Graphics Execution Manager (GEM) 以提供一个最小化的显示管理服务。[Wayland 混合器 (compositor) 在 2010 年 6 月已从桌面常用的 OpenGL 改为 OpenGL ES。这个专案也开发支援 Wayland 显示的 Qt,而不需要 X。大部分应用程式都有望获得透过函式库,无需修改程式即可支援 Wayland。
近些年来,GNU/Linux 桌面图形开发者从X server中移除了一大堆的与渲染有关的接口到内核中。现在,已经有许多功能被移入内核(内存管理,任务调度,模式设置(KMS)等等)或是程序库(cario,pixman,freetype,fontconfig,pango等等),所以窗口系统需要做的事情大大减少了。但是 X11 协议十分巨大,庞杂,并且它包括了许多已经过时的模块。虽然开发者们为了使 X server 适应现代化的计算机体系结构而开发出了 XRandR,XRender,COMPOSITE等一些额外扩展,但这终究是治标不治本,同时这也会增加维护的难度。 Wayland也包括了一个协议(近乎完成),但与X server不同的是 Wayland只做它必须要做到事情。下面我们以"鼠标点击按钮引发按钮更新动作"来说明一下 Wayland 和 X server 的区别:
在 X 中:
在 Wayland 中:
目前,Wayland使用OpenGL ES而不是传统的OpenGL。“从长远来看,我们需要完整的OpenGL支持,但问题是 libGL 会带来X的依赖性......[另一方面,使用OpenGL ES会使得Wayland更容易支持移动设备。 Wayland 目前并不支持网络透明性,但未来可能会支持。
Phoronix 于 2008 年 11 月发表了一篇标题为“Wayland: A New X Server For Linux”的文章,[2]披露 Wayland 这项新的项目。Kristian 透过他的网志对此关注作出回应,他告示大众 Wayland 并非一个新的 X server 而是一个显示服务器,并声明这个新兴的专案尚处于未成熟的阶段。[13]
马克·沙特尔沃思于 2010 年 11 月 4 日宣布 Wayland 将作为 Ubuntu 未来某一未定版本 Unity 接口的显示服务器[14]。但是,2013年3月份,Canonical 确认他们将开发一个新的显示服务Mir显示服务器而不是使用 Wayland 来替代X[15]。
Adam Jackson (ajax) 在Fedora 项目的邮件列表里表示,Fedora在未来很可能会默认使用Wayland。"...因为它在许多方面都有重大的进步..."[16]
KWin,KDE的视窗管理器加入支持 OpenGL ES 输出。[17] 已在 KDE SC 4.7 发布[18]目前,KWin 已经完成 Wayland 的初步移植。[19] 在2012年1月发布的 KDE SC 4.8,KDE 将支援 X 下执行 Wayland。在2012年夏天发布的 KDE SC 4.9,将可以直接执行 Wayland,主要用于支援行动设备,也就是Plasma Active。[20]
Ubuntu 的 Compiz 开发者们已经把它对X的依赖部分变成了一个可选插件。同时,Canonical正在为Compiz添加OpenGL ES的支持。众所周知,目前 Wayland 正是使用OpenGL ES,这使将得Compiz能够更容易迁移到Wayland。
截止到 2012年3月:
Clutter对Wayland已经有完整的支持。
EFL对Wayland已经有完整的支持。
Qt5除了对client有一些改动之外,对Wayland已经有完整的支持。
GTK+3.4.0,发布于2012年03月26日,对Wayland的支持有一些缺陷。不过过随着3.4.1更新版本的发布,这个问题得到了缓解。
SDL的Wayland支持正在开发中。
借由 -platform 命令列选项,Qt 应用程式可以在运行时切换图形后端,如 X 与 Wayland。[21]2011年1月,Wayland 支持搬进了上游 Qt 版本库的 Lighthouse 分枝。