一、Linux本身没有图形界面,Linux现在的图形界面系统只是Linux下的应用程序。
图形界面并不是Linux的一部分,Linux只是一个基于命令行的操作系统,Linux和Xfree的关系就相当于当年的DOS和Windows3.0一样,Windows3.0不是独立的操作系统,它只是DOS的扩充,是DOS下的应用程序级别的系统,不是独立的操作系统,同样XFree只是Linux下的一个应用程序而已,不是系统的一部分。但是X的存在可以方便用户使用电脑。Windows95及以后的版本就不一样了,他们的图形界面是操作系统的一部分,图形界面在系统内核中就实现了,没有了图形界面Windows就不成为Windows了。但Linux却不一样,没有图形界面Linux还是Linux,很多装在Linux上的WEB服务器就根本不装X服务器。这也Windows和Linux的重要区别之一。
二、X是协议,不是具体的某个软件。
X是协议,就像HTTP协议、IP协议一样。
X协议主要由X应用程序和X服务器组成。如:我需要划个圆,X应用程序告诉X服务器在屏幕的什么地方用什么颜色画一个多大的圆,而具体的"画"的动作,比如这个圆如何生成,用什么显卡的驱动程序去指挥显卡完成等等工作是由X服务器来完成的。
X服务器还负责捕捉键盘和鼠标的动作。假设X服务器捕捉到鼠标的左键被按下了,他就告诉X应用程序:亲爱的应用程序先生,我发现鼠标被按下了,您有什么指示吗?如果X应用程序被设计成当按下鼠标左健后再在屏幕上画一个正方形的话,X应用程序就对X服务器说:请再画一个正方形,当然他会告诉服务器在什么地方用什么颜色画多大的正方形,但不关心具体怎么画----那是服务器的事情。
三、X和XFree86又是什么关系?
有了协议就需要具体的软件来实现这个协议。就好比我们有了交通法规就需要交警去根据法规维护交通秩序一样,Xfree86就是这样一个去根据法规实现协议的“交警”,他按照X协议的规定来完成X应用程序提交的在屏幕上显示的任务。当然不仅仅是某个特定的交警才可以去维护和实现这个法规,比如还可以由交通协管员来实现交通法规,必要的时候警察也可以介入,当然前提是他们都要懂得交通法规,也就是要懂得协议。所以实现X协议的软件也并不只有XFree86,XFree86只是实现X协议的一个免费X服务器软件。商业上常用MOTIF,现在还有XORG,还有很多很小的由爱好者写的小的X服务器软件。甚至可以在Windows上运行X服务器,这样你可以在Linux系统上运行一个X应用程序,然后在另一台Windows系统上显示,多么神奇!你可以用Google找到这样的X服务器软件,只不过在Linux上最常用的是XFree86,现在的Linux发行版都用Xorg了。顺便说一句,苹果电脑的图形界面用的也是X协议,而且被认为是做的最好的X协议图形界面,并且他对X协议的实施是做在系统内核里的,所以性能明显好很多,这就是为什么很多大型三维图形设计软件都是在苹果平台上的原因。
-----------------
为了便于理解,拿HTTP协议来比较:
协议是HTTP
实现这个协议的常用服务器有 apache、IIS 等
请求这些服务器传输文件的客户有IE、MOZILLA、NETSCAPE等
实现这个协议的常用服务器有Xfree86,Xorg,Xnest等
请求这些服务器来完成显示任务的客户是所有的X应用程序
-----------------
只不过HTTP协议的服务器和客户端通常都在两台不同的电脑(服务器和客户机)之间来实现,所以一般人对这个比较容易理解。而X协议的服务器和客户端程序通常在同一台电脑上,因此很多用户都感到对此很难理解。既然是协议,那么肯定和平台无关的,因此可以让X应用程序显示在任何装有X服务器的远程计算机上,甚至显示在装有Xnest服务器的Windows系统上。只不过在大多数情况下,X应用程序都用本机的X服务器,然后X服务器将显示结果输出到本机的显示器。这也是很多人不理解X是一种协议的原因。
四、X、X11和X11R6又是什么关系?
不知道初学者有没有注意到/usr/X11R6这个目录,这是XFree的默认安装目录。
X11R6实际上是XProtocol version 11 Release6(X协议第11版第6次发行)的意思。就是说目前用的X协议是第11版的,然后经过了6次小的修正。不同版本的X协议是不能通信的,就象我们现在IPV4和IPV6不能通信一样。不过不用担心,现在的X服务器软件和X应用程序都遵循X11R6。
另外XFree86 3.3.6、XFree86 4.3.6等这些是实现X协议的软件XFree86的版本号,这是初学者经常搞混的概念。
协议版本和实现协议的软件的版本----这两个概念的区别你分清楚了吗?
五、WM(Window Manager,窗口管理器)
窗口管理器的作用就是窗口的最大化、最小化、移动、关闭等。而这些不是X服务器来负责完成的。如果没有窗口管理器,X应用程序仍可以启动,但它就在屏幕中间,不能移动,不能最小化,不能最大化,没有边框等。
Xfree86自带了一个简单的窗口管理器TWM,同时窗口管理器还有GNOME和KDE等。为了更方便的了解窗口管理器的作用,我们可以做以下测试(因我使用的是Ubuntu,无法确认以下操作和命令的正确性,请有条件的朋友测试以下并给与指正)。
1. 系统(有界面的Linux)启动后,进入图形进面,我们打开一个XTERM,输入init3就可以安全的回到字符界面。
2. 再输入startx又返回到图形界面,你看到的是一个和平时使用一样的完整的图形界面操作环境,可以最大化、最小化、移动、关闭窗口等。
3.我们还是再次进入字符界面,看看吧,按Ctrl+Alt+Backspace反回字符界面。输入xinit(注意,与第2步的命令startx不同),再次启动图形界面,你看到了什么,你看到一个XTERM,而且不能移动,但是你可以在这个XTERM中输入命令打开X应用程序,如果我输入mozilla,打开浏览器,你看到的浏览器和平时有什么不同吗?它在屏幕中间,不能移动,不能最小化,不能最大化,没有边框。
为什么同样一个X应用程序会有这样的不同呢?因为我们用startx起动图形界面的时候同时也启动了一个默认的WM(即窗口管理器),如果你用KDE就起动了KDE,如果你用GNOME就起动了GNOME。但是你用xinit起动图形界面的时候却没有起动WM。
现在你明白窗口管理器的作用了吗?
4. 如果你用xinit起动图形界面并在xterm中输入twm,看看会有什么?xterm被加上了一个边框,你可以通过这个边框移动、最大化、最小化这个xterm。twm就是XFree86中自带的窗口管理器,是一个比较简陋的最简单的窗口管理器,但是他具有窗口管理器的全部特征。
5. 如果你不输入twm而输入gnome-session就可以起动GNOME或者输入startkde起动KDE。
通过以上的实验你就可以清楚的明白他们之间的关系。
另外,其它的小型窗口管理器有:windowmaker,afterstep,blackbox,fvwm,fvwm2等等都是常用的优秀窗口管理器。REDHAT9中有windowmaker,但是默认不安装,大家可以装来试试。只要xinit再wmaker&就可以用windowmaker了。
六、X协议的Client端由谁实现的呢?

