分享
 
 
 

X WINDOWS 系统使用指南(十八)

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

第20章 全部放在一起 -- xdm

现在我们已涵盖了你需要用到X的所有个别的项目,你知道如何启动系统,

如何设定一个视窗管理器的执行,如何执行应用程式,如何从不同的角度定制

系统,最後,如何退出系统。

本章中,我们把这些分开的部份放在一起,且描述一个完整的档案设定,

用来定制涵盖所有的范例功能系统机器环境。在本章我们将看到我们所要介绍

给你的最後一个X的工具:显示管理器(display manager) -- xdm,它提供一

个精巧和清楚的方法在你的机器上启动X。

20.1 我们需要做些什麽

当我们启动之後,我们需要安排萤幕,让一些我们在整个执行期间中都会

使用的应用程式适得其所,让一些偶然用到的则以表徵图为开始时的表示方式。

我们需要执行视窗管理器,对某些种类的功能做一些设定。详细来说,我们需

要下列的程式:

.一个xterm 的主控台,在萤幕左上角。

.uwm 在背景下执行。

.一个我们的(正常)编辑器的全萤幕xterm 视窗,以表徵图启始。

.在右上角一个(较一般为小)的时钟。

.xbiff 在时钟之下。

.一个计算器在右下角。

.一个用到我们所有最小的字型的表徵图化的xterm ,它的高度为screen高。

.在xbiff 之下,排列我们使用远方机器的频率图。

除了程式之外的项目:

.设定背景视窗为亮灰色。

.启动键盘滴答(key-click) 的功能。

.从我们常用的网路主机存取到我们的server。

.载入我们对所有client用到的server设定的resource,在16章我们定义

的$HOME/.Xresources 档案中,根视窗RESOURCE_MANAGER性质之上。

.启动一个screen saver。

并且我们需要uwm 有选单让我们能够:

.容易地存取在网路上其它的主机。

.变更一些键盘和滑鼠的设定,且设定背景视窗的颜色。

.启动那些我们偶而会用到的应用程式。

.启动一些被选定的示范程式。

对这些我们自己的设定,在我们网路上其它的使用者需要不同的初始设定,

所以我们需要安排每一个使用者依他们自己的喜好设定,理想上,使用者应能

自行设定而毋需藉系统管理者的帮助,下一节我们来看程式xdm 如何能帮助我

们达成这些目的。

20.2 xdm -- X显示管理器(X Display Manager)的概观

xdm 管理一或多个显示器,xdm 可在同一机器或远方的机器上执行。它可

以做到所有xinit 能做到的,而且更多。它所隐含的概念为它应控制当你在X

工作时的完整周期 (session),意即从你进入直到结束视窗系统的周期。(用

xinit ,有效周期为当你执行xinit 开始,到你结束(logout)最初的xterm

视窗和关闭server。)

xdm 较这更进一步:你可以用它执行一个不确定的周期。当一个结束,下

一个便准备开始。实际上,如果你有需要,它让你不变地指定一个显示器。

xdm 完全取代xinit 。从现在起你可忘掉xinit ,而且不再需要使用它,

我们在最初使用xinit 的原因为它较易观察和了解系统的运作。

xdm 是一个非常灵活的程式,你几可用它建构任何你所需要的,在进一

步深入之前,让我们观察一个范例周期的预设行为,然後我们来看一看你如

何改进当一个使用者进入X系统所看到的初始介面。

20.2.1 一个用xdm 的范例周期

我们将使用xdm 来设定在我们机器上执行的X。你的机器已经启动,但尚

未有视窗系统在其上执行。用下列的命令启始xdm

xdm

xdm 开始执行,你几立刻又看到你的shell 提示。然後萤幕背景变更为

通常灰色形式,且你看到一个大的X游标,所以你知道server已经启始。

接下来是一长段修止状态 -- 大约接续15秒或更久 -- 而後突然间一个带

着欢迎标题的视窗出现了,要求你的登录名称(login name)和密码(password),

如图20-1(这是xdm 的authentication widget )。输入你的使用者名称和密

码,又过了一会儿,你可以看到一个xterm 视窗在左上角出现,就如同图5-3

一般,从现在起,你工作的方式和以前相同 -- 启动你的视窗管理器,执行应

用程式等等。

┏----------------------┓

│ FIG 20.1 P.251 │

│ │

│ 图20-1 xdm 的 authentication widget │

┗----------------------┛

当你需要结束时,你也可用像以前相同的方式结束:logout最初始的xterm

视窗。但这里xdm 和xinit 有不相同的地方,代之关掉server的是,回到非X

