在本章, 我们将学到:
.如何在自己的机器上启动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系统提供,而是由下一章我们要
讨论的视窗管理器提供。
标签: