理解X windows

 X windows

X windows的概念:

X windows的组成:

X windows的架构:

X windows的工作过程:

X windows的启动流程:

 

Ps:(以下的讨论是基于redhat9.0+gnome

 

Xwindows的概念:

X是一种协议,大多数的linux都是基于X协议来实现图形系统;

基于X实现的GUI系统就称为X Window System,简称为X WindowX。也常把Xserver(这里指一个程序)及它提供的服务简称为X。使得图形应用程序不需要关心硬件的细节,它们只需要告诉X怎样显示即可,X监听应用程序的请求,并将这些指示转换为实际的硬件操作。但是,X并不控制这些应用程序在屏幕上的显示位置和显示内容。

Ps:不要被混乱,有时候此XX

 

 

Xwindows的组成:

X serverX clientX protocol三部分组成

(1)X Server(服务器):控制实际显示器和输入设备的程序。Server是控制显示器和输入设备(键盘和鼠标)的软件。Server可以建立视窗,在视窗中画图形和文字,响应Client程序的“需求”(requests),但他不会自己动作,只有在Client程序提出需求后才完成动作,负责显示、传递使用者输入事件(包括键盘及鼠标等硬件装置的输入)

 

例如:/usr/X11R6/bin/X(二进制文件)、  XFree86、Xorg等都是Xserver

(2)X Client(客户端):Client是使用系统视窗功能的一些应用程序。在X下的应用程序称作Client,原因是他是Server的客户,他要求Server响应他的需求完成特定的动作。

 

例如:gnomekde,等都是基于X windows上的X Client(属于桌面环境);实质上是指可以在X windows上执行的软件(包括浏览器,办公软件等)

(3)X protocolX ServerX Client之间的通信协议。从本质上来说,它是一种远程显示协议。

 

 

Xwindows的架构:

X ServerGraphic LibraryToolkitssWindow Manager、桌面环境、Internationalization(I18N)、

 

1X Server:与上面的X Server一样;

 

2Graphic Library:底层绘图函数库;即绘图相关的一组函数库

Toolkitss:窗口的抽象组件(它们被称为构件Widgets,在windows下的对应术语为控件)例如:按钮等,抽象出来,重新定义一组更高阶的函数库,再配合上一些联系的语法就成了Toolkits这东西,目前以QTGTK+等较为流行;

 

(4)Window Manager:窗口管理器。图形程序常常有一个矩形状的外观,称之为窗口,由于X只给图形程序提供了显示的硬件实现,所以需要额外的程序来管理窗口,这个程序被称为窗口管理器。它也只是一个普通的应用程序,特殊之处在于它是用来管理其他窗口的。窗口管理器控制着屏幕上的窗口,它们的样式及操作,它决定窗口的边框形式,比如最大、最小、关闭这3个按钮就是窗口管理器提供的。。。。。。例如:twm

(5)桌面环境:假如想在桌面上放置一样图标,单击它就可以启动程序等,这不是窗口管理器的职责,这时候,需要一个桌面管理器,或称桌面环境;例如:gnomekde就是桌面环境

(6)Internationalization(I18N):国际化

 

Xwindows的工作过程:

 

(1)用户通过鼠标键盘对X server下达操作命令

(2)Xserver利用Event传递用户操作信息给Xclient

(3)Xclient进行程序运算

(4)Xclient利用Request传回所要显示的结果

(5)Xserver将结果显示在屏幕上

 

例如:X-server负责管理鼠标、键盘、显卡、显示器,而X-client则负责处理程序的运行。比如说,我桌面上有一个gvim的图标,我现在移动鼠标点击了一下gvim的图标,那么X-server会告诉X-client:“用户移动了鼠标到什么位置,然后单击了一下鼠标的左键”。X-client收到这个信息以后会对这个行为做出反应,经过一番思考,它发现,我这个行为是要打开一个叫gvim的程序,于是X-client会运行gvim,然后告诉X-server:“你在显示器上给用户画出一个像gvim的东西来”。然后,我就在我的屏幕上很高兴地看见了我可爱的gvim编辑器了,当然还有伟大的DejaVu Sans Mono等宽字体。 

Xwindows的启动流程:

 

讨论X windows 的启动流程以startx作为起点

 

1vi /usr/X11R6/bin/startx

startx:(主要部分)

 

userclientrc=$HOME/.xinitrc

userserverrc=$HOME/.xserverrc

sysclientrc=/etc/X11/xinit/xinitrc           //startx没参数时候执行的Xclient

sysserverrc=/etc/X11/xinit/xserverrc        //startx没参数时候执行的Xserver

defaultclient=/usr/X11R6/bin/xterm        //上面userclientrc与sysclientrc都为

                                       //的时候执行的Xclient

defaultserver=/usr/X11R6/bin/X           //上面sysclientrc与sysserverrc都为

                                       //的时候执行的Xserver

………

xinit$client $clientargs -- $server $display $serverargs

 

startx命令(文件)的作用:指定XclientXserver的路径以及传递参数,并且以它们作为参数调用xinit程序,然后xinit就会运行XclientXserver

例如:当直接输入startx的时候(不带参数),则系统调用xinit,并且参数为:X(Xserver服务器)xinitrcXclient客服端)等;则系统会运行X以及xinitrc等;

 

Psxinit是一个二进制文件,并非是一个脚本。它的主要功能是启动一个X服务器,同时启动一个基于X应用程序。)

 

测试结果:

先进入文字界面:

                             

 

1)输入:xinit:

结果:

 

理由:因为它运行了XXserver)以及xtermXclent

 

2)输入:X或者/usr/X11R6/bin/X  (直接运行XXserver))

 

 

结果:

 

理由:因为只运行了X(Xserver),没有运行其他软件

(3)在(1)的基础上,(在xterm上)输入xeyes& 和 /etc/X11/xinit/xinitrc

①输入xeyes &的结果:

  

 

②输入twm &后再输入/etc/X11/xinit/xinitrc

 

 

理由:因为输入twm &后,即运行了窗口管理器,再输入/etc/X11/xinit/xinitrc就运行了gnome桌面管理器了

 

③直接输入/etc/X11/xinit/xinitrc:

 

 

 

ps: 在ubuntu12.04下安装enlightenment 17 (E7),然后启动enlightenment 17 (E7)

步骤:安装enlightment

1、sudo make install enlightenment

修改从文字模式启动

2、sudo vi /etc/default/grub (把quiet splash改为quiet splash text)

3、sudo update-grub

文字模式上输入命令,运行e7

4、xinit

5、enlightment_start &

结果:



结论:gnome桌面管理器是基于X Server上运行的一个软件,是可以利用窗口管理器软件(twm)关闭的;也就是说没有gnome等桌面管理器,系统还是在运行的;

至于startx,当直接输入startx的时候(不带参数),则系统会调用xinit,并且参数为:X(Xserver服务器)xinitrcXclient客服端)等;则系统会运行X以及xinitrc等;

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值