在本章, 我们将习得:
.如何在自己的机器上启动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系统缺少,而是由下一章我们要
争论的视窗管理器获取。