很多 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 服务器说 : 请再画一个正方形 , 当然他会告诉服务器在什么地方用什么颜色画多大的正方形 , 但不关心具体怎么画 -- 那是服务器的事情 .  
那么协议是需要具体的软件来实现的 , 这就是下面我要讲的 :

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

四、X和X11R6又是什么关系 ?  
不知道初学者有没有注意到 /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图形界面基本知识(X11、WM、gnome、KDE等的关系)相关推荐

  1. linux图形界面基本知识(X、X11、Xfree86、Xorg、GNOME、KDE之间的关系)

    LINUX初学者经常分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系.常常混淆概念,本文以比较易于理解的方式来解释X,X11,XFREE,WM,KDE,GNO ...

  2. 基本linux加载图形界面,linux图形界面基本知识(X、X11、Xfree86、Xorg、GNOME、KDE之间的关系)...

    LINUX初学者经常分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系.常常混淆概念,本文以比较易于理解的方式来解释X,X11,XFREE,WM,KDE,GNO ...

  3. linux图形界面能,linux图形界面基本知识

    很多LINUX初学者分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系.常常混淆概念,我想以比较易于理 解的方式说明一下X,X11,XFREE,WM,KDE,G ...

  4. linux图形界面鼠标变成小手_扔掉鼠标,用键盘控制一切~

    如今大家使用计算机,必不可少地需要鼠标和键盘.鼠标的存在极大地方便了用户在使用个人计算机的过程中的操作,特别是windows操作系统. 但是当以linux作为个人操作系统的时候,肯定会意识到一定情况下 ...

  5. 【linux】图形界面基础知识(X、X11、GNOME、Xorg、KDE的概念和它们之间的关系)

    转载自:https://blog.csdn.net/zhangxinrun/article/details/7332049 简介 LINUX初学者经常分不清楚linux和X之间,X和Xfree86之间 ...

  6. 转载linux图形界面编程基本知识(X11, xorg, gdm/gnome)

    水平有限,有错误请指正: 在windows上运行的X11 server,通常我们会使用Xmanager.putty+Xming等等 Fluxbox是一个基于GNU/Linux的轻量级图形操作界面 图 ...

  7. linux 图形界面 x x11 gnome xorg kde 之间的关系

    LINUX初学者经常分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系.常常混淆概念,本文以比较易于理解的方式来解释X,X11,XFREE,WM,KDE,GNO ...

  8. linux图形界面总结---X、Xorg、WM、QT、GTK、KDE、GNOME的区别与联系

    目录 1. linux图形界面 2. X协议 3. Xfree86  Xorg 4. WM(window manager:窗口管理器) 5. X协议的Client端实现 6. KDE.GNOME.QT ...

  9. 【转】linux图形界面编程基本知识

    原文:https://blogs.gnome.org/raywang/2007/10/11/linux%E5%9B%BE%E5%BD%A2%E7%95%8C%E9%9D%A2%E7%BC%96%E7% ...

  10. linux图形界面编程基本知识

    很多LINUX初学者分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系.常常混淆概念,我想以比较易于理 解的方式说明一下X,X11,XFREE,WM,KDE,G ...

最新文章

  1. 机器学习加深了“知识”和“理解”之间的鸿沟
  2. android调节声音大小
  3. 【JavaSE_06】Java中的数组(array)-思维导图
  4. Go进阶(3): 函数+闭包+defer
  5. CSS设置文本字体居中
  6. window安全模式的用途
  7. spring事物配置
  8. tidyverse —— readxl包
  9. 在Seismic.NET下用最少的语句写出一个剖面显示程序
  10. Epson Perfection V370 Photo图片扫描自动控制
  11. python课堂笔记之django-day02(11)
  12. 缠论中第49课:没必要参与操作级别及以上级别的下跌与超过操作级别的盘整,如何理解与应用?
  13. linux boot efi 大小,/boot/efi。
  14. linux 跨网段ping,Linux中跨网段ping问题
  15. 青蛙Pro绑定商户号(windows)
  16. 微型计算机数据处理的基本单位,计算机内部数据处理的基本单位是()。
  17. 14.3.6 创建组合索引
  18. 如何用 Minio SDK 访问滴滴云对象存储
  19. 论文笔记—LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain
  20. SpringBoot整合Jpa配置多数据源

热门文章

  1. 信息系统项目管理师 进度管理计算题
  2. 爆肝一周,我开源了ChatGPT 中文版接口,官方1:1镜像支持全部 官方接口
  3. 开讲啦:Chap 06 利用数组处理批量数据
  4. 一个让你了解手机产业链全貌的PPT
  5. 20200411 T2 画画(数边框涂色正方形个数)
  6. 【PLANS】最近寒假在家计划,每天总结更新记录。(push myself)
  7. SparkContext 源码分析
  8. 组件和API使用,实现页面跳转
  9. 合宙 724UG 模块UART学习
  10. 曝光SEO高手藏在内心的SEO秘籍