的环境,萤幕回到最初始灰色的背景,过一下子之後,你又再度看到X的登录

视窗。事实上,xdm 是执行一个循环的周期。

注意:就像许多的Unix程式,最大的登录名称长度为8 个字元 -- 如果超

过这个长度,login 将会失败。(如果你的实际login 程式允许你使用较长的

名称,这种限制也许让你感到奇怪。)

关闭xdm

有时你可能需要完全地关闭X。为了做到这点,你需要关闭xdm 。

在MIT 版中的server,会依循如果收到Unix讯号SIGTERM ,便会执行中止

程序。xdm 利用到这点:如果你送给它一个SIGTERM ,它将中止所有它所控制

的server後离开。这就是你中止系统的方法。

欲实际地中止xdm ,可以在一个xterm 视窗(在你的机器上)用ps来找出

xdm 的process-id,而後用kill送给它SIGTERM (你将看到数个xdm 处理的执

行:那个最年轻的便是你要的,也就是说,最低的process-id)。例如,在我

们的机器上执行中止的动作:

venus% ps ax 1 grep xdm

1997 ? IW 0:00 xdm

1998 ? IW 0:00 xdm

2000 ? IW 0:00 xdm

2078 p0 S 0:00 grep xdm

venus% kill -TERM 1997

你所有的应用程式将被强迫中止,server也随之关闭。

注意:当相关於X的每一件事都结束後,你的萤幕可能只显示通常X背景

的灰色形式,没有任何的shell 提示或任何事。不要被愚弄了:你的shell 已

准备好接受你的命令 -- 按下RETURN键你将会看到。(因为在你以交谈式下

xdm 命令之後,shell 已将提示号送出,所以不再重覆 -- 除非你按下RETURN)。

20.3 有关xdm 的更多

我们在前所述为xdm 的预设模式的操作,所以看起来并没有比xinit 提供

得更多,如果你使用一个正常的工作站或显示器,一些外貌将不是很有趣。无

论如何,X终端机(x-terminal)是一个日渐增加的大众化设备,而xdm 可大量

地简化管理类似的系统。X终端机通常没有它自己的档案系统,且不能支援一

般目的的程式,必需在网路的某处执行包含视窗管理器和显示管理器的控制终

端机软体,xdm 正是符合此需要的软体。

xdm 在下列这些场合较xinit 为优:

.它可控制数个server,也暗示说,其中有一些为远方的server,也许是

在X终端机或相当小的工作站上。

.它提供密码来存取系统,同样地,在X终端机上非常有用(但在一个你

已经login 的工作站会有一点困扰。)

.它提供无限期的X的周期。你可以建构显示器经常性地以X操作,所以

使用者毋需担心如何启始系统。

.它具有高度的建构性,系统管理者可以设定依机器特性的启始和结束程

序,掌握这些项目以供记帐(accounting),授权(authorization) ,档

案系统等之用,且能让每一个个别的使用者全范围性地修定他们所需的

自己的环境。

.从使用者的观点,它提供一个乾净而简单的方法来启动系统。

所以大体上,xdm 主要是一个系统管理工具,但它也提供让一个普通使用

者定制他所希的一致和一贯地系统架构。

xdm 的指南页包含了大量的有关如何使用系统的教学资讯和指引,在此我

们不再重覆,我们将在以下的章节说明如何正确地建构xdm 以提供在本章一开

头所描述的环境。

xdm 真的非常有弹性,且你可以用许多不同的方式选择设定,我们将使用

最简单的处理,并试着大致和指南页的描述保持一致,偶而我们在一些档

案中使用不同的名称,用以强调此名称并非硬性的规定。

在我们工作的周期中,请对我们事实上在扮演两个不同的角色保持概念:

第一是系统管理者,对於使用系统的任何人来设定xdm ,第二是一般的使用者

,为我们自己的需求设定xdm 。

20.3.1 系统管理者对xdm 的建构

预设xdm 先查看档案

/usr/lib/X11/xdm/xdm-config

如果它存在,会把它当成多设定几个其它叁数的resource档案。我们将使用它,

因为它可简化我们的工作。

指南页会列出所有你能藉xdm-config档案设定的叁数,但我们较有兴趣的有:

.包含一个server的目录的档案名称。

.当任何错误发生时,xdm 用来记录的档案名称。

.包含和启始系统有关的档案系统名称。

.当server启动後执行程式的名称,这个程式定义了你的”周期” -- 当

这个程式中止时,xdm 视其意义为你的周期已结束,且回到它login 时

