unix/linux中图形界面那些事

  咱们知道unix/linux刚开始的时候是没有图形界面的,随着时代的发展,排版、制图、多媒体应用愈来愈广泛了,这些需求都须要用到图形界面(Graphical User Interface)。为此,MIT在1984年开发出了X window system,X在字母表中是W(indows)的下一个字母,寓意“下一代GUI”的意思。目前为止,unix/linux上几乎全部的发行版都采用X window system来做为本身的图形界面,它已经成为事实上的unix/linux图形界面标准。php

  X window system,又名X,X11(如今主要的X window system大都基于其第11个版本),是一个可以跨网络和操做系统平台的图形界面。开发者在开发x时就但愿,这个窗口界面不要与硬件有强烈的相关性,这是由于若是与硬件的相关性高,那就等于开发一个操做系统了,如此一来其应用性就要受到限制。故此,x是一套软件体系,而不是操做系统中的组成部分,就像浏览器不是操做系统的组成部分同样(固然微软在与网景干仗时可无论这些)。html

X的软件架构

  如上图所示,X使用服务器-客户端模型:每一个须要显示图形界面的主机都要运行一个x server,它负责主机中各个与图形界面有关硬件设备的管理,如在显示器中显示输出,从鼠标、键盘接受输入等。同时与不一样的客户端程序(x client)通讯,x client指那些须要图形界面的应用程序,如浏览器、终端、视频播放器等。这里须要解释一下,这里的server,client术语是从应用的角度而不是以用户的角度来讲的:X server利用本身对硬件的掌控为应用提供显示界面以及处理输入输出等服务,因此说它是服务器端,而各类应用须要使用x server提供的这些服务,他们就是客户端了。linux

  x server和x client之间所使用的通讯协议对网络来讲是透明的,因此client和server能够运行在相同机器上,也能够运行在不一样机器上,甚至机器自己的硬件架构和操做系统也能够不同(如windows上的xmanager就是一个x server,它能够远程链接linux上的主机为linux上的x client提供服务,有兴趣的童鞋能够试下)。shell

   说完了x的软件架构,下面咱们就来讲说x中其余几个概念。windows

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再经过本身管理的输出设备如显示屏等把结果显示出来,如此种种能够参看下图。网络

  咱们能够发现,在第二种状况下,x server就至关于图形化界面的telnet客户端,而display manager 至关于图形化界面的telnet服务端,不是么?:-)

2. GNOME,KDE......

  GNOME和KDE都是运行在unix/linux操做系统之上的一个桌面环境,其中GNOME是基于 GTK+ toolkit的(KDE是基于Qt toolkit的),它个性化了本身的界面风格,很是容易辨认,并且因为界面比较nice,已是最近桌面系统的主流,它主要包括两大类:
  1.GNOME桌面环境,它包括了一些图形用户界面的实现细则,和一些核心图形界面应用如浏览器等。
  2.GNOME开发平台,它是一个为linux桌面及移动图形应用开发者提供的扩展平台,包括相应库文件以及开发API等。
  上文所说的GDM就是GNOME的一部分,一旦GDM经过了身份认证请求,它就会启动GNOME为用户提供图形化界面了,固然咱们也能够从文本模式中经过startx命令来启动GNOME。

 3. GNOME与X的区别与联系

  关于GNOME与X之间的关系,这里有一篇文章介绍的很是清楚,现摘抄一部分以下,我就不多此一举了:架构

X11 is the window systemGnome 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. app

参考连接: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

相关文章
相关标签/搜索