一.x-window系统简介
x-window(也常称为x11或x)系统是一种以位图方式显示的软件视窗系统,最初是1984年麻省理工学院的研究,之后变成unix、类unix、以及openvms等操作系统所一致适用的标准化软件工具包及显示架构的运作协议。x window系统通过软件工具及架构协议来建立操作系统所用的图形用户界面,此后则逐渐扩展适用到各形各色的其他操作系统上。现在几乎所有的操作系统都能支持与使用x。更重要的是,今日知名的桌面环境——gnome和kde也都是以x window系统为基础建构成的。
二.x-window的发展历史
知晓过去才能明白现在,预见将来,我们需要清楚的了解x-window的发展历史,尽管这有些曲折。
1、 前身:
事实上,早在x出现前已有几个位图式的软件显示系统已经存在,例如帕洛阿尔托研究中心(施乐公司)提出的alto(1973年)和star(1981年)、苹果计算机提出的lisa(1983年)和麦金塔(1984年)、在unix世界也有雅典娜工程(1982年)和rob pike的blit终端机(1984年)。
1983年之前称为w-window系统的窗口系统是x的真正前身(在拉丁字母里面 x 直接接在 w 后面)。w-window系统运行于系统v之上,w使用一个支持终端机和图形窗口的网络协议,而服务器维护显示的列表。
2、 起源:
x-window于1984年在麻省理工学院(mit)电脑科学研究室开始开发的,当时bob scheifler正在发展分散式系统(distributed system),同一时间dec公司的 jim gettys 正在麻省理工学院athena计划的一部分。两个计划都需要一个相同的东西——一套unix机器上运行优良的视窗系统。因此合作关系开始展开,他们从斯坦福(stanford)大学得到了一套叫做w的实验性视窗系统。因为是根据w视窗系统的基础开始发展的,当发展到了足以和原先系统有明显区别时,他们把这个新系统叫做x。
3、版本发展历史
(注:x11协议设计由scheifler领导,并在nascent internet的开放邮件列表上广泛讨论。于是x成为最早的较大规模的开源软件项目之一)
4、 对x-window的管理历史
1)mit x协会与x协会公司
1987年,随着x11取得明显成功,mit希望免除x的管理责任。但是1987年6月与9个厂商举行会晤,这些厂商表示他们相信为了避免 x 由于商业因素而分裂,需要中立方的参与。1988年1月,x协会(x consortium)做为非营利厂商团体而成立,由scheifler担任主管,而keith packard担任高级开发人员,确保 x 能持续以中立超然的立场提供商业与学术教育所需的开发。1993年,x协会公司(x consortium, inc.;非营利性质的公司)做为mit x协会的接继者而成立
2)开放团体
1997年中,x consortium将x的管理交给开放团体(the open group),而它是1996年由开源软件基金会(open software foundation;osf)和x/open合并成立的厂商团体。
3)x.org
1999年5月开放团体组建了x.org。x.org指导了x11r6.5.1之前的版本发布。在此期间x的开发死气沉沉。2003年,随着linux的流行x被大量安装。但是x.org几乎无声无息,活跃的开发由xfree86承担。
4)xfree86
在19*至1990年期间,托马斯?罗尔把x11r4分类器上提供的x服务器程序的源代码下载到运行速度仅为33mhz的386pc 上,成功运行了被他称为是x38611.1的x服务器。这就是xfree86的雏形。
1992年后多数技术创新都发生在xfree86项目中。1999年,由于众多对于xfree86在linux上应用有兴趣的硬件厂商的推动,并也已经成为最普及的x版本,xfree86成为x.org的荣誉成员(不付费)。
但是自2003年开始,xfree86内部却发生了争论。它被认为太教堂式了,如同它的开发模式;开发者不能通过cvs做提交,而厂商被迫维护大量补丁。2003年3月,自从最初的mit x consortium结束之后就参加xfree86的keith packard由于被认为态度不良而被驱逐
x.org和xfree86开始讨论能够有助于x开发的重组jim gettys早在2000年就热心于开放的开发模式。gettys、packard和其他几个人开始讨论有效管理x和开放式开发的细节。
最终就像是x11r*许可证争议的回响,xfree86于2004年2月在更加严格许可证下发布了4.4 。许多依赖x的项目认为该许可证无法接受,特别是它和gnu general public license不兼容。这引起一场论战,许多人认为到了该对xfree86分叉(fork)的时候了,许多linux发行版,包括fedora、gentoo都纷纷在最新的版本中使用x.org基金会的发布代替xfree86。
5)x.org基金会
2004年年初x.org基金会成立。这意味着 x 在管理上的根本转变。1988年以来 x 的管理者(包括过去的x.org)都是厂商组织,而基金会由软件开发者领导,采用依靠外部参与的集市模式的社区开发。其成员身份对个人开放,法人成员则成为赞助者。x.org还开始同freedesktop.org密切合作
三.x的设计原则
x的设计原则,早在最初仍在麻省理工学院的阶段(1984年)就已经成形,由bob scheifler和jim gettys两人制订出x最早的开发、强化、改进原则,原则大体如下:
1、除非没有它就无法完成一个真正完整的应用程序,否则不用增加新的功能。
2、决定一个系统不是什么和决定它是什么同样重要。与其去适应整个世界的需要,宁可使得系统可以扩展,如此才能以持续兼容的方式来满足新增需求
3、只有完全没实例时,才会比只有一个实例来的糟。
4、如果问题没完全弄懂,最好不要去解决它
5、如果可以通过10%的工作量得到90%的预期效果,应该用更简单的办法解决。
6、尽量避免复杂性。
7、提供机制而不是策略,有关用户界面的开发实现,交给实际应用者自主。(这和驱动开发的思想一脉相承)
之后,上述原则中的第一项原则在设计x11时被加以修改,修订成:“除非已有真正的应用程序,真的需要x为其修订、增订等支持,否则不会为x增加新功能。”x基本上一直遵循这些原则,参考实现的扩展及改进也是以此原则的角度来着手,也因为奉行上述原则,使至今的最新版x仍能与最初(1987年)发布的协议标准近乎完全兼容。
这些原则性的东西短短几句话,就为一个庞大项目奠定了一个良好的基调和发展方向,使x问世以来经久不衰,没有这几个原则是做不到的。
四.x-window的功能
x-window提供了一组非常底层的服务,客户端程序发送请求给x-window, x window根据请求完成相应服务。通过这些服务,客户端程序可以构建期望的用户界面。根据不同的功能,可以把这些服务分为以下几大类:
1、处理输入
x-window从键盘和鼠标接受输入,这些输入数据被当作”事件”传送给适当的客户端程序。至于哪个窗口应该接受到这些事件,是依赖于窗口管理器的(窗口管理器实际上也是一个客户端),典型的事件包括按键,鼠标移动,鼠标按下/放开等。
输入设备往往是与硬件平台相关的,而且又是独占资源,所以用x-window管理是理所当然的。应用程序通常不需要关心具体的设备,只要处理相应的事件就行了,像mouse和笔点可能发出同样的事件,而应用程序不用区分它们。输入事件也可以通过xtest扩展,由软件模拟出来的(通常用来实现软件键盘)
2、按层次形组织窗口
x-window提供服务让客户端程序创建/销毁窗口,所谓的窗口就是屏幕上的矩形区域,它是可以层层嵌套的,有很多操作可以作用于窗口(如,查询或改变窗口的大小和位置等),x-window的主要功能之一就是负责管理这种按层次形组织的窗口。
不过x-window管理这些窗口是被动进行的,由窗口管理器根据用户的行为决定。它请求x-window做相应的动作,比如移动窗口,调整窗口的大小,改变窗口的前后关系等等。第一次接触x-window时,得知窗口管理器是一个普通的客户端时,我觉得惊讶,这种设计真是太先进了,其实它正是遵循了提供机制而不是策略这一原则。
现在已经有很多窗口管理器的实现可用,它们提供不同的风格和功能,有的用于pc,有的用于嵌入式系统,像matchbox就是在嵌入式上比较流行的,像nokia的n770/n800就是用的matchbox。
3、提供图形操作
x-window提供了一些基本的画图操作,如画直线、矩形、圆弧和多边形等。这些图形的颜色、线宽、填充类型都可以由客户端程序指定。x-window同时提供了许多位图操作,这些位图操作可以作用于了窗口的各个区域。
x-winwod还会充分挖掘硬件的加速特性,像填充、画直线和图像叠加等操作,如果硬件支持相应的加速功能,就可以通过硬件实现,否则就用软件实现。
4、提供文本和字体操作
x-window提供了字体相关的操作。客户端程序可以请求x-window在指定的区域用指定的字体显示指定的字符串,当然在此之前应该请求x-window加载字体,加载后客户端程序可以得到关于字体的一些信息。
实际上,这一功能由于客户端字体绘制的流行,而大大弱化了,现在的字体差不多都是在客户端绘制好后,再通过x render扩展显示到x-window去的。在fontconfig/freetype/pango/cairo的帮助,在客户端绘制字体更容易使用。
名词解释:
位图:
位图(bitmap),又称光栅图(raster graphics),是使用像素阵列来表示的图像,每个像素的色彩信息由rgb组合或者灰度值表示。根据颜色信息所需的数据位分为1、4、8、16、24及32位等,位数越高颜色越丰富,相应的数据量越大。其中使用1位表示一个像素颜色的位图因为一个数据位只能表示两种颜色,所以又称为二值位图。通常使用24位rgb组合数据位表示的的位图称为真彩色位图。
视窗系统:
视窗系统(windowing system) 是“使用视窗当作它的主要象征之一”的图形使用者接口的构成元件。更为明确的说,是桌面环境的构成元件。视窗系统支撑着视窗管理员的实现(implementation);对于“图像硬件(graphics hardware)、指向装置(pointing devices)比如鼠标与键盘等装置”提供基本支持。绘制鼠标光标,一般也与视窗系统相关。
从程式设计师的观点来看,视窗系统是作出绘图的基本单位,比如字型绘制,或是在屏幕上划线,有效地提供绘图硬件的一种抽象概念。
视窗系统能让电脑使用者同时与数个程式一起工作。每个程式在他自己的视窗中执行,也就是屏幕上的矩形之中。大部份的视窗系统允许视窗重叠,且提供使用者执行标准的操作,像是移动/改变视窗尺寸,把视窗送到前景/背景,和最小化/最大化一个视窗。
有些视窗系统,像是 x,有先进的能力比如网络通透性,允许使用者在远端机器上执行图形的应用程式。
雅典娜工程:
雅典娜工程是mit、dec以及ibm的一个联合工程,历时八年,于1991年6月30日告一段落。该工程意图建立一个计算机环境,容纳多达一万台工作站,以及各种硬件。用户可以访问其中的任何工作站,存取任何文件、程序,但在用户界面以及服务传递上,看起来不会有大的区别。
这个工程产生了许多现在被广为使用的技术,比如x window system、kerberos。雅典娜工程开发的其他技术包括xaw部件工具箱、zephyr通知服务、第一个即时通讯服务,以及hesiod名,还有目录服务。
华为Mate 20系列性能卓越领先荣获年度最强旗舰手机奖
“机器人清道夫”可以清除污水中的有机物质
基于TinyXml的嵌入式Linux
嵌入式工控主板与计算机PC主板的奇妙差异
研发突破性的纳米级电子“纹身”传感器可以附着在单个细胞上
X-Window系统介绍
探讨机器人行业的未来发展与时代机遇
台积电已将华为海思原本预订的第四季先进制程产能撤销
中国移动竞夺CDMA集团用户方案曝光
Harmony 鸿蒙应用级变量的状态管理
仓储环境监控系统监控内容与功能
区块链需要哪些舍和得
TCP 协议深度解析
STM32 SysTick配置函数
IXXAT NT系列高稳定性网关网桥解决方案
用于二维波束扫描的集成铌酸锂光学相控阵
AC7840x三电机控制应用解决方案
雷蛇宣布将推出支持触觉反馈的耳机
如何用铅笔判断电视机内有无高压
AI给生活带来了什么便利