当前位置:Linux教程 - Linux - X WINDOWS 系统使用指南(三)

X WINDOWS 系统使用指南(三)

第5章 启动和关闭退出X

在本章, 我们将学到:

.如何在自己的机器上启动X.

.如何在视窗上做一些基本操作.

.如何关闭退出X.

我们在此假设你的系统管理者已经在你的系统上装设好了X, 事实上即使不曾用过或不熟悉X, 装设X也不会很困难. 因此如果你有必要自己装设X, 本书的附录将给你一些提示.

在还未开始前, 我们需要先知道已装设好的X, 它的执行程式在那里,MIT 版预设的目录为 /usr/bin/X11,但很多地方是用 /usr/local/bin 或/usr/local/bin/X11, 当你知道了之後, 把它加到你的搜寻路径 (search path) 里, 如果你使用 C-Shell, 可以在你的.login档 (或者可能是.cshrc 档) 设定路径, 如果你使用Bourne Shell, 则在.profile档中设定. 例如,
在.login档中使用C-Shell 的命令列设定路径:

set path = (. /usr/local/bin/X11 /usr/ucb /usr/bin /bin)

如果你不设定路径, X将无法正常启动, 当你设好之後, 为了确定起见,先logout再login 一次, 检查路径是否设定正确 (用 echo $PATH 指令).


5.1 启动X

在你的显示器启动X,键入命令:

xinit

则会依序发生:

1. 你的整个萤幕会被设定成灰色。

2. 一个巨大的 ""X"" 游标出现(见图 5 - 1 )

┌————————————————┐
│ p48 fig 5.1 │
│ │
│ │
│ │
│图 5 - 1 大的 ""X"" 游标 │
└————————————————┘

你可以用滑鼠将它在萤幕上移动,但按滑鼠按钮或键盘都对它无影响。

3. 一个xterm 终端机模拟器的视窗出现在萤幕左上角,当游标移到这个视窗时,会改变成本文游标,(见图 5 - 2),xterm 准备接受你的命令。

┌————————————————┐
│ │
│ p48 fig 5.2 │
│ │
│ │
│ │
│图 5 - 2 xterm 的本文游标 │
└————————————————┘


系统启动的画面见图 5 - 3。X现在已被启动,你可以把xterm 这个视窗当成一个普通的终端机来使用,执行一些普通的指令,不过它最大的价值在让你可以开始执行其它的X程式,我们将於稍後告诉你,现在先来让你了解一下X的启始动作做了些什麽。


┌————————————————┐
│ │
│ p49 fig 5.3 │
│ │
│ │
│ │
│图 5 - 3 系统启动的画面 │
└————————————————┘


5.1.1 xinit 的内部操作:

首先, xinit 启动Xserver程式在你的显示器上执行, server建立一个它自己的根视窗, 并把视窗的背景色设定成灰色, 把游标设定成一个大 ""X"".

在server执行的期间, server一直控制著键盘及滑鼠, 这就是你能在萤幕上移动游标的原因, 但是因为目前没有任何client程式要求告知键盘和滑鼠 ""事件"",所以server只是追踪滑鼠游标的移动, 而所有其它的键盘或滑鼠输入虽然都经过server处理但均被放弃, ( 因为没有client程式有兴趣 ),这就是按键盘或滑鼠按钮没有反应的原因.

接下来, xinit 启动xterm 程式执行, xterm 对server而言是一个client程式, xterm 要求server建立一个视窗, 而且保持告知在这个视窗中的滑鼠和键盘事件, xterm 设定在视窗中执行一个shell , 当指标移至视窗之内便准备接受输入.

键盘输入被送至shell 就如同在一部真的终端机上输入一般, 从shell( 及其副程式 )的输出藉著xterm 显示在视窗上, xterm 也接受滑鼠输入,使得你能设定不同的程式操作参数和进行本文的剪贴 (cut and paste ) .

你可以观察到系统执行这些动作的步骤, 例如当在系统启动後, 在xterm视窗内执行 ps a 命令:

PID TT STAT TIME COMMAND
1900 C0 S 0:00 xinit
1901 C0 S 0:01 X:0
1902 C0 S 0:01 xterm -geometry +1+1 -n login -display unix:0 -c
1903 p1 S 0:00 -sh (csh)
1904 p1 R 0:00 ps

以上的显示说明xinit 在主控台(console )显示器上被启动,它初始化server,X显示为零。接著xterm 在一个虚拟(pseudo)的终端机上执行,xterm 启动一个shell 执行,使得它能处理你在xterm 视窗所下的命令。最後,我们执
行ps命令产生上述的列表。

我们将在第8章讨论更多的xterm 细节, 从现在起, 我们假设xterm 被视为一个DEC VT102 的终端机, 我们把重点转移到系统启动之後, 我们能做些什麽.


5.2 如何执行一些X程式

你目前有一个X server 控制的显示器,一个叫xterm 的client程式,允许你输入命令,本节告诉你如何执行其它的X程式。

因为X的client程式和X server 完全独立,所以不需要特别的动作启动它们,你可以像执行一般的程式一样执行它们。但是这些client程式需要确实知道它们用的是那一个显示器。实际上因为xterm 一开始设定了DISPLAY 环境变数,给定了它使用的显示器名称,而其它的client程式用此当作预设显示器,因此你不需多做其它的事。


