📄 0590xwindow.htm
字号:
X Window System</span><br>
<div class=block2>
在开始之前,还是得就这个话题来说明说明。一般来说,如果您的 Linux 主机定位为
Network Servers 的话,那么由于 Linux 里面的主要的服务的设定档都是 ASCII
纯文字的格式档案,相当的容易设定的,所以啊,根本就是不需要 X Window 存在呢!
因为 X Window 仅是 Linux 系统内的一个软体而已啊!<br><br>
但是万一您的 Linux 主机是用来作为您的 Desktop 桌上电脑用的,
嘿嘿!那么 X Window 对您而言,就是相当重要的一个咚咚了!因为我们日常使用的办公室软体,
都需要使用到 X Window 图形的功能呢!此外,以鸟哥的例子来说,
我之前接触到的数值分析模式,需要利用图形处理软体来将资料读取出来,
所以在那部 Linux 主机上面,我一定需要 X Window 的。此外,由于处理的软体有两种,
其中一种需要使用到 3D 的加速功能。但 Linux 预设的显示卡驱动程式对 3D 的加速功能有限,
此时,俺就得要重新安装显示卡驱动程式呢!伤脑筋~<br><br>
回归到主题上面,除了主机的用途决定您是否需要启用 X Window 之外,
主机的『配备』也是您必须要考虑的一项决定性因素。
因为 X Window 如果要美观,可能需要功能较为强大的 KDE 或 GNOME 等视窗管理员(Window
Manager)的协助,但是这两个庞然大物对于系统的要求又很高,
除了 CPU 等级要够,RAM 要足之外,显示卡的等级也不能太差~
所以,早期的主机可能对于 X Window 就没有办法具有很好的效率了。<br><br>
也就是说,您如果想要玩 X Window 的话,特别需要考虑到这两点∶
<ul>
<li><span class=text_import1>稳定性</span>∶
X Window 仅是 Linux 上面的一个套件 (或者也可以称为服务),
您不能对 X Window 与 Linux 的整合有太高的期望的,虽然目前的 X window
已经整合得相当好了。此外,任何程式的设计都或多或少会有些臭虫,
X 当然也不例外。因此,在您的 Linux server 上面启用 X 系统的话,
自然多一个服务的启用,就会产生一些不确定性。因此,不是很建议对 Internet
开放的伺服器启动 X Window 的啦!<br>
<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen"> 鸟哥刚开始接触 Linux (大约是在 1999 年左右)时,
由于不熟,通常都是预设给他启用 X Window 在我的主机上面的。
不过,那个时候的图形介面与 Linux kernel 的整合度比较差,
老是挂点去,是常常造成我其他 Internet 上面的服务无法顺畅的原因之一呢!
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div></li><br>
<li><span class=text_import1>效能</span>∶
无论怎么说,程式在跑总是需要系统资源的,所以,多启用了 X 就会造成一些系统资源的损耗。
此外,上面也稍稍提到,某些 X 的软体是相当耗费系统资源的呢!
所以,多起动 X 就可能造成您的系统效能的低落哩!
</ul>
</div>
<hr><a name="xwin_history"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>X Window
发展历史</span><br>
<div class=block2>
X Window 最早是由 MIT (Massachusetts Institute of Technology) 在 1984 年发展出来的,
他们称这个咚咚为 X 。在经过数年的发展后,到了 1987 年推出 X11 这个优秀的版本,
几经改良后,再推出了 X11R6 (X11 版本的第 6 次 release 的意思)这个版本。
目前我们看到的各大 Linux distributions 均是使用 X11R6 这个 X 版本哩!
(<span class=text_vbird>所以您才会常常看到您的 Linux 主机里面,
怎么会有这么多的 X11 与 X11R6 的目录啊!呵呵!</span>)<br><br>
X11 发展了一段时间后,由社群发起的一个称为 XFree86 的计画 (
<a href="http://www.xfree86.org" target="_blank">http://www.xfree86.org/</a> )
持续在维护 X11R6 的功能性,包括对新硬体的支援以及更多新增的功能等等。
当初定名为 XFree86 其实是根据 『 <span class=text_import2>X + Free software + x86
硬体</span> 』而来的呢。早期 Linux 所使用的 X Window 的主要核心都是由 XFree86
这个计画所提供的,因此,我们常常将 X server 与 XFree86 挂上等号的说~
而 XFree86 针对 X11R6 也有持续在改良,也推出了 version 3 与 version 4 两个版本,
目前我们看到的新的 distribution 几乎都是使用 version 4 版本,
不过在 2001 年以前的版本,则通常还是使用 XFree86 version 3 的版本呢!<br><br>
除了 XFree86 这个计画之外,在 2004 年成立了另一个维护 X 系统架构的计画,那就是
Xorg ( <a href="http://www.x.org/" target="_blank">http://www.x.org/</a> )
这个计画啦!Xorg 是由多个组织所共同发起的,主要的目的是希望可以持续维护 X11R6
,使可以让 X Window System 更有效率的应用在工程上面。同时, Xorg 也是自由软体喔! ^_^<br>
<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen"> 基本上,目前我们称为 X Window system 的,应该是 X11R6 这个版本的 X 系统。
而针对这个系统来发展的除了 XFree86 计画之外,在 2004 年产生的 Xorg
这个计画也对 X11R6 来进行维护与发展。
会产生两个计画来维护 X11R6 的可能原因应该是目的的不同, Xorg
官方网站上面明白的宣示,该计画主要是希望可以让工程应用更加的有效率~
而我们的 Fedora Core IV 使用的是 Xorg 计画所维护的 X11R6 版本喔!^_^<br><br>
此外, XFree86 与 Xorg 针对他们自己发展的 X11R6 都有版本的区分,
版本的编号是不一样的。举例来说, XFree86 分为 3.xx 与 4.xx 版本,
而 Xorg 则为 6.8.xx 等等。
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div> </div>
<hr><a name="xwin_s_c_wm"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>X Server / X
Client / Window manager 的关系</span><br>
<div class=block2>
X Window System 为什么这么优秀呢?因为他有相当优良的 X Server/X Client 设计系统。
什么是 X Server 与 X Client 呢?X 在设计的时候,
就希望可以达到多人连线进入主机利用图形界面的功能,于是他便发展出这样的一个主从架构。
这个主从架构可以让使用者在任何一部电脑以网路的方式连线到主机来操作图形界面的功能,
是一个相当棒的设计呢~不过 X Server 与 X Client 的意义则与网路上的 Server/Client
意义不同喔~底下我们就来谈一谈 X Server/X Client 的功能。<br><br>
<li><span class=text_import1>X Server∶主要负责的是萤幕画面的绘制与显示。</span></li>
<div class=block2>
X Server 的主要功能 ( 不论是 Xorg 或是 XFree86 都是一个 X server 喔!)
就是在<span class=text_import2>管理 X Server 所在主机上面关于显示的硬体配备</span>啦~
例如显示卡、萤幕解析度、键盘形式、滑鼠形式等等。如果以 Linux 上安装 X server 为例,
您会发现~咦!显示卡、萤幕以及键盘滑鼠的设定,不是在开机的时候,
Linux 系统以 /etc/sysconfig 目录下的 keyboard/mouse 等设定档就设好了吗?
呵呵~这是因为 X Window 在 Linux 里面仅能算是『一套很棒的软体』,
所以 X Window 有自己的设定档,您必须要针对他的设定档设定妥当才行。<br><br>
也就是说, Linux 的设定与 X Server 的设定不一定要相同的!
因此,你在 Linux 的 run level 3 想要玩图形介面时,就得要载入 X Window
需要的驱动程式才行~总之, X Server 的主要功能就是在管理『主机』上面的显示硬体与驱动程式。<br><br>
您会发现鸟哥一直强调一件事情,那就是『 X Server 所在的主机』,这是怎么回事啊?!
刚刚我们不是提到 X Window System 最早是希望可以达到多人连线的目的吗?!
就是很多人都可以使用 X 来连线进入主机的意思,但是每部连线进入
Linux 主机的用户端电脑的硬体并不一样啊~这个时候当然就无法使用 Linux
上面的硬体来显示资料棉~您说对吧?!否则您在用户端利用 1MB 显示卡记忆体的系统,
可能显示出 Linux 主机的 1024x768x24bit 色彩与解析度吗?!当然不行~对吧!?
也就是说∶『<span class=text_import2>每部想要显示 X 的主机都需要有 X Server</span>』啦~
所以,您的 Window PC 当然也需要 X Server 来管理显示介面,这样才能够与 Linux
主机进行图形介面的沟通啊!更多的关于用户端连线到 Linux 主机端的方法,请参考
<a href="../linux_server/0310telnetssh.php#xdmcp">鸟哥的 Linux 私房菜--伺服器篇∶远端连线伺服器</a>
的介绍棉~<br><br>
X Server 还有一个重要的工作,那就是将来自输入装置(如键盘、滑鼠等)的动作告知 X Client,
您晓得, X Server 既然是管理这些周边硬体,所以,周边硬体的动作当然是由 X Server 来管理的,
但是 X Server 本身并不知道周边设备这些动作会造成什么显示上的效果,
因此 X Server 会将周边设备的这些动作行为告知 X Client ,让 X Client 去伤脑筋~
</div><br>
<li><span class=text_import1>X Client∶主要负责的是『事件』的处理。</span></li>
<div class=block2>
前面提到的 X Server 主要是管理显示介面与在萤幕上绘图,同时将输入装置的行为告知 X Client,
此时 X Client 就会依据这个输入装置的行为来开始处理,最后 X Client 会得到『
嗯!这个输入装置的行为会产生某个图示』,然后将这个图示的显示资料回传给 X Server ,
X server 再根据 X Client 传来的绘图资料将他描图在自己的萤幕上,来得到显示的结果。<br><br>
也就是说, X Client 最重要的工作就是处理来自 X Server 的动作,将该动作处理成为绘图资料,
再将这些绘图资料传回给 X Server 棉~
</div><br>
举个例子来说,当我们在 X Window 的画面中,将滑鼠向右移动,那他是怎么告知 X Server 与 X Client 的呢?
首先, X server 会侦测到滑鼠的移动,但是他不知道应该怎么绘图啊!此时,他将滑鼠的这个动作告知 X Client,
X Client 就会去运算,结果得到,嘿嘿!其实要将滑鼠指标向右移动几个位素,然后将这个结果告知 X server ,
接下来,您就会看到 X Server 将滑鼠指标向右移动棉~<br><br>
这样做有什么好处啊?!最大的好处是, X Client 不需要知道 X Server 的硬体配备与作业系统!
因为 X Client 单纯就是在处理绘图的资料而已,本身是不绘图的。所以,在用户端的 X Server 用的是什么硬体?
用的是哪套作业系统?主机端的 X Client 根本不需要知道~相当的先进与优秀~对吧! ^_^
整个运作流程可以参考下图∶用户端用的是什么作业系统在 Linux 主机端是不在乎的!<br><br>
<center><img src="0590xwindow/xserver_xclient_01.jpg"
title="X Window 与 X Client 的沟通示意图"
alt="X Window 与 X Client 的沟通示意图"><br>
图一、X Window 与 X Client 的沟通示意图</center><br>
刚刚好~在 Linux 上的 X Window System 中,X Server 与 X Client 在同一部 Linux 上面~
真是刚好啊~呵呵~好了,接下来再来讨论一下,那么那个 Window Manager 又是啥咚咚?
Window Manager 可以说是一个相当特殊的 X client ,他可以提供更多的功能~
包括有∶
<ul><span class=text_import2>
<li>提供许多的控制元素,包括工作列、背景桌面的设定等等;
<li>管理虚拟桌面 (virtual desktop);以及
<li>提供视窗控制参数,这包括视窗的大小、视窗的重叠显示、视窗的移动、视窗的最小化等等。</ul></span>
刚刚前面提到,X Client 的主要工作是将来自 X Server 的资料处理成为绘图数据,再回传给 X server ,
所以, X client 本身是不知道他在 X Server 当中的位置、大小以及其他相关资讯的。
这些视窗位置大小与重叠显示的功能,还有每个视窗上头的标题等等,其实就是由 Window manager
所提供的棉~<br><br>
FC4 利用 Xorg 这个计画提供 X server 的核心,同时 Xorg 也提供了一个简单的 Window manager ,
那就是 twm 棉。不过, twm 的功能虽然已经具备了 window manager 最阳春的能力,不过,就是太阳春~
所以后来预设的 window manager 大致上都以 KDE 或者是 GNOME 这两个计画提供的 window manager
为主棉~这两个计画的目的都是要让使用者可以在 Linux 底下使用完整的桌面电脑能力,
因此这两个计画在 Window manager 底下增加了很多的 X Client 软体,而且也加入了很多办公应用软体,
来让大众接受 Linux 这个好东西啊!<br><br>
那么您知道 X Server / X client / window manager 的关系了吗?!我们举 KDE 为例好了,
由于我们要在本机端启动 X Window system ,因此,在我们的 FC4 主机上面必须要有 Xorg 的 X server 核心,
这样才能够提供萤幕的绘制啊~然后为了让视窗管理更方便,于是就加装了 KDE 这个计画的 window manager ,
然后为了让自己的使用更方便,于是就在 KDE 上面加上更多的应用软体,包括输入法等等的,
最后就建构出我们的 X Window System 棉~ ^_^<br>
</div>
<hr><a name="xwin_startup"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>X Window 启用的流程</span><br>
<div class=block2>
接下来,我们来谈一谈,那么您的 Linux 上头的 X Window System 整个启动流程是如何呢?
假设您是以 run level 3 登入的好了,那么您要如何进入 X Window System 呢?
很简单啊!输入 startx 就可以啦~那您知道 startx 执行后,您的 Window manager 是 KDE 还是 GNOME ?
还是其他的 window manager 吗?!还有,您的版面风格配置又是如何呢?这些资料放在哪里啊?!
底下我们就来谈一谈棉~<br><br>
<li><span class=text_import1>开始的一个侦测介面, startx ∶</span></li>
<div class=block2>
我们知道了 X Window system 其实就是 X Server + X client 嘛!然后,
为了让视窗管理更方便,于是在 X Client 载入 window manager 就是了。
不过,为了要载入这些资料,就必须要读取设定档对吧!我们知道 Linux
底下每个人都可以设定好属于自己的环境, X Window 也一样,您可以有自己专属的 X 画面。
但是,如果您是首次登入 X 呢?也就是说,您自己还没有建立自己的专属 X 画面时,
系统又是从哪里给你这个 X 预设画面呢?<br><br>
事实上,当您输入 startx 时,这个 startx 的作用就是在帮您设定好上头提到的这些动作棉!
startx 其实只是一个 shell script ,他是一个比较亲和的程式,会主动的帮忙使用者建立起他们的 X
所需要引用的设定档而已。您可以自行研究一下 startx 这个 script 的内容,
鸟哥在这里仅就 startx 的作用作个介绍。<br><br>
startx 在执行的时候,他会主动的去寻找使用者家目录底下的 .xinitrc 及 .xserverrc 这两个档案,
这两个档案分别是∶
<ul><span class=text_import2>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -