分享
 
 
 

X windows系统使用指南(十四)

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

第16章 实际的使用Resource

前一章解释X resources的规则----为什麽需要它们,结构如何工作和

resource规格的格式。本章中继续讨论resources ,但较强调实用性:我们告

诉你如何及何处设定resources 预设值,来影响你的系统的一部份或全部。在

本章结束前,我们将完成一些范例,点出你可能常见的错误,并告诉你如何克

服它们。

在这些范例中,我们假设你自己的工作站叫做venus ,并且大部份时间你

是使用它。从venus 的显示器,你可在远方的机器saturn和mars上执行client

应用程式且和venus 共享档案系统;neptune 则不可,我们曾在第4章描述过。

当你在本章中时,记得resource结构是:传递资讯给应用程式,通常这些

资讯是用来传递一些比较感兴趣的预设值(例如色彩和字型),但只要应用程

式取得协调你就能使用这种设施传递任何资讯。所以我们一般状况下倾向於把

”resource规格””预设值”(defaults)”resource”这三个名词视为同一含

意。

16.1 在何处储存resource的预设值

在上一章我们只告诉你输入resource规格到”一个资料库”,但未告诉你

如何做。事实上有几个不同的地方可以储存预设值:这些”地方”通常是一个

你可以用任何编辑器修改的简单的文字档案,但有一个特殊的位置需要特殊的

工具来设定它,我们先很快的给你一个概念,再讨论细节部份。

首先它的架构非常的复杂:包含命令列选项总共有八种设定resource方法,

但有两个重点需要注意:

1 .你最好只使用其中的一或二种设置,只要你做完启始设定,你将只

须改变预设的设定。

2 .系统是被设计来掌握许多不同模式的工作,和满足那些在许多显示器

上工作或在一台显示器上工作而存取远方机器的使用者的。

总结来说,这些设置是提供来让系统尽可能富於弹性,但任何时刻你将只

须存取其中的子集合而已。

16.1.1 设定Resource的八种方法

总共有八种方法设定resource,但它们可分为下面几类:

.应用程式专属的(Application-specific)resource:resource的表列,

限定档案只能被特定的应用程式读取。

.Server专属的resource:应用设定,不管应用程式在那一种主机上执行。

.主机专属的设定(Host-specific-setting) :对应用程式在主机上执行

有关的设定,和显示器无关。

.命令列选项:在执行时期做一次关闭(one-off) 设定。

应用程式专属的resource -- 方法1 和方法2

Toolkit 程式初始时在和应用程式直接相关的两个档案中寻找resource,

这些档案只能被特定的应用程式读取:

1 .应用程式--类别(Application-class) resource档案:这个档案包含

了机器一般性(site-wide) 对应用程式的类别之预设值,通常为系统

管理者所设定。它的名称就是应用程式类别的名称,在标准安装的系

统中它是储存在目录/usr/lib/X11/app-defaults 中,例如xterm 的

相关档案为:

/usr/lib/X11/app-defaults/XTerm

在core版中,有一个相关於Xmh 的此种档案,观察此档案可以看所使

用之设定的型态。

2 .你自己拥有的应用程式专属的resource档案:这个档案的名称和上述

相同,但它存放在不同的地方----由shell 变数$XAPPLRESDIR所指定

的目录,如果未定义,则放在home目录。例如对Xmh 类别的程式,它

的档案放在下列二者之一:

$XAPPLRESDIR/Xmh

$HOME/Xmh

你可以使用此种档案,处理方法1 中你不喜欢的 site-wide档案使其无

效。

Server专属的Resource -- 方法3 和方法4

这是对你目前工作的Server(显示器)做有关的设定。键盘的设定通常是

server专属的(因为不同的显示器有不同的键盘)。另一个server专属的特徵

为显示器是彩色或单色。

Resource和这些有关的项目会被所有与这个终端机相关的应用程式应用到,

并且不论应用程式在何主机上执行。(例如,如果你使用的显示器为单色,则

不管你的应用程式在何处执行,你还是不会要它使用彩色。)

储存server专属设定的方法是:

3 .server的RESOURCE_MANAGER性质(property):(你可在12章中xprop

的输出看到),使用下述的xrdb程式,你可以在server的根视窗的

RESOURCE_MANAGER性质中储存resource设定。它的优点如下:

(a) 你不需编辑任何档案即可设定预设值。(当你为了了解系统而实

验系统时特别有用)

(b) resource被server掌握,所以不论应用程式在那一部主机上执行,

