gnome

display manager  :gdm

window manager  :metacity

x-server

x-client

[root@localhost gdm]# xlsclients

localhost.localdomain  gnome-session

localhost.localdomain  gnome-settings-daemon

localhost.localdomain  metacity

localhost.localdomain  gnome-panel

localhost.localdomain  nautilus

localhost.localdomain  wnck-applet

localhost.localdomain  trashapplet

localhost.localdomain  polkit-gnome-authentication-agent-1

localhost.localdomain  gdu-notification-daemon

localhost.localdomain  nm-applet

localhost.localdomain  gnome-power-manager

localhost.localdomain  gpk-update-icon

localhost.localdomain  gnome-volume-control-applet

localhost.localdomain  bluetooth-applet

localhost.localdomain  gnome-screensaver

localhost.localdomain  gdm-user-switch-applet

localhost.localdomain  notification-area-applet

localhost.localdomain  clock-applet

localhost.localdomain  gnome-help

localhost.localdomain  gnome-terminal

localhost.localdomain  gedit

localhost.localdomain  firefox

[root@localhost ~]# gnome-control-center,gnome-terminal

gnome packages

gdm-2.30.4-39.el6.x86_64

metacity-2.28.0-23.el6.x86_64

nautilus-2.28.4-19.el6.x86_64

gnome-vfs2-2.24.2-6.el6.x86_64  GNOME VFS is currently used as one of the foundations of the Nautilus file manager.

NetworkManager-0.8.1-43.el6.x86_64

gnome-panel-2.30.2-14.el6.x86_64

gnome-terminal-2.31.3-8.el6.x86_64

gdm 这个包  gnome特定的

/usr/sbin/gdm  脚本文件

/usr/sbin/gdm-binary  ELF文件

xorg-x11-xinit 这个包  通用的x-windows

/usr/bin/startx  脚本文件

/usr/bin/xinit  ELF文件

http://blog.sina.com.cn/s/blog_5f5716580100yddd.html  it's very important and useful.

一、linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的:

图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统,linux和Xfree的关系就相当于当年的DOS和WINDOWS 3.0 一样,windows 3.0不是独立的操作系统,它只是DOS的扩充,是DOS下的应用程序级别的系统,不是独立的操作系统,同样XFree只是 linux下的一个应用程序而已。不是系统的一部分,但是X的存在可以方便用户使用电脑。WINDOWS 95及以后的版本就不一样了,他们的图形界面是操作系统的一部分,图形界面在系统内核中就实现了,没有了图形界面windows就不成为windows 了,但linux却不一样,没有图形界面linux还是linux,很多装linux的WEB服务器就根本不装X服务器。这也WINDOWS和linux 的重要区别之一。

苹果电脑的图形界面用的也是X协议,而且被认为是做的最好的X协 议图形界面,并且他对X协议的实施是做在系统内核里的,所以性能明显好很多,这就是为什么很多大型三维图形设计软件都是在苹果平台上的原因。

既然是协议,那么肯定和平台无关的,因此可以让X应用程序显示在任何装有X服务器的远程计算机上。甚至显示在装有Xnest服务器的windows系 统上。只不过在大多数情况下,X应用程序都用本机的X服务器,然后X服务器将显示结果输出到本机的显示器。这也是很多人不理解X是一种协议的原因。

五,X服务器和WM(window manager 窗口管理器)之间是什么关系。

平时大家起动图形界面是怎么启动的呢? 如果一开始就进入图形界面,可打开一个XTERM输入init 3,就可以安全的回到字符界面。

先输入以下命令: # 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。

(综合)xorg-xserver相关完全解析

http://blog.csdn.net/clozxy/article/details/5488699  startx启动过程

http://bbs.51cto.com/thread-1080570-1-1.html    最小化安装oralce所需要的桌面

linux图形界面又称x系统,其主要包含如下几个部分:

a)xserver

b)显示管理器(Display Manager) 例如(gdm kdm xdm等)

c)窗口管理器(Window Manager) 例如(metacity ,fluxbox等)

d)DM 和 WM之上的一些图形应用程序

在使用中一般都是b,c,d三者集合起来构成一个完整的集成工作环境,例如KDE ,GNOME等,这就是我们平时所说的广义上的xclient

a)xserver 主要提供基本的显示接口共xclient使用,并将用户的操作等也反映给xclient,是xclient与硬件的一个中间层。xserver相关的两个主要部分是

(1) xorg.conf

xorg.conf是X Server的主要配置文件,它包含一个当前系统的硬件资源列表。X Server就是根据这些硬件资源“组织”出基本的图形能力。xorg.conf文件在/etc/X11/xorg.conf,主要包含几个字段:

Files:          X系统使用的字体存放目录(字体的具体使用由FontConfig工具主持)

InputDevice:    输入设备,如键盘鼠标的信息

Monitor:        显示器的设置,如分辨率,刷新率等

Device:         显示卡信息

Screen:         由Monitor和Device组装成一个Screen,表示由它们向这个Screen提供输出能力

ServerLayout:   将一个Screen和InputDevice组装成一个ServerLayout,在具有多个显示设备的系统中,可能有多个Screen和多个ServerLayout,用以实现不同的硬件搭配。

在最近的xorg版本中,X Server已经开始自动侦测硬件,现在的xorg.conf已经都成了默认名称。具体细节还待查,但基本原理还是不变的。

(2) X session(X会话)

X session是指X server启动后直到X server关闭之间的这段时间。这期间一切跟X相关的动作都属于X session的内容。管理X session的程序称为Display Manager,常听说的gdm或kdm就是gnome/kde所分别对应的Display Manager。

开启一个X session,也就是开始了图形界面的使用。在开启的过程中,Display Manager会对用户进行认证(也就是用户名密码的输入),运行事先设置好的程序(比如scim输入法就是这个时候启动的)等等。

这个开启过程要执行的一系列操作都可以在/etc/X11/Xsession以及/etc/X11/Xsession.d/目录下看到,其他还有一些配置文件如Xsession.options, Xresource等,都是执行的X session的初始化过程。仔细阅读这些脚本或配置文件,可以帮助你更好地理解X

b)Display Manager

上面说过,Display Manager(后简称DM)是管理X session的程序,常见的有gdm, kdm, xdm等。对于默认进入X界面的Linux系统,必须将DM程序在开机时执行,即:/etc/rc2.d/S13gdm。下面我们从手工启动X的过程,看一下DM为我们做了哪些工作。

如果没有设置DM在开机时运行的话,手动启动X使用startx命令。man startx

可以知道,startx的作用可以看作是Display Manager的一种隐性实现。它使用xinit命令,分别根据/etc/X11/xinit/xinitrc和/etc/X11/xinit/xserverrc中所指定的设置唤起X。

其中,xserverrc执行X server的运行任务;xinitrc则运行Xsession命令。从/etc/X11/Xsession脚本的内容可以看出,它也就是进入/etc /X11/Xsession.d/目录轮询地执行所有脚本。很明显,这些也就是前面所说的Xsession初始化工作。

综合起来说,Display Manager完成三个任务:1, X Server的启动; 2, X session的初始化; 3, X session的管理。

c)Window Manager

X Server提供了基本的图形显示能力。然而具体怎么绘制应用程序的界面,却是要由应用程序自己解决的。而Window Manager(桌面管理器,后简称WM)就是用来提供统一的GUI组件的(窗口、外框、菜单、按钮等)。否则,应用程序们各自为政,既增加了程序开发的负担,不统一的桌面风格对视觉也是不小的挑战。

WM的启动由DM控制,在gdm的登录窗口,我们可以进行选择。常见的WM有:Metacity(Gnome默认的WM), fluxbox, fvwm, E17等。

d)X Clients

最后,就是X Client了。X客户端程序,顾名思义,就是使用X服务的程序。firefox,gedit等等都属于X Client程序。X Client部分值得考虑一下的就是DISPLAY环境变量。它主要用于远程X Client的使用。该变量表示输出目的地的位置,由三个要素组成:

[host]:display[.screen]

host指网络上远程主机的名称,可以是主机名、IP地址等。默认的host是本地系统,你可以在自己系统上echo $DISPLAY看一下。

display和screen分别代表输出画面的编号和屏幕的编号。具体细节由于硬件的缺乏,还有待进一步研究。

独立安装x window所需要的每一个包

yum install xorg-x11-server-Xorg

yum install xorg-x11-server-utils

yum install xorg-x11-utils

yum install xorg-x11-xinit

yum install xorg-x11-apps

yum install xorg-x11-twm

yum install xterm

xorg-x11-drv-fbdev-0.4.3-2.el6.x86_64

xorg-x11-drv-intel-2.21.12-2.el6.x86_64

组合安装x window

yum groupinstall "X Window System"

yum groupinstall GNOME Desktop Environment

yum groupinstall KDE Desktop Environment

安装完毕后,执行startx,即可进行X window(KDE)。

启动X主要有两种方法:

一是Display Manager,如XDM、GDM、KDM,此种方法通过图形界面登录;

一种是通过xinit,此种方法适用于字符界面登录。我们常用于登录X的startx命令也是通过传递参数给xinit来启动X的,

也就是说,最终启动X的是xinit。startx只是一个bash脚本。

xinit启动过程

先看手册页    man xinit

xterm是一个x window system上的终端模拟器;

xinit是启动Xserver和Xclient的。xinit会运行一个xinitrc的文件,这个文件你可以自己编写,可以把xterm写进xinitrc的。

xinit 的用法为: xinit [[client] options ] [-- [server] [display] options] 。其中 client 用于指定一个基于 X 的应用程序, client 后面的 options 是传给这个应用程序的参数, server 是用于指定启动哪个 X 服务器,一般为 /usr/bin/X 或 /usr/bin/Xorg , display 用于指定 display number ,一般 为 0 ,表示第一个 display , option 为传给 server 的参数。

如果不指定 client , xinit 会查找 HOME ( 环境变量 ) 目录下的 .xinitrc 文件,如果存在这个 文件, xinit 直接调用 execvp 函数执行该文件。如果这个文件不存在,那么 client 及其 options 为:  xterm -geometry +1+1 -n login -display :0 。

如果不指定 server , xinit 会查找 HOME( 环境变量 ) 目录下的 .xserverrc 文件,如果存在这个文件, xinit 直接调用 execvp 函数执行该文件。如果这个文件 不存在,那么 server 及其 display 为:  X :0 。如果系统目录中不存在 X 命令,那么我们需要在系统目录下建立一个名为 X 的链接,使其指向真正的 X server 命令( Ubuntu 下为 Xorg )。

下面是几个关于 xinit 应用的例子:

1)xinit /usr/bin/xclock -- /usr/bin/X :0

该例子将启动 X server , 同时将会启动 xclock 。请注意指定 client 或 server 时,需要用绝对路径,否则 xinit 将因无法区别是传给 xterm 或 server 的参数还是指定的 client 或 server 而直接当成是参数处理。

2)在 HOME 下新建 .xinitrc 文件,并加入以下几行:

xsetroot -solid gray &

xclock -g 50x50-0+0 -bw 0 &

xterm -g 80x24+0+0 &

xterm -g 80x24+0-0 &

twm

当 xinit 启动时,它会先启动 X server ,然后启动一个 clock ,两个 xterm ,最后启动窗口管理器 twm 。

请注意:

最后一个命令不能后台运行,否则所有命令都后台运行的话 xinit 就会返回退出,同样的,除最后一个命令外都必须后台运行,否则后面的命令将只有在该命令退出后才能运行。

看到这里,眼尖的人或许早以看出 xinit 的功能完全可以由脚本来实现,例如要启动 X Server 和一个 xterm ,就像 xinit 默认启动的那样,只需要在新建一个脚本或在 rc.local 中加入:

X&

export DISPLAY=:0.0

xterm

这个实现完全正确,然而却并没有完全实现 xinit 所具有的功能, xinit 所有的一项功能就是当最后一个启 动的 client (如上面第二个例子中的 twm 窗口管理器)退出后, X 服务器也会退出。而我们的脚本实现中当我们退出 xterm 后并不会退出 X server 。

因为 startx 就是通过调用 xinit 启动 X 的。 xinit 是一个二进制文件,并非是一个脚本。它的主要功能是启动一个 X 服务器,同时启动一个基于 X 的 应用程序。

