Skip to main content
 Web开发网 » 操作系统 » unix系统

类Unix系统的GUI

2021年10月25日7220百度已收录

Unix/Linux这类系统本身没有图形界面,图形界面的实现只是系统中的一个应用程序而已。换言之,图形界面并不是操作系统本身的一部分,Unix/Linux就是一个基于shell命令行的操作系统。

Windows系统则不同,从Windows95开始,系统内核中就已经包含了图形系统,也就是说,图形界面是操作系统本身的一部分。因此,Windows这样的系统,在图形桌面上的表现远远超过Unix/Linux,由此才占据了PC市场的主要份额。

随着时代发展,类Unix系统也产生了图形界面的需求,为了解决这个问题,出现了「X Window System」。

X Window 系统(X11,或简称X)是一个位图显示的窗口系统,常见于类似Unix的操作系统。

X提供了GUI环境的基本框架:在显示设备上绘制和移动窗口,并与鼠标和键盘进行交互。X并没有规定用户界面,这是由各个程序处理的。因此,基于X环境的视觉风格差异很大;不同的程序可能呈现出完全不同的界面外观。

X起源于1984年麻省理工学院(MIT)的雅典娜项目(Project Athena),自1987年9月以来,X协议一直处于第11版(因此称为 "X11")。X.Org基金会领导着X项目,目前的参考实现X.Org服务器,以MIT许可和类似的许可方式作为免费和开源软件提供。

X已变成 UNIX、类 UNIX、以及 OpenVMS 等操作系统所一致适用的标准化软件工具包及显示架构的运作协定。X 窗口系统通过软件工具及架构协定来创建操作系统所用的图形用户界面,此后则逐渐扩展适用到各形各色的其他操作系统上。现在几乎所有的操作系统都能支持与使用 X。更重要的是,今日知名的桌面环境——GNOME 和 KDE 也都是以 X 窗口系统为基础建构成的。

X的历史X起源于1984年的麻省理工学院。它是 "Project Athena "的一部分,这是一个全校范围的跨平台系统,它大致是基于斯坦福大学的W Window系统。

不久之后,Unix厂商开始对X产生了兴趣。他们意识到,X将使图形应用程序更容易移植到新的硬件上,这反过来又会吸引独立软件厂商(ISV)--软件越多,系统的销量就越大。

在经历了短暂的限制性许可之后,1987年,X Window系统的第11版在MIT许可下发布,并成立了一个名为 "X联盟 "的厂商中立组织来管理开发。这是最早的开源项目的例子之一。事实上,它比开源一词早了十几年。每个厂商都以X联盟的样本代码为出发点,实现了一个针对其特定显示硬件和操作系统的服务器。

X的控制权从一个小组传到另一个小组,直到1999年,开放集团成立了X.org来管理这项技术。不幸的是,当时X的官方工作几乎已经停滞不前。

然而,1992年,一个名为X386的X for PC的特殊实现引起了许多开发者的兴趣。当X386的商业版本开始发行时,这个开源版本被改名为XFree86。最终,大多数X创新都是在XFree86项目内部进行的,而不是来自X标准的官方守护者。

但是,内部政治和僵化的组织结构给 XFree86 项目公司带来了损失,在 2003 年的一场许可纠纷之后,一些关键的开发者决定他们已经受够了。他们将开发工作搬回了几乎不存在的X.org,成立了X.org基金会,并将工作推向了高潮。2004年,大多数开源操作系统发行版都采用了X.org服务器。

最终,活跃的X开发在原地结束,XFree86项目的后续项目取代了X技术的样本实现,一个重新焕发活力的开发者社区开始再次稳步推进技术的发展。

X的其他名字X窗口系统有许多不同的名称,有时这是造成混乱的原因。 应使用以下名称之一来引用X:

XX Window SystemX Version 11X Window System, Version 11X11请注意,"X Windows "并不在该名单上;这一遗漏最初是由于担心与微软的Windows产品系列相混淆。多年来,这一直被用作一种遮羞布;任何提到 "X Windows "的人都被认为是局外人或初学者,你可能应该避免说 "X Windows"。

版本号在现代的使用中几乎从未被提及,因为之前的版本都是实验性的,而11版本已经使用了近二十年(虽然版本号一直在上升)。

由于X.org实现的主导地位,导致不少人将X本身称为Xorg或X点org。