XFree86是X协议的Server端软件,但Client端更多的是方便程序员使用X协议与服务器端的XFree86交互,故就产生了一个Xlib库,封装了X协议内容。如果你还觉得直接使用Xlib不方便,于是就产生了QT和GTK,对Xlib进一步封装,提供了很多控件,可以可视化的使用X协议更方便程序员的开发。

Xlib、QT和GTK的直接关系如下图:
QT是直接使用Xlib库的,GTK并为直接使用Xlib,而是使用函数库GDK和Glib。这种结构使得GTK可以更方便地移植到其它系统上,或使用与XWindows系统无关的图形库。
七、KDE、GNOME、QT和GTK直接关系
KDE和GNOME是窗口管理器,启动他们后我们进入了可视化操作(图形界面),既然需要显示图形,自然少不了与X协议的服务器软件打交道,既然QT和GTK进一步封装了X协议,并且他们提供了更为丰富的窗口及控制机制,于是在QT基础上实现的窗口管理器叫KDE,在GTK基础上实现的窗口管理器叫GNOME。还有,KDE和GNOME并不只是窗口管理器,同时提供了桌面、菜单等等。

转自: http://www.cnblogs.com/wangkangluo1/archive/2012/06/14/2548706.html

<br />X Window,<br />即X Windows图形用户接口,它并不是一个软件,而是一个协议(protocal),这个协议定义一个系统成品所必需具备的功能(就如同 TCP/IP, DECnet 或IBM的 SNA,这些也都是协议,定义软件所应具备的功能)。任何系统能满足此协议及符合X协会其他的规范,便可称为X。<br />--------------------------------------------------------------------------------------- 图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统,linux和Xfree的 关系 就相当于当年的DOS和 WINDOWS3.0一样,windows3.0不是独立的操作系统,它只是DOS的扩充,是DOS下的应用程序级别的系统,不是独立的操作系统,同样 XFree只是linux下的一个应用程序而已。而苹果电脑的图形界面用的也是X协议,而且被认为是做的最好的X协议图形界面,并且他对X协议的实施是做在系统内核里的,所以性能明显好很多,这就是为什么很多大型三维图形设计软件都是在苹果平台上的原因。 LINUX初学者经常分不清楚linux和X 之间 ,X和Xfree86 之间 ,X和 KDE GNOME 之间 是什么 关系 。常常混淆概念,本文以比较易于理解的方式来解释X, X11 ,XFREE,WM, KDE GNOME 之间 关系 。 一、linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的。 图形界面并不是linux的一部分,linux只是一个... 1, X11 是X Window System Protocol, Version 11(RFC1013),是X server和X client 之间 的通信协议。X server是xfree86/xorg驱动下的显示设备鼠标键盘统称,X client通过 X11 协议和xfree86/xorg实现的X server通信,比如,告诉它画一个左上角坐标为(x,y),宽为w,高为h的窗口,xfree86就让显示器 X11 是X Window System Protocol, Version 11(RFC1013),是X server和X client 之间 的通信协议。X server是xfree86/xorg驱动下的显示设备鼠标键盘统称,X client通过 X11 协议和xfree86/xorg实现的X server通信,比如,告诉它画一个左上角坐标为(x,y),宽为w,高为h的窗口,xfree86就让显示器把屏 在说明startx之前,我想我们应该先了解一下xinit。因为startx就是通过调用xinit启动X的。 1.1    功能 当我们安装了Ubuntu后,默认就已经安装了xinit,它位于/usr/bin下。xinit是一个二进制文件,并非是一个脚本。它的主要功能是启动一个X服务器,同时启动一个基于X的应用程序。 1.2    用法 xinit的用法为:xi 启动X主要有两种方法:一是Display Manager,如XDM、GDM、KDM,此种方法通过图形界面登录;另一种是通过xinit,此种方法适用于字符界面登录。我们常用于登录X的startx命令也是通过传递参数给xinit来启动X的,也就是说,最终启动X的是xinit。startx只是一个bash脚本。下面主要分析xinit一下初始化X的过程:   首先来看一看xinit命令的用法: 很多LINUX初学者分不清楚linux和X 之间 ,X和Xfree86 之间 ,X和 KDE , GNOME 之间 是什么 关系 .常常混淆概念,我想以比较 易 于理解的方式说明一下X, X11 ,XFREE,WM, KDE , GNOME 之间 关系 .由于本人水平有限可能存在错误,请高手指正. 一,linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的. 图形界面并不是linux的一... 转载自:https://blog.csdn.net/zhangxinrun/article/details/7332049简介LINUX初学者经常分不清楚linux和X 之间 ,X和Xfree86 之间 ,X和 KDE GNOME 之间 是什么 关系 。常常混淆概念,本文以比较易于理解的方式来解释X, X11 ,XFREE,WM, KDE GNOME 之间 关系 。linux本身没有图形界面,linux现在的图形界面的实现 LINUX初学者经常分不清楚linux和X 之间 ,X和Xfree86 之间 ,X和 KDE GNOME 之间 是什么 关系 。常常混淆概念,本文以比较易于理解的方式来解释X, X11 ,XFREE,WM, KDE GNOME 之间 关系 。一、linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的。图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统,linux和... 虽然在商业方面存在竞争, GNOME KDE 两大阵营的开发者 关系 并没有变得更糟,相反他们都意识到支持对方的重要性—如果 KDE GNOME 无法实现应用程序的共享,那不仅是巨大的资源浪费,而且将导致Linux出现根本上的分裂。从2003年开始经过两年多的努力, KDE GNOME 都已经实现高度的互操作性,两大平台的程序都是完全共享的,例如你可以在 GNOME 中运行Konqueror浏览 器、Koffice套件,也可以在 KDE 中运行Evolution和OpenOffice.org,只不过执行本地程序的速度和视觉效果会好