因此startx的用法跟xinit一样:startx [ [ client ] options ... ] [ -- [ server ] options ... ]

startx的几种启动方式

由对 startx 脚本的分析,我们可以知道 startx 主要有三种启动方式:

a) 一种是自己指定要启动的 client 和 server , 例如: startx /usr/bin/xclock -- /usr/bin/X :0 ;

b)一种是通过在 $HOME 下新建 .xinitrc 文件来指定要启动的多个 client 和 .xserverrc 来指定要启动的 server;

c)还有一种是直接输入 startx 而不指定参数,这也就是我们启动 gnome 桌面的方法。

在 c 这种启动方法中, startx 脚本会先去看系统目录( /etc/X11/xinit/ )下的 rc 文件是否存在,如果不存在就会用默认的 xterm 和 /usr/bin/X 来启动 xinit 。显然, startx 启动的不是 xterm ,而是 gnome 桌面,因此 gnome 的启动是通过系统文件 /etc/X11/xinit/xinitrc 来指定的。

综上所述, startx 的默认启动过程为: startx 调用并将系统文件 /etc/X11/xinit/xinitrc 和 /etc/X11/xinit/xserverrc 作为参数传给 xinit , xinit 就会先执行系统文件 /etc/X11/xinit/xserverrc 以启动 X Server ,然后执行 /etc/X11/xinit/xinitrc ,而 xinitrc 则会执行脚本 /etc/X11/Xsession ,而 Xsession 则会按顺序调用执行 /etc/X11/Xsession.d 目录下的文件,从而最终调用了 gnome-session 这个用于 启动 GNOME 桌面环境的程序

启动Xserver

user@host:~$X :0 &

在Xserver上启动xterm

user@host:~$xterm -display :0 &

在Xserver上的xterm中执行

user@host:~$metacity &

以初始化一个简单的窗口管理器

在Xserver上的xterm中即可执行firefox等需要X环境的程序

图形2d,3d加速简介

为了是linux下图形更加流畅,必须使用加速。常用的加速方法如下

加速常见有三种方式

a)ShadowFB

ShadowFB是xserver自带的与体系结构无关的2D加速方式,它将系统framebuffer复制一份,并且在拷贝回framebuffer中实现图形旋转等操作,这样可以起到一定加速作用,但是效果不好。

b) XAA

XAA全称XFree86 Acceleration Architecture,是由 Harm Hanemaayer 在1996年写的一个显卡硬件2D加速的驱动结构,目前大多数的显卡去动均支持这种驱动模式

c) EXA

EXA是X.Org发起的用于取代XAA加速的驱动结构,修改的宗旨是是XRender更加好用。

历史上对2D 和3D加速已经做了区分,2D加速主要使用的是XAA结构,3D加速主要是通过DRM(Direct Rendering Manage) 提供.而EXA提供了比XAA更好集成XRender的结构,同时也提高了XAA的2D加速效果。

EXA采用的方法是通过实现对OpenGL的加速以实现同时对2D,3D图像的加速,这样2D图像就可以看作是3D图像的一个子集。

一个基于Xlib的简单例子了解Client流程

Xlib是对X协议的的一个简单的封装,可以让程序员不用了解细节而编写图形相关程序。实际上程序员直接调用Xlib的很少,更多使用的是

GTK+ ,QT等图形库。这些又是基于Xlib的图形库。

