⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0590xwindow.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
			<li>~/.xinitrc 是 X Client 的设定资料档;
			<li>~/.xserverrc 则是 X Server 的设定资料档。</ul></span>
			但是您不见得会有这两个档案,如果没有的话,那么 startx 就会主动的以系统预设的设定档来启用,
			这两个设定档分别在 /etc/X11/xinit/xinitrc 与 /etc/X11/xinit/xserverrc。不论是您自己的 
			~/.xinitrc 或者是系统的 xinitrc ,反正最后就是会有一个 X Client 与一个 X Server
			的设定档会被取用,而您家目录下的 .xinitrc 与 .xserverrc 是具有优先权就是了。
			在取得这两个东西之后,接下来就是以 xinit 这个程式来执行 X Client 与 X server 
			的启动了!<br><br>

			除此之外, startx 后面还可以接参数喔!这些参数可以取代 .xinitrc 与 .xserverrc 的设定。
			举例来说,您想要让您的 X 色彩深度是 16 bit (色彩深度就是所使用的色彩啦!),那么就可以∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>startx [X client option] -- [X server option]</span>
[root@linux ~]# <span class=term_command>startx  --  -depth 16</span>
</pre></td></tr></table>

			startx 后面接的参数以两个减号『--』隔开,前面的是 X Client 的设定,后面的是 X Server 的设定。
			因为色彩深度是与 X Server 有关的,所以参数当然是写在 -- 后面棉,于是就成了上面的模样!
			由于 startx 后面加的参数可以取代预设值,因此您就可以使用 16 位元色彩度进入 X 棉。<br><br>
		</div>

		<li><span class=text_import1>开始启动 X 的 xinit ∶</span></li>
		<div class=block2>
			事实上,实际在启动 X 的,就是 xinit 这支程式啦~他的语法是∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>xinit [client option] -- [server or display option]</span>
</pre></td></tr></table>

			那个 client option 与 server option 如何下达呢?其实那两个咚咚就是由刚刚 startx 去找出来的啦!
			在我们透过 startx 找到适当的 xinitrc 与 xserverrc 后,就交给 xinit 来执行。
			在预设的情况下 (使用者尚未有 ~/.xinitrc 等档案时),您输入 startx ,
			就等于进行 <span class=text_import2>xinit /etc/X11/xinit/xinitrc -- 
			/etc/X11/xinit/xserverrc</span> 这个指令一般!这样了了吗?<br><br>

			所以呢,重点当然就是 /etc/X11/xinit/ 目录下的 xinitrc 与 xserverrc 这两个档案的内容是啥棉~
			底下我们就分别来谈一谈这两个档案的主要内容与启动的方式~<br><br>
		</div>

		<li><span class=text_import1>启动 X Client 的档案∶ xinitrc ∶</span></li>
		<div class=block2>
			假设您的家目录并没有 ~/.xinitrc ,则此时 X Client 会以 /etc/X11/xinit/xinitrc 
			来作为启动 X Client 的预设 script 。xinitrc 这个档案会将很多其他的档案参数引进来,
			包括 /etc/X11/xinit/xinitrc-common 与 /etc/X11/xinit/Xclients 还有
			/etc/sysconfig/desktop 。您可以参考 xinitrc 后去搜寻各个档案来了解彼此的关系。<br><br>

			重点是, xinitrc 会依据上述这些档案的判断 (要注意,每种 distributions 他们的
			设定档案放置的地点都不太一样~) ,来搜寻出要启动的 window manager 是哪一个?
			举例来说,在 FC4 底下, xinitrc 这个档案会经由分析出 /etc/sysconfig/desktop 的设定,
			来开始执行 startkde 或者是 gnome-session 这两个 window manager 其中之一。
			意思是说,如果您在 /etc/sysconfig/desktop 设定是 KDE 的话,那么预设就会以 
			KDE 来启动您的 X Window 棉。
			等一下我们会以 KDE 的流程来介绍整个 X Client 如何启动的过程,这里目前仅指出到这里。
			而在 X Client 执行完毕后,接下来,当然就是 X Server 的进程了!<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">				不论怎么说,鸟哥还是希望大家可以透过解析 startx 这个 script 的内容去找到每个档案,
				再根据分析每个档案来找到您 distributions 上面的 X 相关档案~
				毕竟每个版本的 Linux 还是有所差异的~
			</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
			在上面的步骤中,我们会看到 xinitrc 引入了 /etc/sysconfig/desktop 的设定,
			已取得系统预设的 window manager 之后,接下来则是正确的分析该 window manager 是否存在,
			若存在则尝试启动,若不存在则以其他存在的 window manager 来尝试启动。
			因此,即使您 /etc/sysconfig/desktop 设定错误,系统还是会以预设的可能存在的 window manager 
			来尝试启动的。<br><br>

			如果是以 KDE 来启动的话,系统就会主动去搜寻 startkde 这个执行档。其实 startkde 也只是一个 script,
			他包含了很多 KDE 需要的设定资料,详细的 KDE 相关请参考 KDE 的官方网站棉~<br><br>
		</div>

		<li><span class=text_import1>启动 X Server 的档案∶ xserverrc ∶</span></li>
		<div class=block2>
			如果您去查阅 /etc/X11/xinit/ 目录的话,会发现,根本就没有 xserverrc 这个档案啊!
			那我家目录也没有 .xserverrc ,这个时候系统会怎么做呢?其实单纯只是执行 xinit 的时候,
			系统的预设 X Client 与 X Server 的内容是这样的∶<br>

