X,X11 的意思(汇总)
X是协议,不是具体的某个软件,
X并不是UNIX核心的一部分,而是在核心之上的一个应用程序。X提供一种协议,用来产生图形用户界面GUI。
X不会负责很多事情,它只负责绘制 (Drawing),移动窗口(Moving windows),和鼠标、键盘交互。
X11 是 Unix 事实上的图形系统标准。Linux,各种 BSD 版本和多数的商用 Unix 都采用它,
CDE,KDE 和 GNOME 等桌面环境都运行在它之上。
在Linux使用的是一个叫XFree86的免费X11实现来提供相同的功能。不过由于一些License的问题,
现在 X11的实现已经变成XOrg了。在Linux里面可以到/etc/X11/xorg.conf看到其配置文件。
X11R6 是 X Protocol version 11 Release 6
(X协议第11版第六次发行)的意思,就是说目前用的X协议是第11版的,然后经过了6次小的修正.
不同版本的X协议是不能通信的.现在的X服务器软件和X应用程序都遵循X11R6.
XFree86 3.3.6 XFree86 4.3.6等这些版本是实现X协议的软件XFree86的版本号.
以上为协议版本和实现协议的软件的版本的区别.
1. XFree86
如果你对你的显卡了解很清楚, 可以直接开始, 要不然先用SuperProbe测一下你的显卡的
芯片, 把型号稍微记一下, 省得呆会儿麻烦. 假如你的显卡很新的话, 最好用最新版本, 对新
显卡支持得好一些. XFree86的好处是各种distribution一般都带, 还有好多不同OS的版本,
可以在安装时就装上配置
X11和XFree86的关系, 现在的X Window System由The OpenGroup负责开发(X11R6.4),
X11R6主要由X11的库和sample X11 clients组成, 而XFree86主要就是开发i386上的
X Server(与硬件相关的). 但在它们distribute时都集成在一起了,
如X11R6.4带了XFree86 3.3的Server, 而XFree86中也把X11R6的lib/clients集成在
一起了
XFree86 Servers基本上就是分XF86_Mono(单色), XF86_VGA16(16色VGA), XF86_SVGA
(256色或更多), XF86_Accel(加速卡, 如Mach*, S3*等)等几类. XFree86 Server的
特点就是一个很大的ELF文件(2M左右), /usr/X11R6/bin下以XF86_打头的就是了,
然后一般是将X做个符号连接到你当前的X Server上.
XFree86的配置有这几个(注意大小写):
(1) 基于命令行的xf86config
是纯命令行的, 一般安装X时都会装上, 按其提示一步步走就可以了
但由于没有Back功能, 选错了只好重来
(2) 图形界面的XF86Setup
XF86Setup是个GUI的配置工具, 第一次开始时需要VGA16 Server(你总得有个default
X Server才能有GUI吧?), 比xf86config稍微好用一些, 好歹是GUI的
(3) 基于dialog的Xconfigurator
假如用RedHat的话, 还有一个文本方式下基于对话框的也不错, 就是Xconfigurator
这个东西挺方便的, 安装RedHat时就是用它配的
这些工具作用就是生成一个Server的配置文件XF86Config. 其实关键是要支持
你的显卡硬件, 这个通了, XF86Config就好办了, 改改总能对的. 要注意这个文件存放
的地方, RedHat是/etc/X11/XF86Config, Debian/Slackware是/etc/XF86Config.
它的 结构也是很清楚的, 就是搞得有点太复杂了, 你也可以手工编辑它来修改. 如你想改
Virtual Screen, 那就查Virtual(vi下/Virtual), 然后找到与你的Server对应的
Virtual改了就行了, 还有分辨率什么的, 都可手动改
2. Accelerated X 4.1
假如你的显卡特新(如AGP), 那XFree86也许就不行了, 用Accelerated X 4.1吧, 这是
个很不错的commercial X Server, 但已经有crack了. 它的最大好处在于其网页上不断
地会有最新显卡的updates, 而且都是免费download的! 它的安装就比XFree86简单多了,
解开tgz, 看一下README, 运行安装程序, 输入serial就OK
AX的程序装在/usr/X11R6/lib/X11/AccleratedX 下面, 它很模块化的, 显卡, 显示器,
键盘, 鼠标几部分, 不象XFree86那样搞成一个大的ELF文件. 另外它的两个可执行文件
/usr/X11R6/bin/下面: Xaccel(Server) Xsetup(配置程序)
它的config文件放在/etc/Xaccel.ini中, 只有很短的几行, 比XF86Config清晰简单多了
运行Xsetup时可加参数-text/graphics来分别进文本/GUI配置环境, 不加参数它检测是
否有/etc/Xaccel.ini来进不同环境.
3. MetroLink X Server
MetroX Server在Official的RedHat和InfoMagic的CD中是带的, 安装时可以选择
安装它或XFree86 Server. 程序都装在/usr/X11R6/lib/X11/Metro下面, 也是模块化的.
但这个Metro X Server感觉没有AX 4.1支持的显卡新, 但也有它的用处(如我的老
S3 868在AX 4.1上只有256色, 而用MetroX就有16bit色了 *_*)
可执行文件 /usr/X11R6/bin/下面: Xmetro(Server) configX(配置程序)
那个configX是个Motif界面的GUI配置程序, 会自动启动VGA方式的Xmetro Server
来运行
Window Manager
在多数图形环境中,窗口边框的外观(标题栏,关闭按钮,等)如何显示是由系统定义的。
X11 则不是这样。在 X11 中,窗口的框架(也称为"装饰")是由一个称为窗口管理器的单独程序提供的。
一般认为,窗口管理器只是另外一个客户程序;它用通常的办法启动,并与 X 服务器按同样的方法通信。
有很多不同的窗口管理器供我们选择。
WM的功能可以用简单的一个词来概括--中转。比如一个程序要求X11绘制一个窗口,这个请求会首先被重定向到WM,
WM来确定如何绘制窗口的标题栏(caption)和边框(Frame),在X系统中,这两个元素是由WM决定的。
因此用户在窗口上拖拉和缩放也是由WM来做出反应。大多数WM还支持窗口最小化,也就是变成一个在窗口底部的图标。
这项工作不属于X系统核心协议之列,因此是一些WM自己实现的。
大多数WM还处理一些其他的任务,比如显示根窗口(root window),这个就是Linux里面的桌面,和windows的桌面是topmost window
同样的概念。WM还处理在根窗口上的键盘和鼠标操作,比如Alt-F4关闭窗口之类的功能。
GNOME,KDE,xFce等
这些都是桌面环境(Desktop Envrionment),他们运行于WM之上,提供更完善的桌面集成功能,更自由的定制操作系统使用方式。
X上面的桌面环境与windows,Mac OS X等不同,它可以自由组合,自由更改。
大多数的DE由窗口管理器(WM),文件管理器(FM),一组主题(Theme)与其他用来管理桌面的程序和库组成。
KDE和GNOME是LINUX里最常用的图形界面操作环境.
KDE是K Desktop Environment 的缩写.他不仅是一个窗口管理器,还有很多配套的应用软件和方便使用的桌面环境,比如任务栏,
开始菜单,桌面图标等等.
GNOME是GNU Network Object Model Environment的缩写.和KDE一样,也是一个功能强大的综合环境.
另外在其它UNIX系统中,常常使用CDE作为这样一个环境.
-- KDE项目是两年前由德国自由程式员发起的,他们采用了挪威Troll Tech软件公司的Qt图像界面库作为基础研发平台,
C++为主要研发语言。然而,因为KDE使用的Qt库所遵循的软件版权协议QPL并不是真正的免费软件协议,以纯免费软件构成
的Linux发行版Debian就拒绝使用KDE。当然,最终用户并不太关心软件许可问题,对他们来说易用性和强大的功能是最重要的。
因此,KDE还是得到了广泛的应用。
----
为了和KDE相抗衡,世界最大的免费软件组织GNU(即免费软件基金会)发起了GNOME桌面环境项目。----
和KDE不同,GNOME采用了符合GPL免费软件协议的GDK、GTK作为其底层研发平台,也就是说GNOME是真正意义上的GPL
免费软件
---- GNOME在GTK的基础上扩充了许多额外的功能,研发了一系列GNOME程式通用的函数库和程式,因此具有统一的界面风格和使用习惯。
----
为了实现各个软件之间甚至基于网络的组件复用,GNOME采用了通用的CORBA组件模型,而KDE虽然前期也采用了CORBA技术,但后来由于速度和复
杂性等原因,逐渐转而采用了自己独有的KPart组件模型。这使得KDE在和其他软件的兼容性方面大打折扣。GNOME由于坚持使用CORBA,使得他在
这方面具有相当大的优势。为了更好地使用CORBA模型,GNOME在ORBit(一套轻量级的CORBA实现)基础上研发了Bonobo组件层,不仅简
化了编程工作,而且实现了灵活的组件复用。GNOME甚至能够通过网络使用其他平台下的CORBA组件。这一点真正体现了GNOME名称的精髓所在。