均能被所有的应用程式应用。在我们的范例中,在neptune 的

情况下特别有用,甚至在不和我们的显示机器venus 共享档案系

统时,它仍然自动地选出为了使用此显示器所必需的resource设定。

4 .你的$HOME/.Xdefaults档案:(只有在根视窗没有RESOURCE_MANAGER

性质定义的情况下使用)。如果你对xrdb尚不熟悉,你便可以此档取

代,但你必须在每一部你执行client应用程式的机器上均设定一个。

主机专属设定 -- 方法5 和方法6

主机专属预设值和server专属相反,不管应用程式所使用机器的终端机为

何,只要应用程式在此主机上执行,均使用主机专属预设值,你可以用它们来:

.让应用程式在不同的机器上对不同的档案系统作计算,例如:被一个应

用程式读取的资料档案可能在不同的主机上保持不同的位置。

.区分显示在同一个萤幕上不同的主机的视窗(这些视窗可能由同一个应

用程式执行),例如:你可以要所有在mars机器上执行的xterm 的视窗

为红色的边框,而在saturn上执行的视窗为黄边。

.调高一个相同的应用程式在不同的client机器上版本的差异,例如:

xterm 在venus 是标准的MIT 版,但在neptune 机器上是由第三集团修

改过以适应机器结构的产品,这两版的xterm 可能并不完全相容。

主机专属Resource储存在:

5 .由$XENVIRONMENT 来的档案名称:如果shell 变数$ENVIRONMENT有被

定义,它会被解释为一个含有resource设定的档案之完整的路径名称。

6 .你的$HOME/.Xdefaults-thishost 档案:(当$XENVIRONMENT 未被定

义时使用)。注意它和我们先前的档案有所不同,它必须附加上主机

名称,例如,如果你在neptune 执行应用程式而在venus 显示(假设

RESOURCE MANAGER性质未定义),则server专属 resource 读取自:

.Xdefaults

而主机专属resource则是:

.Xdefaults-neptune

两者均在neptune 的家目录(home directory)中。

注意:在不同的小节中,我们曾说过类似”server专属resource读取自...”

这可能造成误导:”如果你实际需要,你可以放置任何型态的resource设定到

任何的档案或资料库。”我们真正的意思是你应该放置机器特性或不论甚麽的

resource到任何地方,如果你这样做,你将获得你需要的动作。

命令列选项 -- 方法7 和方法8

最後,你可以藉着命令列选项设定应用程式的值。通常当你设定预设值时

,为的是你不需要使用选项为你的程式作X相关的设定。但你实际上可以用它

们来:

.一次关闭(one-off) ,例如:你暂时性地在萤幕上需要一个极小的xedit。

.为了区别在相同应用程式中各自的成员,你已看过一个这样的例子,当

我们使用命令

xterm -name demo

来设定应用程式的成员名称给demo,将造成以应用程式名称为demo的

resource取代xterm 的resource。

命令列选项分为下列两种:

7 .应用程式专属选项:例如xclock的-chime的xpr 或-scale。

8 .Toolkit 标准选项:所有用到Toolkit 的应用程式均接受一些标准的

命令列选项,我们看过其中的大部份,包括-fg, -bg, -display,

-geometry 等等,标准选项的清单在”X Toolkit Intrinsics ”手

册的2.3 节中。

在其中有一个选项-xrm,重要的足以用一个小节来描述。

Toolkit 标准选项-xrm

大多数一般的resource均能被命令列选项明确地设定,例如你可以用

-bg colour设定视窗背景颜色。但无论如何,有一些resource并没有符合的选

项。为了克服这点,Toolkit 提供一个 "捕捉遗漏" (catch all) 的选项-xrm

(X Resource Manager 缩写)。

-xrm以一个引数当做resource规格,就如同你在预设值档案中输入的相同,

例如:你可以输入:

xclock -xrm "*update:30"

xclock -update 30

是相等的。

在同一命令列你可以使用数次-xrm,但每一次只能包含一个resource规格,

例如:

xclock -xrm "*update:30" -xrm "*chime:on"

-xrm的好处在於你可以用它来设定任何resource供应用程式使用,尤其是

那些和命令列选项不符合的resource。其中一些非常有用的像:

iconX, iconY:视窗表徵图左上角x,y 座标的位置。

iconPixmap:被用来当作视窗表徵图的位元映像的名称,你可以用它

来指定任何的位元映像当作应用程式表徵图。(位元映像

为已有或利用bitmap程式建立。)例如:命令