<table class="term"><tr><td class="term"><pre>
<span class=term_command>xinit xterm  -geometry  +1+1  -n  login  -display  :0 --  X  :0</span>
</pre></td></tr></table>

			那个 xterm 是 X 视窗底下的虚拟终端机,后面会接一个『 -display :0 』
			表示这个虚拟终端机是启动在第 :0 号显示介面的意思。而我们启动的 X server 程式就是 X 啦!
			其实 X 就是 Xorg 或 XFree86 的连结档,亦即是 X Server 的主程式棉!
			所以我们启动 X 还挺简单的~直接执行 X 而已。如果单纯以上面的内容来启动您的 X window 时,
			您就会发现 tty7 有画面了!只是.....很丑~因为我们还没有启动 window manager 啊!<br><br>

			在启动 X Server 时,会去读取 X Server 的设定档,在 Xorg 使用的是 /etc/X11/xorg.conf 这个,
			至于 XFree86 则是使用 /etc/X11/XF86Config (注意大小写) 这个设定档。针对这个设定档的内容,
			我们会在下个小节介绍。反正 X Server 读取设定档如果一切 OK 就会在 tty7 顺利启动棉~
			而刚刚执行的 X Client 就会将绘图资料传送给 X Server 呢!最终您就能看到漂亮的 X 棉~<br><br>

			不过要注意的是,如果您的 xinitrc 设定档里面有启动的 x client 很多的时候,千万注意将除了最后一个 
			window manager 或 X Client 之外,都放到背景里面去执行啊!举例来说,像底下这样∶<br>

<table class="term"><tr><td class="term"><pre>
<span class=term_write>       xclock -geometry 100x100-5+5 &
       xterm -geometry 80x50-50+150 &
       exec /usr/X11R6/bin/twm</span>
</pre></td></tr></table>

			意思就是说,我启动了 X ,并且同时启动 xclock / xterm / twm 这三个 X clients 喔!
			如此一来,您登入 X 就有这三个咚咚可以使用了!如果忘记加上 & 的符号,那就.....
			会让系统等待啊,而无法一次就登入 X 呢!<br><br>
		</div>
		最后我们知道,透过 startx 可以取得 X Client 与 X Server 的相关设定资料,亦即 xinitrc 与 xserverrc 这两个档案。
		这两个档案可以让 xinit 这支程式来启动我们的 X Window ,而透过 xinitrc 可以设定需要启动的 window manager 
		是哪一个,至于透过 xserverrc 则能了解 X Server 使用的是那个主程式。通通启用后,就可以得到我们的 X 棉。
		更多的 xinit 用法可以参考 man xinit ,而 X 的用法则 man X 棉~<br><br>

		另外,其实 X Server 是会启动至少一个 port 来监听 X client 的要求的,那就是预设的 port 6000 棉。
		不过,我们的 X 其实是很有弹性的,可以拥有多个 port 来监听不同 X Client 的需求,
		这也是未来我们谈到伺服器架设时 VNC (Virtual Network Computing) 伺服器的特色。
		但是在 X Window System 的环境下,我们称 port 6000 为第 0 个显示介面,亦即为 hostname:0 ,
		那个 hostname 通常可以不写,所以就成了 :0 即可。<br><br>

		那么启动的 X 画面是放在哪一个终端机 (tty) 呢?在预设的情况下,第一个启动的 X
		(不论是启动在第几个 port number) 是在 tty7 ,亦即按下 [ctrl]+[Alt]+[F7] 那个画面。
		而起动的第二个 X (注意到了吧!可以有多个 X 同时启动在您的系统上呢) 则预设在 tty8 亦即 
		[ctrl]+[Alt]+[F8] 那个画面呢!很神奇吧! ^_^<br><br>

		因为主机上的 X 有多个,因此,当我们在启动 X Server / Client 时,
		应该都要注明该 X Server / Client 主要是提供或接受来自哪个 display 的 port number 才行。
		如果您的 X 启动在 :1 时,那就是 port 6001 啦!<br><br>

		好了,我们可以来针对 X Server 与 X client 的架构来做个简单的测试喔!
		底下这些动作您必须先以 run level 3 登入,并且确定主机上面已经安装了 X Window System ,
		并且您必须要在主机前面,不可以 ssh 之类的连线程式进入做底下的动作啊!
		另外,如果是 FC4 的使用者,记得将 xfs 服务启动喔!<br>

