linux图形界面基本知识(X11、WM、gnome、KDE等的关系)

很多 Linux 初学者分不清楚 Linux X 之间 , X Xfree86 之间 , X KDE, GNOME 等之间是什么关系 常常混淆概念 , 我想以比较易于理解的方式说明一下 X,X11,XFREE,WM,KDE,GNOME 等之间的关系 . 由于本人水平有限可能存在错误 , 请高手指正 .  

一、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 协议一样 . 这个概念很多初学者甚至学习 LINUX 有一定时间的人都混淆 , 一个基于 X 的应用程序需要运行并显示内容时他就联接到 X 服务器 , 开始用 X 协议和服务器交谈 . 比如一个 X 应用程序要在屏幕上输出一个圆 那么他就用 X 协议对 X 服务器说 : ! 我需要在屏幕上画一个圆 .X 应用程序只负责告诉 X 服务器在屏幕的什么地方用什么颜色画一个多大的圆 , 而具体的 " " 的动作 , 比如这个圆如何生成 , 用什么显卡的驱动程序去指挥显卡完成等等工作是由 X 服务器来完成的 .X 服务器还负责捕捉键盘和鼠标的动作 , 假设 X 服务器捕捉到鼠标的左键被按下了 , 他就告诉 X 应用程序 : 亲爱的应用程序先生 , 我发现鼠标被按下了 , 您有什么指示吗 ? 如果 X 应用程序被设计成当按下鼠标左健后再在屏幕上画一个正方形的话 ,X 应用程序就对 X 服务器说 : 请再画一个正方形 , 当然他会告诉服务器在什么地方用什么颜色画多大的正方形 , 但不关心具体怎么画 -- 那是服务器的事情 .  
那么协议是需要具体的软件来实现的 , 这就是下面我要讲的 :  

三、XXFree86的关系 .  
有了协议就需要具体的软件来实现这个协议 . 就好比我们有了交通法规就需要交警去根据法规维护交通秩序一样 .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 (hyper text transmission protocol)  
实现这个协议的常用服务器有 :apache IIS    
请求这些服务器传输文件的客户有 :IE ,MOZILLA ,NETSCAPE .  
协议是 X  
实现这个协议的常用服务器有 Xfree86 ,Xorg ,Xnest   
请求这些服务器来完成显示任务的客户 : 所有的 X 应用程序 .  
只不过 HTTP 协议的服务器和客户端通常都在两台不同的电脑 ( 服务器和客户机 ) 之间来实现 , 所以一般人对这个比较容易理解 . X 协议的服务器和客户端程序通常在同一台电脑上 , 因此很多用户都感到对此很难理解 . 既然是协议 , 那么肯定和平台无关的 , 因此可以让 X 应用程序显示在任何装有 X 服务器的远程计算机上 甚至显示在装有 Xnest 服务器的 windows 系统上 . 只不过在大多数情况下 ,X 应用程序都用本机的 X 服务器 , 然后 X 服务器将显示结果输出到本机的显示器 . 这也是很多人不理解 X 是一种协议的原因 .  

四、XX11R6又是什么关系 ?  
不知道初学者有没有注意到 /usr/X11R6 这个目录 , 这是 XFree 的默认安装目录   
X11R6 
实际上是  X Protocol version 11 Release 6  
(X
协议第 11 版第六次发行 ) 的意思 , 就是说目前用的 X 协议是第 11 版的 , 然后经过了 6 次小的修正 . 不同版本的 X 协议是不能通信的 . 就像我们现在 IPV4 IPV6 不能通信一样 , 不过不用担心 , 现在的 X 服务器软件和 X 应用程序都遵循 X11R6.  
另外 XFree86 3.3.6 XFree86 4.3.6  等这些版本是实现 X 协议的软件 XFree86 的版本号 . 这是初学者经常高混淆的概念 .  
协议版本和实现协议的软件的版本 -- 这两个概念的区别你分清楚了吗 ?  

五、X服务器和WM(window manager 窗口管理器)之间是什么关系 .  
平时大家起动图形界面是怎么启动的呢 ?  
如果你是一开己就进入图形界面那就太遗憾了 . 因为你错过了了解 X 服务器起动过程的好时机 . 不过没关系 . 你打开一个 XTERM 输入 :  
init 3  
就可以安全的回到字符界面 .  
好了 , 等做完以下实验你就完全明白 X WM(window manager  窗口管理器 ) 之间是什么关系了 .  
先输入以下命令 :  
#startx  
起动图形界面 , 你看到的是一个和平时使用一样的完整的图形界面操作环境 .  
你可以最大化 , 最小化 , 移动 , 关闭窗口等 .  
ctrl+alt+backspace 反回字符界面 .  
输入 :  
#xinit  
再次启动图形界面 , 你看到了什么 , 你看到一个 XTERM. 而且不能移动 . 但是你可以在这个 XTERM 中输入命令打开 X 应用程序 , 如果我输入 :  
#mozilla  
打开浏览器 , 你看到的浏览器和平时有什么不同吗 ? 他在屏幕中间 , 不能移动 , 不能最小化 , 不能最大化 , 没有边框 .  
为什么同样一个 X 应用程序会有这样的不同呢 ? 因为我们用 startx 起动图形界面的时候同时也启动了一个 WM( 即窗口管理器 ), 如果你用 KDE 就起动了 KDE, 如果你用 GNOME 就起动了 GNOME. 但是你用 xinit 起动图形界面的时候却没有起动 WM.  
现在你明白窗口管理器的作用了吗 ? 他的作用就是最大化 , 最小化 , 移动 , 关闭窗口等 . 而这些不是 X 服务器来负责完成的 .  
如果你用 xinit 起动图形界面并在 xterm 中输入 twm, 看看会有什么 ?  
xterm
被加上了一个边框 , 你可以通过这个边框移动 , 最大化 , 最小化这个 xterm,twm 就是 XFree86 中自带的窗口管理器 , 是一个比较简陋的最简单的窗口管理器 , 但是他具有窗口管理器的全部特征 .  
如果你不输入 twm 而输入 gnome-session 就可以起动 GNOME  
或者输入 startkde 起动 KDE.  
通过以上的实验你就可以清楚的明白他们之间的关系
  
六、关于KDE GNOME  
KDE
GNOME LINUX 里最常用的图形界面操作环境 , 他们不仅仅是一个窗口管理器那么简单 , KDE K Desktop Environment  的缩写 . 他不仅是一个窗口管理器 , 还有很多配套的应用软件和方便使用的桌面环境 , 比如任务栏 , 开始菜单 , 桌面图标等等 .  
GNOME
GNU Network Object Model Environment  的缩写 . KDE 一样 , 也是一个功能强大的综合环境 .  
另外在其它 UNIX 系统中 , 常常使用 CDE 作为这样一个环境 .  
其它的小型窗口管理器有 :  
window maker,after step,blackbox,fvwm,fvwm2,
等等都是常用的优秀窗口管理器 .REDHAT9 中有  window maker  但是默认不安装 , 大家可以装来试试 . 只要 xinit wmaker& 就可以用 windowmaker .  

七、Linux图形界面层次关系总结   
Linux
本身 -->X 服务器 <-[ 通过 X 协议交谈 ]-> 窗口管理器 ( 综合桌面环境 )-->X 应用程序 .

你可能感兴趣的:(linux,linux,图形,服务器,服务器软件,windows,桌面环境)