的顺序,预设这个程式为xterm ,就和使用xinit 一样,你的周期持续

直到你logout你初始的xterm 。

这是我们已在系统上定义的设定:

DisplayManager.severs: /usr/lib/X11/xdm/our-server

DisplayManager.errorLogFile: /usr/lib/X11/xdm/errors

DisplayManager*resources: /usr/lib/X11/xdm/our-resources

DisplayManager*session: /usr/lib/X11/xdm/our-session

(我们已选择保持所有xdm 相关的档案在目录/usr/lib/X11/xdm,这只是代表

名称,你可以用任何你喜欢的目录。)

所以你可以看到我们使用xdm-config,实际上是一个两步骤的处理方法,

首先我们定义在xdm-config中的一些档案名称,接着我们来设定方才命名的档

案。现在我们来看一下我们在xdm-config中定义的每一个resource。

xdm 的server的名单

这个被DisplayManager.servers设定的档案的resources 包含了一个xdm

能管理的server的名单。每一列中包含了server的名称(也就是显示器),

server的型态(type),和型态有关的项目。

型态指出了显示器是本地的或远方的。和是否为无限或单一的周期(详见

xdm 指南页)。我们将使用型态localTransient -- 单一周期在本地显示器上

-- 因为以此方式,如果发生任何错误,我们不致於陷入无穷圈中。稍後,

当我们每件事都设定好且执行无误的话,我们会将型态改为本地而循环的周期。

对本地的显示器而言,和型态相关的讯息是在此显示器上执行的server程

式的名称及其任何所需的引数。对远方的显示器,此讯息可被忽略,但你仍需

输入一个假的(dummy) 程式名称。

所以,在我们所建立的档案/usr/lib/xdm/our-servers包含这一行:

:0 localTransient /usr/bin/X11/X :0

(如果我们喜欢执行循环周期,此档案便不再需要 -- 预设设定会做到我们所

需要的 -- 所以我们在建构档中不需定义DisplayManagers.servers resource。)

xdm 的错误登录档案

此档案从xdm 和xdm 的周期程式接收所有错误的讯息,且如果你的xdm 设

定工作发生问题的话,这是第一个需要查看的地方。

当你开始设定你的系统,对此档案设定任何人均可写入,否则,有问题的

程式可能因没有写入许可而无法在档案中记录。

启始时的resource档案

此档案包含一个resource的名单,在Authentication Widget 启始之前被

xrdb载入。因此,你能用它来为那些widget设定resource。(你当然也能放置

任何其它的resource规格,但通常周期程式的使用者设定载入时会凌驾其上,

所以通常不把其它的规格放在这里。)

authentication widget resource的预设设定在某些情况是很细的,但为

了举例,我们只设定和bunner不同的标题,我们建立我们的档案

/usr/bin/X11/xdm/our-resources 包含一行:

xlogin.Login.greeting:X-Window on the Plants network

xdm 的"Session(周期)"程式

你可以指定任何程式为你周期中所需的程式,可是当周期结束,你通常选

择一个程式让你能启始其它的程式,你能依赖xdm 的预设设定执行xterm ,但

这种方式每当xterm 执行时你仍必需手动所有你的设定。我们需要定义我们的

周期程式来做所有我们的设定,且保持活动(active)的状态直到我们结束它为

止,但记住,我们希使用者如果需要能定义他们自己的周期程式,所以我们

将使用两阶段的处理,如果是系统管理者,我们将设定一个一般性目的,基础

的,周期程式来召换一个使用者自己的程式(如果它存在),但其它方面将执

行一个合理预设。当个别的使用者,我们将定义我们自己的设定周期,它将被

xdm 的一般目的程式执行(我们在另外一节讨论它)。

我们的基本的site-wide 周期程式非常简单,如果使用者有设定档案

$HOME/.Xsession 的常规我们便使用之,否则,我们将执行合理的预设 -- 启

动uwm 而後传递控制到一个xterm(xterm为我们指定在萤幕左上方的那一个)

。但在做之前,我们先检查是否使用者设定了档案$HOME/.Xresources(其它的

常规),如果有的话,我们用xrdb载入它。一个完整的程式名单如图20-2。

┏----------------------┓

│ FIG 20.2 P.257 │

│ │

│ 图20-2 程式/usr/lib/X11/xdm/our-session │

┗----------------------┛

20.3.2 我们自己对於xdm 的建构

现在我们改变角色:我们不再是系统管理者,而是一个使用者。我们可以

依赖系统管理者已定义之预设周期,但我们比较喜欢定义自己的周期,所以我

们要获取那些说明我们所需的起始设定。