xedit -iconic -xrm "*IconPixmap:cntr_ptr"\

-xrm "*iconX:500"\

-xrm "*iconY:400"

的意义为将xedit 设定以表徵图开始启始,表徵图的左上角

座标为(500,400) (在大多数的显示器会在萤幕中央),使

用名为cntr_ptr的位元映像来当作表徵图。

backgroundPixmap:设定用一个位元映像当作背景。

borderPixmap:设定以一个位元映像当作视窗的边,例如:

xclock -bw 20 -xrm "*backgroundPixmap: scales"\

-xrm "*borderPixmap: cntr_ptr"

执行xclock,用一个宽达20个像素的边框,视窗的背景为鱼鳞

(fish-scales) 图案,边框则用cntr_ptr的位元映像。

所有的这些resource当然也可用类别指定。(如IconX ,BorderPixmap等等。)

注意:请记住,-xrm只有在程式有用到Toolkit 才可应用。

16.1.2 设定Resource不同方法的摘要

现在我们将如何对一个指定应用程式resource设定的八种方法作一摘要:

应用程式专属resource:它们被两个档案掌握,且仅能被Toolkit 使用,

其中一个档案通常由系统管理者设定,另一个由你自己设定。

server专属的resource:不是存在根视窗的RESOURCE_MANAGER性质中,便

是在你的$HOME/.Xdefaults档案中。

主机专属resource:如果shell 变数$XENVIRONMENT 有定义的话,存在其

所定义的档案中,否则在你的$HOME/.Xdefaults-host 档案。

一次关闭设定:用应用程式的本身命令列选项来设定,和用Toolkit 标准

命令列选项,包含”捕捉遗漏”-xrm.

它们以下列顺序处理:

if (程式使用Toolkit )

读取 /usr/lib/X11/app-defaults/class档案 (1)

读取你的 $HOME/class档案 (2)

if (RESOURCE_MANAGER性质被定义)

处理内含的指定 (3)

else

读取你的$HOME/.Xdefaults档案 (4)

if (shell 变数XENVIRONMENT被定义)

读取所定义名称的档案 (5)

else

读取你的$HOME/.Xdefaults-host 档案 (6)

if (程式使用Toolkit )

处理标准的resource选项,包含-xrm (7)

处理应用程式本身的选项 (8)

现在我们将更详细的看一个较不熟悉的方法 -- 用来储存server本身

resource的方法。

16.2 在Server上储存预设值 -- xrdb

大部份预设值的结构均和档案有关,当应用程式启始时,不同的档案被读

取且其内容被处理,这种方式的缺点为你希所有的client在一个特定的

server上使用同一组的预设值,但client所执行的机器上如果没有一个共同的

档案系统,你该怎麽办?

答案是在server本身储存预设值。X的性质设施是一个具有一般性目的的

结构。(记住,一个”性质(property)”是一小段已知格式资料的名称,被储

存在server),指定由server根视窗的RESOURCE_MANAGER性质载入,且当应用

程式启始时系统会注意此事。当视窗系统启始时,RESOURCE_MANAGER性质未定

义:如果你要使用这个设施,你必须明确地设定它。

并没有一个一般性的工具来操作一个性质,所以X提供了一个特殊的程式

来处理resource性质,它就是xrdb(the X Resource DataBase 公用程式)。

16.2.1 xrdb能为你做什麽

为了方便起见,本章剩馀的部份,我们只把RESOURCE_MANAGER性质和它的

内容当成”资料库”。

xrdb的功能非常简单,它让你能:

.设定一个新的资料库。

.看目前有那些resource在资料库中。

.在现存的资料库加入一个新的resource。

.完全去除资料库。

这些是基本操作,且很容易完成。当然也有一些更进一步的功能可以很精

确地让你控制resource,但我们先来讨论基本操作。

16.2.2 使用xrdb的基本功能

xrdb的操作类似大多数Unix的程式:它从一个档案或标准输入读取输入资

料,并且你可以用命令列选项来控制它的操作模式,它所读取的输入是我们曾经看

过的一系列resource设定,不过比较特别的是它把这些设定载入资料库,让我们看

一看它主要的功能:

设定一个新的资料库:输入下面命令两者之一:

xrdb filename

xrdb < filename

用以将一个档案中的设定载入到一个资料库中,如果只键入xrdb,表示你将由

标准输入(通常为键盘)直接输入设定,稍後我们将说明xrdb所接受的档案格

