导读 | Wayland 是 Linux 发行版的替代窗口系统。它取代了老化的 X11 标准。由于它需要修改应用程序才能使用它,因此迄今为止采用速度很慢。在撰写本文时,增强的安全性是相对于 X11 的主要优势。 |
X11 或 X Window 系统可让您的图形桌面环境显示和控制窗口。 Wayland 是 X11 的替代品。它的设计速度更快、更安全。以下是您需要了解的有关它们的信息。
什么是Wayland?
Wayland 是 X11 的现代替代品,几十年来 X11 一直是 Linux 上的默认窗口系统。 Wayland 是一种通信协议,定义 X Window 显示服务器和客户端应用程序之间的消息传递。 Wayland 项目提供了客户端和服务器库,使应用程序能够使用该协议。
Wayland 项目由红帽开发人员于 2008 年启动。
X的众多名字
X Window System 是一个窗口系统,由麻省理工学院于 1984 年首次针对 Unix 操作系统发布。应用程序可以基于窗口系统提供的功能来生成用户界面。
到 1987 年,X Window 系统已达到版本 11,并被称为 X11。它现在由 X.Org 基金会管理。尽管自 1987 年以来已经出现了许多较小的版本,但它仍处于版本 11。截至撰写本文时,当前的稳定版本是 X11R7.7。
名称中的“X”并不表示罗马数字中的“10”,也不表示“Xtra”、“Xtending”或类似的意思。以前的窗口系统被称为“W”,代表“windows”,当他们开始新项目时,他们只是简单地移动到字母表中的下一个字母。
您会听到 X Window 系统被称为“X”、“X11”、“Xorg”、“X Windows”和“X Window System”。
X11 的工作原理
X Window 系统处理低级事件和原语,例如与鼠标交互以及绘制和移动窗口。应用程序处理视觉效果和界面设计。窗口的外观、它们有哪些按钮以及这些按钮的位置是应用程序程序员做出的选择。 X Window 系统将最终的设计绘制到屏幕上。
X11 提供了在工作的 X Window 系统的各个组件之间必须传递的通信的定义。这种通信是必需的,因为启用 X 的应用程序用于绘制其窗口和界面元素的代码不在应用程序内部。该工作由 X 服务器和窗口管理器共享。
应用程序是 X 服务器的客户端。窗口管理器是一种特殊类型的客户端。 X 服务器负责管理资源、执行绘图请求以及将按键和鼠标单击等事件编组到适当的应用程序。
它还充当窗口管理器和应用程序之间通信的中间人,在它们之间来回代理消息。窗口管理器维护应用程序已打开的窗口列表、它们在屏幕上的位置、它们的大小、它们是否重叠等等。
合成窗口管理器为每个窗口维护一个离屏缓冲区。它将这些缓冲区合成为一个图像,该图像代表最顶层的窗口(代表整个桌面)并写入屏幕。
所有现代图形桌面环境,包括 GNOME 和 KDE,都使用合成窗口管理器。
Wayland 的工作原理
Wayland 旨在解决 X11 的问题。 X11 架构需要大量消息传递。 X 服务器位于客户端和窗口管理器之间。它还位于所有东西和(通过内核)图形硬件之间。消息量过大可能会导致延迟和滞后、跳跃的视觉体验。
还有一个庞大的代码库。有服务器应用程序、窗口管理器应用程序和客户端使用的 X11 库。您的代码库越大(且越旧),维护起来就越困难,并且您将更加难以处理遗留代码。
通过改变架构,Wayland 实现了代码库的现代化和简化,带来了性能优势并提高了安全性。
实际上,他们已将服务器和窗口管理器合并到一个应用程序中。他们删除了执行现在由内核执行的功能的所有代码。他们没有重复工作,而是利用了内核的功能。
使用 Wayland,合成器和客户端应用程序可以直接通信。合成器维护其内部映射,其中包括哪些窗口在桌面上的位置、它们的大小和状态。它代理键盘、鼠标和窗口更改事件,并将它们发送到拥有这些窗口的应用程序。
应用程序相应地更新用户界面。主要区别在于渲染是在应用程序本身内部使用链接的 Wayland 库执行的。
应用程序要么更新用于保存窗口的缓冲区,要么创建一个新缓冲区并丢弃旧缓冲区。然后,客户端应用程序向合成器发送通知,告诉它更新其窗口映射并使用新的或更新的视频缓冲区。文章来源:https://www.toymoban.com/news/detail-811551.html
这种简化的架构和现代代码设计提供了性能改进,尤其是窗口大小调整和拖动,显得平滑流畅。文章来源地址https://www.toymoban.com/news/detail-811551.html
到了这里,关于Linux 上的 Wayland 是什么?它与 X 有何不同?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!