5.2.1 如何执行X的时钟,xclock

我们用X的时钟当作一个简单的范例,先确定指标停在xterm 视窗中,然後输入命令:

xclock

一个小的时钟影像出现在萤幕左上角,覆盖了第一个视窗一部份,如图 5 - 4

┌————————————————┐
│ │
│ p51 fig 5.4 │
│ │
│ │
│图 5 - 4 xclock 启动後的画面 │
└————————————————┘

现在有三个问题要克服:

第一个问题:由於xterm 这个 ""终端机"" 已经有一个程式(xclock)在执行,所以我们无法再输入其它的命令,该怎麽办?

唯一的办法就是停掉xclock,但当你按下ctrl-c或DEL 键时,xclock便会消失,要克服这种状况,你需要非同步(asynchronously)执行xclock,用命令:

xclock &

则目前xterm 至少能接受你输入其它的命令。

第二个问题:如何中止xclock?

X server 本身没有提供直接的介面中止应用程式,但是有一个叫xkill的client程式可让你杀掉应用程式,在xterm 视窗内输入xkill 命令便可启动这个程式,xkill 会显示一个覆盖性的方形游标(draped box cursor ),见图5-5 ,移动这个游标到任何你想杀掉的应用程式的视窗中,碰触左按钮,应用程式的视窗会消失且应用程式和xkill 会一起结束,你也会得到如下的讯息:

xkill:killing creator of resource 0x40004d
XIO:fatal IO error 32 (Broken pipe) on X server ""unix:0.0""
after 207 requests (178 known processed) with 0 events remain-
ing.
The connection was probably broken by a server shutdown or kill-
client.

┌—————————————————┐
│ │
│ p52 fig 5.5 │
│ │
│ │
│图 5 - 5 xkill的覆盖性的方形游标 │
└—————————————————┘

如果为了某些缘故你无法进到应用程式的视窗内用xkill 中止它,你通常可以用UNIX的办法:找出process 的ID,然後杀掉它,例如:

$ps a | grep xclock
1907 p2 I 0:00 xclock
1909 p2 S 0:00 grep xclock
$kill 1907
[1] Terminated xclock
$

第三个问题:如何避免时钟和xterm 视窗重叠?

这个问题换个问法是:你如何安排应用程式视窗的位置?

你可以用前一章说明过的 ""geometry"" 的参数来解决,例如输入命令:

xclock -geometry 200x300+400+500 &

这个命令告诉xclock建一个宽200 高300 个像素的视窗,位於萤幕左上角右边400 个像素,下边500 个像素。

以上的三个问题都解决了,下一章会介绍更巧妙的解决方法。

使用彩色

如果你拥有彩色显示器,那麽不妨以xclock进行你指定和使用彩色的实验,xclock有数种选项做彩色识别:

-bg color 设定背景颜色

-fg color 设定前景颜色

-hd color 设定时钟指针的颜色

-hl color 设定时钟指针边线的颜色

输入指令:

xclock -bg turquoise -fg red -hd magenta

你可以看到一个彩色的钟,稍後我们会再说明颜色的正确使用名称。

xclock启动之後,便不再需要和使用者交谈(interaction ),下一节我们将介绍另一个需要从键盘和滑鼠输入的小程式。


5.2.2 xcalc - 桌上型计算器

xcalc 是一个X的计算器,移动指标到xterm 视窗,输入命令:

xcalc - geometry +700+500 &

一个像TI-30 型计算器的视窗出现了(如图 5 - 6),你可以用滑鼠或键盘
来操作它。

┌————————————————┐
│ │
│ p54 fig 5.7 │
│ │
│ │
│ │
│图 5 - 6 xcalc 桌上型计算器 │
└————————————————┘

使用滑鼠时,你可以移动指标到你需要的计算器按钮,按滑鼠左按钮表示按下按钮。如果是用键盘时,键盘上的一些键明显的对应计算器按钮,例如依序按键盘键1 ,+ ,2 ,+ ,3 和 =键,代表了算1 ,2 ,3 的总和,由於至少目前你可以用指标指到计算器的任一按钮,因此键盘和计算器那些比较不明显的对应关系,在此不作进一步说明。

xcalc 比 xclock 有一个优点,那就是容易中止它。在计算器AC按钮上碰触滑鼠右按钮即可中止,大部份的X应用程式均有类似的中止设备。


5.3 关闭X

要关闭X视窗,只要移动指标到最初xterm 的视窗,输入:

logout

则视窗消失,server终止,X也被关闭。

详细点说,xterm 查觉到shell 终止时,也终止自己,而xinit 一查觉xterm已经结束,便杀掉server後离开。


5.4 总结

你现在已能启动系统、执行程式和关闭系统,所以你可以自行做一些实验执行xclock一小段时间,给不同的geometry设定,极度放大或缩小时钟,摆在萤幕的任何位置(甚至萤幕之外!)

在本章中,我们看到了如何启动程式,如何执行一些视窗应用程式,如何结束视窗系统。换句话说,你已经能使用系统。

但是,有许多的功能没有提供,例如:


. 重定视窗大小

. 在萤幕任意移动视窗

. 将一个视窗从另一个视窗之下移出摆在案头上(或者把它堆到下面)

. 用较方便的方法启动视窗应用程式

这些以及其它更多的功能并非由基本的X系统提供,而是由下一章我们要讨论的视窗管理器提供。