X Window系统
X Window系统即X11,是一种位图显示的视窗系统,是在Unix、类Unix以及OpenVMS等操作系统上建立图形用户界面的标准工具包和协议,诞生于1984年的麻省理工学院,创始人是Bob Scheifler和Jim Gettys。
X Window系统的客户程序可以远程控制电脑执行计算任务,使该系统充分发挥了X服务器在显示上的优势。
基本信息
- 创始人
Bob Scheifler、Jim Gettys
- 出现时间
1984年
- 别称
X视窗系统
- 中文名
X11
- 外文名
X Window System
系统概述
X 仅为 GUI 环境构建提供了基本的框架,在屏幕上绘图和移动窗口,以及与鼠标和键盘交互。X 并没有定义 UI 的呈现方式 — 独立的客户程序窗口管理器处理这部分功能。正因为如此,以 X 为基础环境的视觉样式变化非常地多,不同的程式可能彻底地展现不同的界面。X 以 " 网路通透性" 为特色:应用程序("客户端" 应用程序)所执行的机器,不一定是使用者本地的机器(显示的 "服务端")。X 的 " 客户端 " 和 "服务端 " 字眼的使用与人们通常的认识不太相同," 服务端" 是使用者本地的显示而不是远端的机器。 X 在 1984年起始于 MIT(麻省理工学院) 。这个协定版本——X11,是在 1987年9月 所提出的。该方案是由 X 基金会所领导,这个参考实作是版本 11 release 7.6,且在 MIT 执照和相似的表示许可执照下是自由软件 。
X模式
详见: X Window系统的协议和架构 X基于客户端——服务器 模型。一个X服务器与多个客户端程序通讯。服务器接受对于图形输出(窗口)请求并反馈用户输入(键盘、鼠标、触摸屏)。服务器可能是一个能显示到其他显示系统的应用程序,也可能是控制某个PC的视频输出的系统程序,还可能是特殊硬件。 术语客户端-服务器——你的终端是"服务器",而应用程序是 "客户端"——这一概念经常困扰X的新用户,因为看起来似乎正好相反。但X采纳了应用程序而非最终用户或者硬件的视角:本地的X显示程序提供显示服务,所以它扮演了服务器;远端应用程序使用了该服务,所以它是客户端。 运行在用户的工作站上,而从该用户的计算机上控制的一个系统更新软件运行在远端服务器上。注意,这个远端程序运行时好像就在本地一样。 服务器与客户端之间的通信协议的运作对计算机网络是透明的: 客户端和服务器可以在同一台计算机跑,也可以不是, 或许其计算机系统结构和操作系统也不同,但都能运行。客户机和服务器还能够使用安全连接上在互联网 上计算机安全地通讯。 为了使远端客户程序显示到本地服务器,用户一般需要启动一个终端模拟器和到达远端计算机的 telnet 或者ssh ,令其显示到用户计算机,(例如在运行bash的远端计算机上export DISPLAY=[用户的计算机]:0)然后启动客户端。 然后客户端就会连接到本地计算机,而且远端应用程序会显示到本地屏幕并被本地输入设备所控制。与之对应,本地计算机上也可以执行一个连接到远端计算机的小助手程序并在那里启动期望的应用程序。 实际的远端客户端的例子有:图形化管理远程计算机;在远端Unix计算机上运行计算密集的仿真程序并将结果显示到本地的Windows桌面计算机; 以一套显示器、键盘和鼠标控制同时运行在多台计算机上的图形化软件。
设计原则
1984年,Bob Scheifler和 Jim Gettys 制订了X的早期原则:
- 除非没有它就无法完成一个真正完整的应用程序,否则不要增加新的功能。
- 决定一个系统不是什么和决定它是什么同样重要。与其去适应整个世界的需要,宁可使得系统可以扩展,这样可以与上层相容的方式来满足新增需求。
- 只有根本没有实例才会比只有一个实例更糟。
- 如果问题没有完全弄懂,可能最好根本就不要去解决它。
- 如果预期要用百分之九十的努力去完成百分之十的工作,应该用更简单的办法解决。
- 尽量避免复杂性。
- 提供机制而不是策略。特别地,把用户接口策略放在用户手里。
第一条原则在设计X 11时被修改为:”除非你知道有真正的应用程序需要它,否则不要增加新功能“。X 基本上一直遵循这些原则。例子的实现考虑到了扩展和对扩展的改进来进行开发,同时保持和1987年的最初协议的兼容性。
使用界面
X11没有规范应用程式的使用者界面,例如:按钮 、选单和视窗的标题栏等等。这些都由视窗管理器(window managers)、GUI 构件工具包 、桌面环境(desktop environments)或者应用程序指定的GUI(譬如 POS机 )等等诸如此类的用户软件来提供。由此造成多年以来"典型"的X界面惊人的多样化。 视窗管理器用于控制视窗程式的位置和外观。其界面类似Microsoft的Windows或者Macintosh(例KDE的 Kwin 或者GNOME的 Metacity ),但是控制机制截然不同(例如,X提供的基本视窗管理器 twm )。视窗管理器可能只是一个骨架(例如 twm),也可能提供了全套桌面环境的功能(例如 Enlightenment )。 大多数用户使用X时包括了整套桌面环境,有视窗管理器、各种应用程式和协同一致的界面。最流行的是 GNOME 和 KDE 。Unix的标准环境是通用桌面环境(CDE)。而 freedesktop积极致力于促进互相竞争的X桌面之间桌面和及其组件的相容性。
实现
X的标准实现是参考实现 。由于其许可证比较宽松,出现了大量自由软件或者专有软件实现。商业的Unix商家倾向于采用参考实现并使之适应其硬件,例如高度定制并加入专有的扩展。屏幕显示 GIMP 在没有X window 系统情况下运行上。屏幕显示X 的应用程序(xeyes,xclock和 xterm )与原生的Windows应用程序(日期和时间,计算机) 共享屏幕。直到 2004年 ,在自由的 类Unix 系统上最常见的X变体是 XFree86 。顾名思义,它源于X的 80386 兼容的PC机的 移植 ,到了上世纪90年代末期成为X的技术堛新的主要来源和X开发的事实标准ry/003945.html。但是从2004年起,最流行的X服务器映XFree86的 fork —— 服务器 。 虽然X一般和Unix联系在一起,X服务器也能够自然地存在于其他图形环境Hewlett-Packard 的 OpenVMS操作系统用X加上 CDE 做为起标准桌面环境,称为 DECwindows 。 苹果公司 的 Mac OS X v10.3 (Panther)包括 Apple X11 ,它基于XFree86 4.3和X11R6.6,并能和 Mac OS X 更好地集成。微软的 Windows 本身不包含对X的支持,但是有不少第三方的实现可用,其中有自由软件如Cygwin/X、 Xming 、WeirdMind ss/weirdmind/和 WeirdX ,也有专有软件如 WiredX、Exceed 和 X-Win32 。他们多用于控制远程X客户端。 当X 出现在其他窗口系统(例如Windows或者Ma OS)时,X系统一般是"rootless"的,就是宿主窗口系统担当根窗口(背景和相应菜单)并管理寄生的X窗口的位置。但也有些服务器,例如Exceed,能够在宿主系统上创建根窗口使得远程客户端能够做为分离的窗口在其上显示。