unix/linux中图形界面那些事
我们知道unix/linux刚开始的时候是没有图形界面的,随着时代的发展,排版、制图、多媒体应用越来越普遍了,这些需求都需要用到图形界面(Graphical User Interface)。为此,MIT在1984年开发出了X window system,X在字母表中是W(indows)的下一个字母,寓意“下一代GUI”的意思。目前为止,unix/linux上几乎所有的发行版都采用X window system来作为自己的图形界面,它已经成为事实上的unix/linux图形界面标准。
X window system,又名X,X11(现在主要的X window system大都基于其第11个版本),是一个能够跨网络和操作系统平台的图形界面。开发者在开发x时就希望,这个窗口界面不要与硬件有强烈的相关性,这是因为如果与硬件的相关性高,那就等于开发一个操作系统了,如此一来其应用性就要受到限制。故此,x是一套软件体系,而不是操作系统中的组成部分,就像浏览器不是操作系统的组成部分一样(当然微软在与网景干仗时可不管这些)。
X的软件架构
如上图所示,X使用服务器-客户端模型:每个需要显示图形界面的主机都要运行一个x server,它负责主机中各个与图形界面有关硬件设备的管理,如在显示器中显示输出,从鼠标、键盘接受输入等。同时与不同的客户端程序(x client)通信,x client指那些需要图形界面的应用程序,如浏览器、终端、视频播放器等。这里需要解释一下,这里的server,client术语是从应用的角度而不是以用户的角度来说的:X server利用自己对硬件的掌控为应用提供显示界面以及处理输入输出等服务,所以说它是服务器端,而各种应用需要使用x server提供的这些服务,他们就是客户端了。
x server和x client之间所使用的通信协议对网络来说是透明的,所以client和server可以运行在相同机器上,也可以运行在不同机器上,甚至机器本身的硬件架构和操作系统也可以不一样(如windows上的xmanager就是一个x server,它可以远程连接linux上的主机为linux上的x client提供服务,有兴趣的童鞋可以试下)。
说完了x的软件架构,下面我们就来说说x中其他几个概念。
1. X Display Manager(XDM)
display manager,又称login manager,是linux在boot进程完成之后启动的一个用于用户身份认证的图形界面,相当于文本模式下启动时让我们输入用户名和密码的shell。比较常见的有GNOME的gdm,KDE的kdm等。

display manager可以在本地也可以在远程主机上启动。如果在本地启动,display manager接下来会把x server也启动起来,这样就可以在开机时显示如上图所示的图形界面了。
如果display manager已经在远程启动了,我们在本地需要连接到远程的display manager上去,这时x server就用使用XDMCP(X Display Manager Control Protocol)协议连接到远程的display manager,请求开启一个会话,这样在本地也就出现了如上图所示画面,如果身份认证通过,display manager就退居二线,剩下的就是本地的x server与远程的x client之间互相交流了:我们通过x server(键盘、鼠标等输入设备)把我们的要求发给x client(x client与display manager 运行在同一台机器上),x client运行得到结果并将结果返回给x server,x server再通过自己管理的输出设备如显示屏等把结果显示出来,如此种种可以参看下图。