我们的实例.Xsession

我们已建立我们自己的$HOME/.Xsession,如图20-3,且此萤幕初始的建构

在它执行之後会如图20-4。此程式的操作十分直接,但当你自行设定时有一些

要点需要注意,且当你建立site-wide 周期程式也是一样。我们假设你的周期

程式是一个shell :虽非必定,但通常都是(除非你要写一个xetrm 的复杂的

代替品)。

┏----------------------┓

│ FIG 20.3 P.258 │

│ │

│ 图20-3 $HOME/.Xsession 程式 │

┗----------------------┛

┏----------------------┓

│ FIG 20.4 P.259 │

│ │

│ 图20-4 我们初始化後的萤幕 │

┗----------------------┛

.档案中的命令依序排列,所以最後一行所执行的是一个程式,它可以持

续整个你的周期。(因为,当此程式结束,则周期程式结束,且每一件

事也均将结束)。

.除了在背景中最後的命令所有的命令均被执行,也就是说,在命令列最

後加一个ampersand(&) 号。如果你不这样做,此周期将从不获取过去

的任何不确定地执行的程式。例如:在我们的实例程式,如果我们在uwm

那一行省略"&" 号,uwm 会启动,但在uwm 结束时,它的下一行将不会

继续执行,绝不!

.最後的命令必为exec的命令,所以它继续执行且保持你的周期继续活动。

(如果你像其它命令一样在背景中执行它,它会好好的执行,但此周期

程式执行至档案结束将会中断,而结束周期。如果你不用exec,且省略

"&" 号,则它会执行且此周期将完美地持续工作,你只是较你所需的多

执行了一个处理,就如同你仍有最後的程式(last program)和周期程式

本身。)

.对所有的程式建立视窗时设定geometry规格 -- 否则当它们启动时你将

以”手动”方式指定它们的位置。

.在档案中最後一行的程式通常用来启动xterm ,因为它定义了你周期的

生命期,在你执行X时此视窗总是存在,所以你通常设定两个特别的选

项:

1 .使用-C选项使得xterm 为一个”主控台”,所以系统讯息会在它的

视窗显示。

2 .设定-ls 选项使它的shell 为login shell 。如此使得shell 读入

你的.login或.profile,所以你的环境变数会适当地设定。(如果

你不这样做,你只有一点儿定义:DISPLAY,HOME,USER,PATH和SHELL.)

3 .此周期程式档案必需有执行许可。使用上述site-wide 周期程式,

这对使用者周期script不是绝对需要,它实际是对site-wide 程式

本身。(如果那不能执行,你只能获得xdm 的预设设定。)

在装设你的.Xsession 和依赖它启始你的视窗周期之前,最好能够从一个

xterm 视窗启动你的.Xsession 以严格测试它。

20.4 我们自己的uwm 建构

我们需要设定四个uwm 选单:一是连接到其它的主机,二是执行一些X的

应用程式,三是设定一些键盘和滑鼠叁数(有点儿像预设的Preference选单),

四是执行展示程式。

对我们的”主机”选单,我们现在希只要藉着从选单中选取主机名称便

可在任何主机上启动xterm 。我们常常需在mars上做一些系统管理,所以我们

将设定选择在其上为超级使用者(super user),我们将在左下角建立一个超级

使用者视窗,但对一般的xterm ,我们省略geometry规格,所以当它建立时,

我们可以明确地定位它。我们将以META-SHIFT-LEFT 系结 (bind) 此选单。所

以在我们的$HOME/.uwmrc中我们包含了此列。如图20 - 5.

┏----------------------┓

│ FIG 20.5 P.260 │

│ │

│ 图20-5 在$HOME/.uwmrc的主机选单 │

┗----------------------┛

其它三个选单我们不常用,所以我们均以META-SHIFT-MIDDLE 系结它们,

这没什麽特别,但注意Misc. 不包含一个内建的混杂的uwm 和shell 命令。这

些对应到.uwmrc的项目如图20 - 6。

┏----------------------┓

│ FIG 20.6 P.261 │

│ │

│ 图20-6 在$HOME/.uwmrc中其它的选单 │

┗----------------------┛

uwmrc 剩馀的部份 (见图20 - 7),我们用以设定定制系结和一般视窗建构

操作的叁数。注意下列几点:

.我们选择一个较预设稍大的字型 (用"menufont=fixed"),降低选单选项

中的空白空间 (用"vmenupad=1"),所以选单不会很大。(menufont 可能

未在指南页中描述)

.我们设定所有的选单,系结和变数可被重设

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有