如何理解XX 图形用户接口,并不是一个软件,而「是一个协议」(protocal),这个协议定义一个系统成品所必需的功能(如同 TCP/IP、。

由于X只是架构规范,并不是一个具体软件,所以必须有人依据此协议规范开发出具体实现软件。X有许多具体实现,其中较为知名的有:

「Xfree86」「Xorg」其中,「Xorg」是使用最为广泛的实现软件。此外,在微软Windows系统上的实现有「Xming」,苹果MacOS上的实现有「XQuartz」。

X的架构原理X Window 系统是基于C/S架构,由「X server」,「X client」,「X 协议」三部分组成。

X server和X client通过X协议进行通信X server接收X client的显示请求,并输出到显示设备上,同时,会把输入设备的输入事件,转递给相应的X clientX 协议是网络透明(network-transparently)的,也就是说,server和client可以位于同一台机器上的同一个操作系统中,也可以位于不同机器上的不同操作系统中(X是跨平台的),这为远程GUI登录提供了便利。X将协议封装为命令原语(X command primitives),以库的形式(「xlib」或「xcb」)向client提供接口。X client(即应用程序)利用这些API,可以向X server发起2D(或3D,通过GLX等扩展)绘图请求X client是与硬件无关的,它并不关心你使用的显卡、显示器、键盘或鼠标,这些只与X server相关在大多数情况下,客户端是指在你的桌面电脑上运行的程序,而服务器是指远程机房中的电脑。但在X术语中,这是反过来的,你面前的电脑运行的是服务器,而客户端程序可能位于远程的计算机上。因为X server管理的具体资源包括显卡和显示器、指向设备(如鼠标、轨迹板和触摸屏)和键盘,这些资源分别位于运行X server的物理机上类Unix系统的GUI  unix系统 第1张

简单的例子:X服务器接收来自本地键盘和鼠标的输入并显示到屏幕上。在用户的工作站上运行一个Web浏览器和一个终端仿真器,终端仿真器在远程计算机上运行,但在用户的机器上进行控制和监视(远程登录)。

打个更好理解的比方,假设我们现在有一台建站用的远程Linux服务器,它只有命令行界面。但我们想要在Linux服务器上运行图形界面,如果直接给这台服务器安装GUI组件很可能引起服务器不稳定,而且安装GUI组也会很麻烦。实际上我们根本不需要给Linux服务器安装任何软件,只需要利用X Window 系统即可。

根据X Window 系统的架构,这台远程Linux主机是做为X client存在的,将界面数据发送到X Window服务器上显示。而X Window服务器是可以运行到我们本地的任何一台有界面的windows、Linux或者mac操作系统上的。

基于X的GUI的七个层次Unix的传统是将许多小程序组合成解决方案,而不是使用单一的整体程序。这种方法提供了更多的灵活性,因为这些较小的构件可以以不同的方式组合起来以满足不同的需求。

基于X窗口系统的GUI也遵循同样的理念,它们是以层的形式构建的,可以根据需要进行混合和匹配。

下图显示了大多数基于X的GUI中的七个层的简单模型:

类Unix系统的GUI  unix系统 第2张

图中顶部的元素对用户来说是最可见的,也是最重要的,而图中底部的组件是最不可见的。从下往上,这些层级是:

「网络传输」 使其他层能够进行通信。这一层几乎总是由 TCP/IP 加上本地客户机的快速连接方案组成,但也可以使用许多旧的或专有的网络传输,包括 IPX/SPX 和 DecNET。「X Window 服务器」 由管理显示器(通常由键盘、显示屏幕和鼠标组成)的软件组成,并在连接到显示器硬件的计算机上运行。X服务器以上的所有层都被认为是该服务器的客户端,并且可以位于本地网络上的任何位置,甚至可以位于互联网上。「显示管理器」 使用户能够以图形方式登录系统。大多数显示管理器要求用户键入他的用户ID和密码,但也可以使用几乎任何认证方案,包括生物识别扫描。「会话管理器」 追踪整个登录会话的应用程序状态,启动标准客户端,如窗口管理器和桌面环境组件,重启上一个会话结束时处于活动状态的应用程序,并在应用程序崩溃时选择性地重启它们。「窗口和合成管理器」 管理窗口的位置并提供窗口装饰。这包括窗口标题栏、边框以及用于调整大小、最大化、最小化、移动和关闭窗口等常用操作的控件。当COMPOSITE扩展可用时,窗口管理器也作为合成管理器。X开发者尝试着将它们分开,但为了真正发挥好作用,合成管理器需要访问只有窗口管理器才知道的窗口信息。窗口管理器被认为是一类特殊的客户端,而且一次只能在一个显示器上激活一个。「桌面环境」 为用户提供桌面模式的一个或多个程序。这可能包括启动程序的菜单,指示当前正在运行的程序的托盘或面板,代表桌面背景上的文件或程序的图标,停靠的小程序,以及其他有用的工具和实用程序。「应用程序客户端」 能够使用户进行有用工作的程序。它们是电子表格、文字处理器、网络浏览器、媒体播放器、视频编辑器等。「工具包」 编程库,用于简化编写与X服务器通信的客户端的任务。工具包本身不是一个层,但它们确实支持并简化了客户端层的构造。任何一层中使用的软件都可以改变,而不影响其他层。例如,你可以从XDM显示管理器切换到GDM显示管理器,而无需对其他层进行任何更改。

最下面的两层(网络传输和X服务器)是必须的,其他层是可选的。这为GUI的操作方式提供了很大的灵活性。

例如,自动柜员机的用户不需要使用用户ID登录,不需要移动或调整窗口大小,也不需要管理文件和启动程序,因此不需要显示管理器、窗口管理器和桌面环境层,ATM应用程序可以直接控制整个显示空间。或者,如果X是在用户登录后启动的,用户已经通过了身份验证,所以不需要显示管理器,可以不使用。

加入窗口管理器的X Window系统示意图

类Unix系统的GUI  unix系统 第3张

Linux系统的桌面环境桌面环境就是将各种组件捆绑在一起,以提供常见的图形用户界面元素,如图标、工具栏、壁纸和桌面小部件。此外,大多数桌面环境都包含一组集成的应用程序和实用程序。最重要的是,桌面环境提供了它们自己的窗口管理器,但是通常可以用另一个兼容的窗口管理器代替。

桌面环境可能仅仅是一个简单的窗口管理器, 也可能是一个像 KDE 或者 GNOME这样的完整桌面应用程序套件。

重量级桌面环境通常图形化界面都是比较吃资源的,内存占用率以及CPU的使用都是相对比较高的,重量级的桌面系统对电脑配置要求更高一点。

「Gnome」「KDE」「Cinnamon」「Zorin」「Unity」其中Gnome和KDE是两个较为重要的桌面环境。

「KDE」是一个国际性的自由软件社区,开发运行在Linux、BSD、Solaris、Microsoft Windows 与 macOS等平台上的一系列跨平台应用程序。它最著名的产品是 Plasma 桌面,是许多 Linux 发行版的默认桌面环境,例如openSUSE、Mageia、Linux Mint(19版开始不再支持)、Kubuntu、PCLinuxOS 与 Chakra GNU/Linux。

社区的目标是开发基本的桌面功能和日常必需的应用程序,以及提供开发者编写独立的应用程序的工具和文档。许多独立应用程序和规模较小的项目是基于 KDE 的技术,这些软件包括 Calligra Suite、digiKam、Rekonq、K3b 和许多其他应用程序。KDE 软件是基于Qt框架所开发。多个国家的政府部门使用 KDE 软件,兴建于瑞士的大型强子对撞机也使用 KDE 软件。

KDE 是由德国人 Matthias Ettrich 于1996年就读于蒂宾根大学开始的一个计划。当时,他忧心于Unix桌面没有一个应用程序外观、感受或工作方式和其他程序一样。他建议不仅是创建一套应用程序,而是一个桌面环境,用户可以得到统一的外观和工作方式。他还希望这个桌面易于使用及更人性化;他当时对桌面应用的抱怨之一是对最终用户来说太复杂了。他在 Usenet 发表的文章引发了很大的回响,意味着 KDE 项目就此诞生了

「GNOME」是一个完全由自由软件组成的桌面环境。它的目标操作系统是Linux,但是大部分的BSD系统亦支持GNOME。

GNOME是由志愿贡献者和受雇贡献者组成的GNOME计划开发,其最大的公司贡献者为红帽公司。它是一个为开发软件框架、基于这些框架来开发客户端软件及协调软件翻译和开发无障碍软件的项目。GNOME最初是GNU网络对象模型环境(GNU Network Object Model Environment)的缩写,但是已经被废弃了。是GNU计划的一部分,并且是由志愿者开发的。

「GNOME 1」 1996年KDE发布,但KDE所依赖的Qt当时并未使用GPL许可。出于这种考虑,两个项目在1997年8月发起:一个是作为Qt库替代品的“Harmony”,另外一个就是创建一个基于非Qt库的桌面系统,即GNOME项目。GNOME的发起者为米格尔·德伊卡萨和费德里科·梅纳。

GIMP Toolkit(GTK+)被选中做为Qt toolkit的替代,担当GNOME桌面的基础。GTK+使用LGPL,允许链接到此库的软件(例如GNOME的应用程序)使用任意的许可协议。GNOME计划的应用程序通常使用GPL许可证。

在GNOME变得普及后,1999年Qt加入GPL许可。Troll Tech在GNU GPL和QPL双重许可证下发布了Unix版的Qt库。Qt加入GPL许可后,在2000年年底Harmony项目停止了开发,而KDE不再依赖非GPL的软件。2009年3月,Qt 4.5发布,加入了LGPL许可作为第三选择。

“GNOME”这个名称最初是“GNU Network Object Model Environment”的缩写,以反映最初为了开发类似微软对象链接与嵌入的框架。但这个缩写最后被放弃,因为它不再反映GNOME项目的远景。

加州初创企业Eazel公司于1999至2001年开发Nautilus文件浏览器。米格尔·德伊卡萨和纳特·弗里德曼于1999年创立后来成为Ximian的Helix Code公司。该公司开发了GNOME的基础设施和软件,2003年被Novell收购。

「GNOME 2」 GNOME 2与传统桌面界面十分相似,拥有一个用户可以与不同例如窗口、图标、文件等虚拟对象交互的桌面环境。GNOME 2使用Metacity为它的默认窗口管理器。GNOME 2的窗口、程序和文件管理和一般的桌面操作系统十分相似。在默认的设置中,桌面有一个启动菜单,可以用以开启已安装的程序及文件;己存在的窗口在下方的任务栏列出;而在右上角则有一个通知区以显示在背景运行的程序。不过,这些功能可以随用户喜好而更改位置、取代或甚至移除。

「GNOME 3」 在GNOME 3之前,GNOME是根据传统的桌面比拟而设计,但在GNOME 3便被GNOME Shell所取代,所有转换窗口及虚拟桌面都在“活动”画面中进行。此外,因为Mutter取代了Metacity成为默认的窗口管理器,最小化及放大按钮不再默认在名称列中。Adwaita取代了Clearlooks成为默认主题。很多GNOME核心程序都重新设计以提供更连贯的用户体验。

这些重大的改变最初引来了广泛的批评。MATE桌面环境项目由GNOME 2的源始码派生,目标为保留GNOME 2的传统界面,同时支持最新的Linux技术,例如GTK+ 3。Linux Mint团队则以开发“Mint GNOME Shell Extensions”一系列于GNOME 3上运行之插件解决此问题,这些插件使GNOME 3的界面变回传统比拟界面。最后,Linux Mint决定从GNOME 3的源代码派生另外一个桌面环境“Cinnamon”。

截至2015年,对GNOME 3的整体评价已大致转为正面。Linux发行版Debian于GNOME 3发布时把XFCE改成默认的桌面环境,但在Debian 8己改回默认使用GNOME 3。Linux创始者林纳斯·托瓦兹于2013年已改回使用GNOME 3。

轻量级桌面环境轻量级的桌面需要较少的资源,所以可以运行在大多数的硬件上,同样,包括任务栏、菜单、图标。

轻量级的桌面环境有:「MATE」、「XFCE」、「LXDE」、「Enlightenment」、「Fluxbox」、「JWM」、「IceWM」、「RazorQT」等等

其他系统MacOS(及其移动对应的iOS)实现了自己的窗口系统,即「Quartz」。当苹果公司收购NeXT,并使用NeXTSTEP构建Mac OS X时,它用Quartz取代了Display PostScript。Quartz的作者之一Mike Paquette解释说,如果苹果公司在X11中加入了对所有它想加入的功能的支持,那么无论如何它都不会与X11有太多相似之处,也不会与其他服务器兼容。

苹果的图形界面系统也是基于X协议,但它做了一些修改,并将图形界面系统集成到了内核中,而不是Unix/Linux那样仅仅作为一个应用程序,因此苹果的系统在图形界面的表现上,也远远超过了Unix/Linux,这也是苹果能占据微软之外的另一部分PC市场份额的原因。

运行在Linux内核上的Android系统则使用自己的图形系统来绘制用户界面,称为「SurfaceFlinger」。3D渲染由EGL处理。

如何理解工具包、窗口管理器、桌面环境的关系❝

目前使用的工具包主要有三种,桌面环境也是基于每一种工具包的。

这些桌面环境中的大多数都是与显示管理器、窗口管理器和一些应用程序客户端一起发布的,但是你可以混合和匹配来自不同环境的组件。使用一种桌面环境并不妨碍你使用由另一种工具包构建的应用程序或与另一种桌面环境一起发布的应用程序,所以你可以将KDE与GTK+应用程序一起使用,或者将Xfce与Motif应用程序一起使用。

现在几乎所有的新开发都是基于GTK+和Qt工具包,主要是因为它们是开源的,因此更容易被开发者使用。

然而,Motif仍然是传统应用的重要工具包,特别是在一些金融和科学利基市场。Motif和OpenMotif本质上是相同的产品,在不同的许可证下发布。虽然Open Group Public License允许OpenMotif自由发布,但这只适用于FreeBSD或Linux等开源操作系统,因此该许可证不符合开源定义或Debian自由软件指南(DFSG,)。因此,Motif并不包含在大多数开源操作系统中。Open Group曾表示打算改用更开放的许可证,但进展缓慢;与此同时,LessTif项目在GPL下重新实现了Motif的大部分功能。

Motif是最后一个被广泛使用的工具包,它基于X Intrinsics Toolkit(Xt),一个用C语言编写的面向对象的库。除了Motif之外,还有Athena项目的widget(用户界面对象)集(Xaw),Athena widgets的3D版本(Xaw3d),Sun的 OpenLook(Olit),Motif-OpenLook交叉widget(Moolit)等。所有这些都已经被废弃,但你可能会在旧程序中不时遇到它们。

窗口管理器负责控制应用程序窗口的布局和外观,使每个应用程序窗口尽量以统一、一致的方式呈现给用户,如针对X的最简单的窗口管理程序——twm(Tab Window Manager)。

工具包是进一步的封装。以X为例,它通过「xlib」提供给应用程序的API,仅仅可以绘制基本的图形单元(点、线、面等),这些基本的图形单元,要组合成复杂的应用程序,还有很多很多细碎、繁杂的任务要做。因此,一些特定的操作系统,会在X的基础上,封装出一些更为便利的GUI接口,方便应用程序使用,如GTK+、QT等等。

桌面环境是应用程序级别的封装,通过提供一系列界面一致、操作方式一致的应用程序,使系统以更为友好的方式向用户提供服务。而Linux系统比较主流的桌面环境主要包括GNOME、KDE等。

类Unix系统的GUI  unix系统 第4张

为什么窗口的外观和行为各不相同访问和使用显示资源的程序就是X客户端。它们可能与X服务器在同一台计算机上,也可能位于大厅的另一端,或者在地球的另一端。

X Window开发者的早期宗旨之一是,X应该提供一种实现GUI的机制,但不应该对GUI的操作方式施加任何政策。在X的历史上,这既是福也是祸。由于X没有定义策略,应用程序的外观一直由应用程序和工具包开发人员决定,程序之间存在巨大的差异。优点是可以自由尝试和创新,缺点是给用户带来困惑。

在一个系统中,会有三个不同的计算器:xcalc、kcalc和gnome-calculator,如图所示:

类Unix系统的GUI  unix系统 第5张

从这个屏幕截图中可以看出,每个计算器看起来都不一样:字体、颜色、按钮大小、菜单选项、图标和状态栏都因程序而异。当按钮被按下时,它们也使用不同的视觉效果。

幸运的是,工具包的开发者已经承担了许多政策问题的责任,基于同一工具包的程序一般都能以一致的方式运行。使用不同工具包的程序仍然会有不同的行为,但最流行的工具包在外观和感觉上已经趋于一致;注意3D按钮和kcalc(中间)和gnome-calculator(右)使用的字体之间的相似之处。

图中还有一点要注意:每个窗口的标题栏,边框和窗口控件都是相同的,因为它们是由窗口管理器而不是单个应用程序绘制的。

X的优点和缺点「首先看优点:」

让显示输出更加灵活 客户端可以在远程服务器上执行计算任务,而 X Server 仅负责图形显示。既可以充分利用服务器的强大性能进行运算,还不用给服务器安装桌面环境或连接显示器就能看到图像输出,这种场景在集群环境下非常常见。让 GUI 变得可移植 只有 X Server 服务端与硬件打交道,所有的客户端都与硬件无关,这让不同的平台上的移植变得很容易。风格可自定义 X 系统只负责显示图形,并不限制显示和操作的风格,因此不同的 X Window 的风格并不相同,用户可以根据自己的喜好进行选择。「缺点也很明显:」

性能X Window 的 C/S 体系(C/S 架构)设计在应用程序和显示硬件之间多加了一层软件,导致绘图效率下降,所以引起了一些批评。因此开发了若干扩展,在设备和客户机在同一个系统上时,通过在获取适当许可的情况下,以直接访问设备来改善这一问题。而在 Linux 上,一些显驱动已经部分移入内核以提高效率。

稳定性另一方面,X 也被批评为需要(或者提供)了过多的对硬件的直接访问,从而影响了系统稳定性。行为不良的显卡驱动(有时也可能是应用程序)甚至能够导致整个系统崩溃或者重启;有时即使操作系统仍在工作,它也不能继续渲染其显示(这时除了重启,缺乏好的恢复手段)。目前所有的桌面 GUI 操作系统都提供某种对硬件的直接访问,支持者认为市场已经证明为了提供图形性能牺牲一点稳定性是值得的。或许将来随着技术和用户的演化这一平衡会有所变化。

不规范的用户界面X 刻意不去规范用户界面和程序之间大多数的通信,导致出现了许多非常不同的界面,同时造成程序之间协同的困难;而客户机之间的互操作规范 ICCCM 以难以正确实现而闻名。后来的标准化尝试,如 Motif 和 CDE,也于事无补。长久以来这已经成为用户和程序员的噩梦。

类Unix系统图形界面的新架构Redhat的一个大牛不满X架构的严重老化,另起炉灶设计一个全新的X server,称为Wayland。

「Wayland」是一个通信协议,规定了显示服务器与其客户机之间的通信方式,而使用这个协议的显示服务器称为Wayland Compositor。它由Kristian Høgsberg于2008年发起,目标是用更简单的现代化视窗系统取代X Window System。Wayland协议的参考实现称为Weston,由Wayland项目组使用C语言开发。

Wayland与X Window System的最大不同在于,它规定由客户机自身负责窗口边框和装饰的绘制,并且客户机能够通过EGL以及一些Wayland特定的EGL扩展组件直接在显示存储器中算绘自己的缓冲器。窗口管理器简化成显示管理服务,专门负责算绘那些屏幕上的程序。这比X Window System中的窗口管理器要更简单、高效。

Wayland项目的源码使用MIT许可证发布。现有的Compositor例如Compiz,KWin和Mutter对Wayland都有着不同程度的支持。

Wayland和X server的区别「在X架构中」:

内核捕获鼠标点击事件并发送给X server。X server会计算该把这一事件发送给哪个窗口(事实上,窗口位置是由Compositor控制的,X server并不能够正确的计算Compositor做过特效变化之后的按钮的正确位置)。应用程序对此事件进行处理(将引发按钮更新动作)。但是,在此之前它得向X server发送绘制请求。X server接收到这条绘制请求,然后把它发给视频驱动来渲染。X还计算了更新区域,并且这条“垃圾信息”发送给了Compositor。这时,Compositor知道它必须要重新合成屏幕上的一块区域。当然,这还是要向X server发送绘制请求的。开始绘制。但是X server还会去做一些不必要的本职工作(窗口重叠计算、窗口剪裁计算等)。类Unix系统的GUI  unix系统 第6张

X-architecture

「在Wayland架构中」:

内核捕获鼠标点击事件并发送给Wayland Compositor。由于是直接发给Wayland Compositor的,所以Wayland Compositor会正确地计算出按钮的位置。同时它会把这一事件发送给按钮所在的应用程序来处理。应用程序直接渲染,无需向Wayland Compositor请求。只需在绘制完成之后向Wayland Compositor发送一条信息表明这块区域被更新了。Wayland Compositor收到这条信息后,立即重新合成整个桌面。类Unix系统的GUI  unix系统 第7张

Wayland-architecture

目前,Wayland使用OpenGL ES而不是传统的OpenGL。“从长远来看,我们需要完整的OpenGL支持,但问题是libGL会带来X的依赖性......”另一方面,使用OpenGL ES会使得Wayland更容易支持移动设备。Wayland目前并不支持网络透明性,但未来可能会支持。

「资料整理不易,请点个赞再走吧!」

评论列表暂无评论
发表评论
微信