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、HTTP这些协议一样,它只是一组规范)。任何系统能满足此协议及符合X协会其他的规范,便可称为X。
由于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的物理机上为什么窗口的外观和行为各不相同访问和使用显示资源的程序就是X客户端。它们可能与X服务器在同一台计算机上,也可能位于大厅的另一端,或者在地球的另一端。
X Window开发者的早期宗旨之一是,X应该提供一种实现GUI的机制,但不应该对GUI的操作方式施加任何政策。在X的历史上,这既是福也是祸。由于X没有定义策略,应用程序的外观一直由应用程序和工具包开发人员决定,程序之间存在巨大的差异。优点是可以自由尝试和创新,缺点是给用户带来困惑。
在一个系统中,会有三个不同的计算器:xcalc、kcalc和gnome-calculator,如图所示:
Wayland-architecture
目前,Wayland使用OpenGL ES而不是传统的OpenGL。“从长远来看,我们需要完整的OpenGL支持,但问题是libGL会带来X的依赖性......”另一方面,使用OpenGL ES会使得Wayland更容易支持移动设备。Wayland目前并不支持网络透明性,但未来可能会支持。
「资料整理不易,请点个赞再走吧!」
花粉社群VIP加油站
猜你喜欢