式,但现在先把输入resource设定当作和.Xdefaults档案或-xrm引数相同的方

法,例如,你可以用下列的方式定义xclock设定:

venus% xrdb

xclocks*Background: pink

xclock*update: 30

xclock*backgroundPixmap: cntr_ptr

通常你用一个档案当作xrdb的输入,也就是说,xrdb从一个档案载入预设

值作为你的视窗系统初始化的一部份。如果你很有经验,直接输入它的设定也

许容易些。

查看现存资料库中的内容,输入命令:

xrdb -query

则xrdb将以明白本文格式(plain text format) 印出资料库的内容(-query可

以缩写为 -q )。

(你可能记得也可以在根视窗用xprop 来看资料库的内容,但xprop 的输

出格式不太灵巧,它给你其它一大堆你不需要的资讯。)

如果需要,你可以抓取xrdb的输出到一个档案,编辑它,更改设定後可再

用它当作xrdb的输入。(下一项功能告诉你一个更好的方法)

注意:查看资料库,你必须使用选项-query。如果你忽略这个选项而只输

入xrdb,将造成会清除资料库,且xrdb在等待你自标准输入键入你

新的设定。

在现存资料库加入新的设定:加入新的设定到资料库且不要破坏原有的设

定,使用命令:

xrdb -merge filename

(-merge可缩写为-m,如果你省略档案名称,xrdb会自标准输入读取。)

xrdb自指定的档案中读取resource设定,并加入现存的资料库中;对於资料库

中已存在的resource,如果有新的设定,旧值会为新值取代,否则则不会变动。

完全移去资料库:如同先前所述,当系统结束时资料库会自动消失,但如

果你在系统仍在执行时移去资料库,使用命令:

xrdb -remove

本节介绍xrdb基本的功能,下一节我们介绍当你熟悉系统时,你可能需要

的更进一步的功能。

16.2.3 xrdb的档案格式

你已知道大多数的格式细节 -- 你可以用标准的resource规格的形式

characteristic: value

上述的格式你已看过多次,但xrdb有两个额外的规则:

1 .注解(comments):每一行的开头如果是惊叹号(!)会被忽略,所以

你可以此当作注解。

2 .xrdb预设将它的输入列传到C 前处理器。

让我们进一步看一看前处理器的过程。

xrdb前处理它的输入列

让我们看一看一个你可能碰到的典型问题。假设在一般的场景,你使用下

列显示器:

venus 彩色萤幕,正常解析度

saturn 单色萤幕,正常解析度

mars 彩色萤幕,高解析度

以上三者共享一个共同网路档案系统,当你在一个显示器上启动X,你需

要定义预设值来反应显示器的特徵。例如:在高解析度萤幕你可能需要较大的

预设字型,或是你不需要在单色系统上定义彩色预设值。

如何做呢?让我们看一看,如果你能使用.Xdefaults-host 档案:在

.Xdefaults-venus我们包含了彩色指定,而在.Xdefaults-saturn 我们只放入

单色型态的叁数。行得通吗?当然,但是是有限度的:它只能掌握应用程式在

和server相同的机器上执行,如果应用程式在其它的机器上执行会得到它们主

机上的预设档案。所以如果你使用venus 且在saturn启始远方的client,将会

用到.Xdefault-saturn而错失所有的彩色指定。

你能够只使用.Xdefault 档案来区分机器吗?不能,因为三台主机共享相

同的档案系统,所以$HOME/.Xdefaults会被venus 获得也会被其它的机器获得。

答案是在resource处理程序的某些地方,有一个结构可以分辨出所使用

server的某些特徵。xrdb可以用相当简单的办法做到这点,它先定义一些说明

server特徵的C 前处理器符号,而後将它所有的输入传递到前处理器,最後将

处理过的资料载入资料库。指南页列出所有的xrdb定义的前处理器的符号,但

在此处我们需要用到的是:

X_RESOLUTION=n:n是每公尺长萤幕有多少像素。(根据我们的server,我

们正常解析度的萤幕为每寸90个像素,相当於每公尺3454个像素。)

COLOR :只有萤幕支援彩色才被定义。

WIDTH,HEIGHT:萤幕的宽度和高度,单位为像素。

图16-1显示我们如何在xrdb的输入档案使用这些。(我们命名为

$HOME/.Xresources ,稍後我们仍将再度用到。)它可以正确地做到我们所想

要的 -- 它正确

[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- 王朝網路 版權所有