linux服务器 xwindow,linux服务之X windows相关推荐

  1. C++后端开发程序员应该彻底搞懂的【libevent网络库】,libevent组件构成以及编程要领丨Linux服务器开发丨服务端编程

    90分钟搞懂libevent网络库 1. 服务端事件组成 2. libevent组件构成以及编程概要 3. memcached是如何使用libevent 视频讲解如下,点击观看: C++后端开发程序员 ...

  2. Linux服务器出现503 服务不可用错误怎么办?

    ​ HTTP 503 服务不可用错误代码表示网站暂时不可用.无论您是网站访问者还是管理员,503 页面都很麻烦.尽管该错误表明存在服务器端问题,但对于访问者和网络管理员来说,有一些可能的解决方案.本文 ...

  3. 什么是linux服务器?linux服务器优点有哪些?

    知识拓展1:什么是linux服务器? Linux服务器就是采用Linux系统的网络服务器,同时也有采用windows的服务器,作用是类似的.而Linux并不是一个特定的系统,而是使用Linux内核的系 ...

  4. linux服务器拓扑图,Linux服务器作为网关的DNS分离解析服务(CentOS 7版本)

    一.DNS分离解析服务拓扑图 由Linux服务器作为网关,通过NAT地址转换的功能,根据不同网络的来访者,解析相同的域名从而得到不一样的IP地址.即网络被分为私网(局域网)和公网(广域网)两个部分,N ...

  5. linux服务器开机管理,Linux服务器开机自动启动服务或脚本的方法

    由于种种原因我们需要重启服务器或断电重启,服务都得手动一个一个启动太过麻烦,所以专门了解开机自启脚本的设置方法. 方式一: 直接在脚本/etc/rc.d/rc.local(和/etc/rc.local ...

  6. 从FTP服务器下载文件部署更新linux服务器上的服务

    作为软件测试人员,经常要发布开发的集成包.本来嘛,更新个服务,没什么大不了.但是集成包打出来,要更新的服务有9个(分别部署在三台服务器上),并且以后还会增加.如果手动更新,每次更新时间都得20分钟以上 ...

  7. linux服务器搭建ngrok服务-实现内网穿透(转载,自己搭建成功)

    1.ngrok依赖gcc 和 golang的安装已经存在请忽略 # 安装 gcc   yum -y install gcc   yum -y install gcc-c++   # 安装 golang ...

  8. linux服务器视窗,linux窗口管理器介绍

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

  9. linux服务器lvs,Linux的企业-LVS(Linux虚拟服务器)及FULLNAT设置

    一.Linux Virtual Server (linux虚拟服务) lvs工作于IOS七层模型的传输层,通过对TCP.UDP.SCTP.IPsec ESP.AH这些工作在四层的协议的支持,根据目标地 ...

最新文章

  1. 三十之惑–面霸的八月(第一部分)
  2. MFC里ON_COMMAND_RANGE消息映射的ID问题
  3. 龙将加速浏览器_《看门狗:军团》即将开启预载,迅游加速器支持下载和联机加速 18183手机游戏网...
  4. Linux从入门到精通系列之sed命令使用方法
  5. Java锁详解之改进读写锁StampedLock
  6. ajax async
  7. Python使用LDAP做用户认证
  8. 移动端系列讲解之字体单位
  9. 使用meta来刷新网页效果
  10. SpringBoot 开启关闭自动任务配置(EnableScheduling )
  11. idea jsp页面没有html提示,解决IDEAJSP没有代码提示问题的几种方法.pdf
  12. python def函数调用内容_基本的python,def函数和文本菜单的调用
  13. 为什么我不再和别人比较了?
  14. 篮球比赛JAVA代码_Java编程实现NBA赛事接口调用实例代码
  15. 64位微型计算机64指技术指标,\\\64位微型计算机\\\中的64,是指下列技术指标中的...
  16. 平衡小车—TB6612FNG与直流电机控制教程
  17. python加减乘除_python加减乘除
  18. 【个人记录 | 研二预答辩】
  19. Zabbix报警机制 、 Zabbix进阶操作 、 监控案例
  20. 家用计算机如何连无线网,电脑上怎么连接wifi_怎样连接自己家的wifi-win7之家

热门文章

  1. react fireworks 烟花特效
  2. openwrt 软路由 docker安装青龙面板(基础版)
  3. 河南工学院计算机专科学校排名,河南工学院最好的专业是什么_哪些比较热门...
  4. HDOJ 2186-悼念512汶川大地震遇难同胞——一定要记住我爱你
  5. 鸿蒙系统有指关节截屏吗,华为p40pro怎么设置截屏
  6. 微服务之服务降级Hystrix
  7. 个体门店小程序推广教程归纳
  8. 为什么要使用独立游戏服务器
  9. AISHELL-4 多通道中文会议语音数据库
  10. vue父子,兄弟组件传值