2. GNOME,KDE......
3. GNOME与X的区别与联系
关于GNOME与X之间的关系,这里有一篇文章介绍的非常清楚,现摘抄一部分如下,我就不画蛇添足了:
X11 is the window system. Gnome is a desktop environment. The difference is that Gnome works through X11. Gnome and X11 run on Linux, though, not Windows.
Basically, X11 is what displays everything. It's the graphical shell that connects you to the operating system. None of the applications you run ever send anything directly to the screen - they need to tell X11 what they want to display and let it do the work for them.
X11 draws and moves windows and responds to input from the keyboard and mouse. That's pretty much it. Everything else is taken care of by the desktop environment. What that means is that the look and feel of the windows and the way those windows behave are all decided by which desktop environment you're using (Gnome, KDE, XFCE, etc.).
The desktop environments all have their own graphics libraries (reusable chunks of code) that they use, along with APIs (Application Programming Interfaces) which allow programmers to use those libraries when they create GUI applications. This way programmers don't have to recreate commonly used functions and elements from scratch, and the whole operating system has a more standardized look.
参考链接:http://en.wikipedia.org/wiki/X_Window_System
http://en.wikipedia.org/wiki/X_display_manager_(program_type)
https://wiki.archlinux.org/index.php/Display_Manager
https://wiki.debian.org/DisplayManager
http://en.wikipedia.org/wiki/GNOME
http://stackoverflow.com/questions/17251293/what-is-the-relationship-between-x11-and-gnome
unix/linux中图形界面那些事的更多相关文章
- Linux中图形界面和文本模式相互切换
1.默认开机进入文本模式 如果想让开机自动进纯文本模式, 修改/etc/inittab 找到其中的 id:5:initdefault: 这行指示启动时的运行级是5,也就是图形模式 改成3就是文本模式了 ...
- python在linux制作图形界面(snack)
snack是一个用于在linux制作图形界面(GUI)的模块,该模块由c编写,而且redhat的系统都自带这个模块. 1.获取模块 虽然redhat系统会自带这个模块,但是直接去import snac ...
- Oracle 12cR1 RAC 在VMware Workstation上安装(中)—图形界面安装
Oracle 12cR1 RAC 在VMware Workstation上安装(中)—图形界面安装 1.1 图形界面安装 1.1.1 安装GRID 安装日志:/u01/app/oraInvento ...
- [转]unix/linux中的dup()系统调用
[转]unix/linux中的dup()系统调用 在linux纷繁复杂的内核代码中,sys_dup()的代码也许称得上是最简单的之一了,但是就是这么一个简单的系统调用,却成就了unix/linu ...
- 虚拟机-linux系统中图形界面和命令行界面切换
linux系统中图形化界面和命令行界面之间的切换可以分为两种,临时性切换和永久性切换. 临时性切换即切换后只对本次生效,系统重启后界面还是默认界面. 永久性切换即切换后系统开机后永远处于的界面. 临时 ...
- widows本地-xshell实现远程连接linux服务器图形界面
本地环境远程连接linux图形界面,常用的实现工具有,VNC.Puty.Xshell等,这里我们用的xshell manager: Xmanager简介:Xmanager是一个运行于 Windows平 ...
- Linux:远程到linux的图形界面
一般linux都没有安装图形界面,可以通过VNC服务来实现步骤如下: 一.安装vnc server1.查看是否安装vncrpm -q vnc-serverpackage vnc is not inst ...
- weblogic11g 安装——linux 无图形界面
weblogic11g 安装——linux下无weblogic安装图形界面 注意:此次安装,没做server.ip .系统规划 目的:学习weblogic11g 在linux下 无图形安装的过程 j ...
- kali Linux 文本图形界面切换遇到的怪问题
前段装了在Virtual Box上装一个Kali Linux玩,然后设为了开机进入文本界面,后来遇到无法上网的问题,网上找到解决方法,说是NAT地址转换和host-only双网卡顺序问题,按照网上的说 ...
随机推荐
- NSIS总结1——以管理权限运行
在Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" 到第一个Section之间插入一行代码 RequestExecutionLevel admin ...
- Gridview用法大总结
Gridview用法大总结啦!精彩效果截图加详细源代码注释,需要的朋友赶紧过来看看吧:走过路过,千万不要错过哦! 由于篇幅限制,代码就不贴啦,要下载源码的请点击这里:希望朋友们能给出一些好的建 ...
- spring源码 — 一、IoC容器初始化
IoC容器初始化 注意:本次的spring源码是基于3.1.1.release版本 容器:具有获取Bean功能--这是最基本功能,也是BeanFactory接口定义的主要行为,在添加了对于资源的支持之 ...
- 使用 multiprocessing.dummy 执行多线程任务
# -*- coding: utf-8 -*- # from multiprocessing import Pool 多进程 from multiprocessing.dummy import Poo ...
- 今天踩过的坑——structs和phpmyadmin
phpmyadmin 错误:缺少 mcrypt 扩展解决mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/sudo php5enmo ...
- cmd for 循环拷贝文件
这几天忙活部署测试环境, 中途需要拷贝 文件, 直接贴code吧: ::/定义原路径 set source=seventrat_test_backend,seventrat_test_frontend ...
- django关闭debug后,静态文件的处理
Django框架仅在开发模式下提供静态文件服务.当我开启DEBUG模式时,Django内置的服务器是提供静态文件的服务的,所以css等文件访问都没有问题,但是关闭DEBUG模式后,Django便不提供 ...
- VMware Workstation安装RedHat Linux 9
RedHatLinux是目前世界上使用最多的Linux操作系统.因为它具备最好的图形界面无论是安装.配置还是使用都十分方便.下面我将介绍使用VMware Workstation安装RedHat Lin ...
- 【转】Java之WeakReference与SoftReference使用讲解
Java 2 平台引入了 java.lang.ref 包,其中包括的类可以让您引用对象,而不将它们留在内存中.这些类还提供了与垃圾收集器(garbage collector)之间有限的交互. 1.先“ ...
- yum源的相关事项
有时候需要某些个别的包,不想使用yum的关联更新的时候,找到rpm包是个问题,但是163可以提供: http://mirrors.163.com/centos 1.先看看centos版本:cat /e ...