<table class="term"><tr><td class="term"><pre>
<span class=term_hd>1. 先来启动第一个 X 在 :0 画面中∶</span>
[root@linux ~]# <span class=term_command>X :0 &</span>
<span class=term_say># X 是大写,那个 :0 是写在一起的,至于 & 则是放到背景去执行。
# 此时可以使用 netstat -tulnp 查看看有没有那个 port 6000 出现啊!
# 另外,此时系统会主动的跳到第一个图形介面终端机,亦即 tty7 上喔!
# 所以如果一切顺利的话,您应该可以看到一个 X 的滑鼠游标可以让您移动了。
# 该画面就是 X Server 启动的画面棉!丑丑的,而且没有什么 client 可以用啊!
# 接下来,请按下 [ctrl]+[alt]+[F1] 回到刚刚下达指令的终端机∶</span>

<span class=term_hd>2. 输入数个可以在 X 当中执行的虚拟终端机</span>
[root@linux ~]# <span class=term_command>xterm -display :0  &</span>
<span class=term_say># 那个 xterm 是必须要在 X 底下才能够执行的终端机介面。
# 加入的参数 -display 则是指出这个 xterm 要在那个 display 使用的。
# 此时请按下 [ctrl]+[alt]+[F7] 去到 X 画面中,您会发现多了一个终端机棉~
# 不过,可惜的是,您无法看到终端机的标题、也无法移动终端机,
# 当然也无法调整终端机的大小啊!我们回到刚刚的 tty1 然后∶</span>
[root@linux ~]# <span class=term_command>xterm -display :0  &</span>
<span class=term_say># 又多一个终端机,去到 tty7 查阅一下。唉~没有多出一个终端机啊?
# 这是因为两个终端机重叠了~我们又无法移动终端机,所以只看到一个。</span>

<span class=term_hd>3. 输入可以管理的 window manager</span>
[root@linux ~]# <span class=term_command>twm -display :0  &</span>
<span class=term_say># 回到 tty1 后,用最简单的 twm 这个视窗管理员来管理我们的 X 吧!
# 输入之后,去到 tty7 看看,用滑鼠移动一下终端机看看?可以移动了吧?
# 也可以缩小放大视窗棉~同时也出现了标题提示棉~也看到两个终端机啦!
# 现在终于知道视窗管理员的重要性了吧? ^_^</span>

<span class=term_hd>4. 增加另一个 X 在系统中</span>
[root@linux ~]# <span class=term_command>X :1 &</span>
<span class=term_say># 如果您又重复执行一次 X 的话,那么这次的 X 图示就会出现在 tty8 底下,
# 那再输入一次呢?亦即 X :2 & 呢?很简单啊! tty9 也有 X 出现棉~厉害吧!</span>

<span class=term_hd>5. 将所有刚刚建立的 X 相关工作全部杀掉!</span>
[root@linux ~]# <span class=term_command>kill %6</span>
[root@linux ~]# <span class=term_command>kill %5</span>
[root@linux ~]# <span class=term_command>kill %4</span>
[root@linux ~]# <span class=term_command>kill %3</span>
[root@linux ~]# <span class=term_command>kill %2</span>
[root@linux ~]# <span class=term_command>kill %1</span>
</pre></td></tr></table>

		很有趣的一个小实验吧~透过这个实验,您应该会对 X 使用的 port ,
		与 Window manager 及 tty7 以后的终端介面使用方式有比较清楚的了解~加油!
	</div>
</div>

<hr><a NAME="xserver"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">与 X Server 有关的设定档</span><br>
<div class=block1>
	从前面的说明来看,我们知道一个 X 能不能启用,其实与 X Server 有很大的关系的。因为 X Server 负责的是整个画面的描绘,
	所以没有成功启动 X Server 的话,即使有启动 X Client 也无法将图样显示出来啊。所以,底下我们就针对 X Server 
	的设定档来做个简单的说明,好让大家可以成功的启动 X Window System 啊。<br><br>

	基本上, X Server 管理的是显示卡、萤幕解析度、滑鼠按键对应等等,尤其是显示卡晶片的认识,真是重要啊。
	此外,还有显示的字体也是 X Server 管理的一环。基本上, X 的设定档都是预设放置在 /etc/X11 目录下,
	而相关的显示模组或上面提到的总总模组,则主要放置在 /usr/X11R6 底下。
	比较重要的是字型档与晶片组,她们主要放置在:
	<ul>
	<li>字型: /usr/X11R6/lib/X11/fonts
	<li>显示晶片: /usr/X11R6/lib/modules/drivers
	</ul>
	在 FC4 底下,我们可以透过 chkfontpath 这个指令来取得目前系统有的字型档案目录。
	这些都要透过一个统一的设定档来规范,那就是 X server 的设定档啦。不过 XFree86 与 Xorg 这两个计画的设定档档名不同,
	虽然内容是差不多,不过,还是要来分辨一下才行。<br><br>

	<hr><a name="xserver_xorg"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>手动修改 xorg.conf 或 XF86Config</span><br>
	<div class=block2>
		其实想要知道你的系统里面 X Server 到底来自哪个计画,最简单的方法就是利用 X 这个指令来取得版本啦。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -