BBS水木清华站∶精华区

寄信人: <bbs@captain.net.tsinghua.edu.cn>  
标  题: X-视窗使用者手册附录  -- Alex 整理 
发信站: 华南理工大学 BBS木棉站 
日  期: Tue Aug 20 08:35:35 1996 
 
附录A 文件指引 
 
A.1 本发行版所提供手册 
 
    下面所列有关X的手册被以硬拷贝形式提供, 视为完整 MIT 发行版的一 
部分. 
 
    这些手册的文件来源包含於软体磁带中, 且所对应的档案名称注明於括弧 
内. 想列印硬拷贝版本, 可以使用 nroff 或 troff, 加上选项 -man表示指南 
页 (manpage), -ms选项代表教学 (tutorial) 或其它手册.  对於某些较长的 
手册, 被转换成 PostScript 型式的格式化的档案 也包含在其中; 因为它们 
长度较长, 所以被压缩, 必须使用 uncompress 解压缩. (假如你尚未解压缩 
, 它们应包含在发行版磁带的 $TOP/util/compress, 可按照指示去使用它). 
 
  1. 发行版注意事项, 包括安装指示与本发行版内容的描述. 几乎这里所有的 
     内容均被再制作成本书附录B,C与D. ($TOP/doc/releasenotes/*; 
     PostScript 在 $TOP/hardcopy/releasenotes.PS). 
 
  2. 程式指南页, 或 "指南页(1)". 来源不只储存在一个地方, 但有其代表 
     的程式来源. 在预设安装程序, 它们被安装於系统指南页目录内, 所以 
     它们可以用 man 去读取. ($TOP/.../*.man; PostScript 在 
     $TOP/hardcopy/man/*.PS.Z) 
 
  3. Xlib 功能的指南页; "指南页(3X11). ($TOP/doc/Xlib/Xman/*). 
 
  4. Toolkit Intrinsics 功能的指南页; "指南页(3Xt). ($TOP/doc/Xt/Xman/*; 
     PostScript 在 $TOP/hardcopy/Xt/man.PS.Z). 
 
  5. 由 Scheifler, Getty 与 Newman 所写的一本书 "X WINDOW SYSTEM, C 
     Library and Protocol Reference" (Digital Press, 1988), 内容包括 : 
 
     . "Xlib - C language Interface" 手册. ($TOP/doc/Xlib/*; PostScript 
       在 $TOP/hardcopy/Xlib). 
     . "X Window System Protocol, X Version 11, Release 3" 手册. 
       ($TOP/doc/Protocol/). 
 
  6. "X Toolkit Intrinsics" 手册. ($TOP/doc/Xt/*; PostScript 在 
      $TOP/hardcopy/Xt/intrin.PS.Z). 
 
  7. "X Toolkit Athena Widgets" 手册. ($TOP/doc/Xaw/; PostScript 在 
     $TOP/hardcopy/Xaw/widget.PS.Z). 
 
  8. "Bitmap Distribution Format" 手册. (文件来源是 Scribe 格式, 但 
     具有 PostScript 说明, 在 $TOP/doc/bdf/; 完整的 PostScript 在 
     $TOP/hardcopy/bdf/bdf.PS.Z). 
 
A.2 包括在本发行版本内的其它文件 
 
  1. 字型命名惯例的描述. ($TOP/doc/fontnames/fnames.txt). 
 
  2. 对不同X功能的小教学程式 : 
 
    . 在你撰写的X程式里使用颜色. ($TOP/doc/tutorials/color.tbl.ms). 
 
    . 转换 X11 第 2 次发行版的widget 为第 3 次发行版. 
      ($TOP/doc/tutorials/x10equiv.txt). 
 
    . 使用资源. ($TOP/doc/tutorials/resources.ms). 
 
    . Xlib 函数的 X 版本 10 与版本 11 之对照. 
      ($TOP/doc/tutorials/x10equiv.txt). 
 
  3. 安装 MIT server 至不同系统的注意事项. 
 
    . 安装 X V11 Sample Server 的 godzilla 指南 ($top/doc/server/ddx.tbl.ms). 
 
    . X V11 Sample Server 的安装层(Porting Layer)定义 
      ($top/doc/server/ddx.tbl.ms). 
 
    . X V11 Sample Server 的安装策略 ($top/doc/server/start.ms). 
 
    . X V11 Server 扩充 ($top/doc/server/ext.doc). 
 
  4. "client 间的通讯惯例手册" (Inter-Client Communication Conventions 
      Manual)" 通常以缩写为 ICCCM 来参用. 它应该包含在发行版中的 
      $top/doc/conventions/, 但在发行版中有被修订时才会存在否则常被 
      省略, 所以你可以透过电子邮件取得一个拷贝 -- 见附录F "X 网路与 
      电子邮件服务" 的 xstuff 一节. 
 
  5. 撰写X程式的教学程式, 先教你使用基本的 Xlib 函数, 然後使用 Toolkit. 
     ($top/doc/helloworld). 
 
A.3 包括在本发行版本内的其他资讯来源 
 
    对某些项目, 像 widget 的名称, resources 与动作 (action), 你必须 
看原始码 : 
 
     . Widget提供给Intrinsics 的部分. ($TOP/lib/Xt/). 
 
     . 在 Athena Set 里的 Widget ($TOP/lib/Xaw/). 
 
     . client 程式的原始程式. 每个 client 的原始程式储存於不同的目录, 
       $Top/Clients/Program-name/ 或 $Top/Demos/Program-name/. 
 
===== 
 
附录B 安装X 
 
B.1 安装X的提示 
 
    .尽快地获得所有文件的拷贝,理想的状况是在开始安装系统之前(你可 
      以自行将磁带上所包含的档案列印出来,或是由附录E所列的供应商订 
      购一份。) 
 
    .首先,对已有的建构档案尽量少做更动,如果你是第一次安装X,我们 
      强力推荐你使用预设的目录来安装那些系统的各个不同的部份,只有在 
      有确实需要更动目录名称时,才考虑重新安装。(如果你不如此做,当 
      有些问题发生时,你将无法知道,它真的是一个问题或你只是安装时犯 
      了一个小错误而已) 
 
    .如果你是用这次发行的版本建立一个标准的系统,你几乎不需要做任何 
      更动便可完成安装 -- 建构档已正确地被设定。(本版发行的备忘录对 
      此有一点误导,你可能会得到一个错误的印象,以为不论你使用什麽系 
      统,均需作大量的更动。) 
 
    .当你开始安装,对大多数的系统而言,你不需明确指定系统的型态,它 
      的建立是根据C语言的前处理器(preprocessor)来定义系统名称而自动 
      找到。 
 
    .在你熟悉core版之前不要安装contrib 软体,因为它安装费时,且易产 
      生问题,当你熟悉系统之後,你可能总会修改一些建构参数。 
 
    .如果你真的需要使用不同预设值的建构,阅读文件 
      $TOP/util/imake.includes/README 可得到关於如何更动的资讯。(它 
      也对工具程式imake 给了一个概观,imake 是一般Unix系统中make的前 
      端(front_end) ,用以建立系统)。 
 
 
B.2 建立本发行版 
 
    在本次发行的软体分为两类:一部份核心软体由X协会标准所提供,另一 
部份则任何人都有可能提供,要使得核心软体这一部份能在大多数的地方重新 
建构、建立和安装需极大的努力,而那些使用者贡献的部份,也就是说,未经 
X协会标准编译和测试的部份只能自行逐一建立,在util/scripts中的ximake.sh 
可能对从Imakefiles到建立Makefiles 非常有用。 
 
    几乎所有在核心软体中的makefiles 均自动地由名叫imake 的公用程式所 
产生,所有的Makefiles 初始版本均包含了在哪些地方不能使用imake (无疑 
地,在特定的机器上需要修正)。在许多系统,X必需以正确的磁带方能建立。 
无论如何,它可以藉简单的设定目录util/imake.includes/中的档案site.def 
和*.macros中之参数,来重新建构。 
 
 
B.2.1 安装摘要 
 
    欲载入(load)和安装此次发行的X Window System你将需要: 
 
    1. 读完本次发行的备忘录。 
 
    2. 建一个你读入磁带的目录(通常名称类似/usr/local/src/X或/src/R31) 
        你将需要大约30 megabytes给核心软体,和超过80 megabytes给使用 
        者贡献软体。 
 
    3. 从步骤2 卸下核心软体磁带,既然使用者贡献软体必须自行建立,你 
        可以等到以後载入,每一卷磁带含有一个非常大的Unix的tar 档案, 
        以每英□1600位元方式储存。 
 
    4. 阅读档案util/imake.includes/README以了解如何建构你的特定X系 
        统。同样地,确定你依照目录server/ddx/ 中README档案来计画建造 
        你的server。 
 
    5. 如果你计画在一部以上的机器编译这个版本并且要有一个分类档案系 
        统,你可能希望依照util/scripts/lndir.sh 的说明来建立符号连接 
        树在每一个目的机器,它允许所有的机器如你所希望的使用X而分享 
        一组原始程式,在这种情况下,build tree这个名词被用来当作你编 
        译目录树的参考(和含有实际档案的source tree 有所区别)。 
 
    6. 如果你是在A/UX 1.0下建立在 Macintosh之上,确定你是自目录 
        server/ddx/macII执行R3 setup.sh 。它从util/cpp中的公益(public 
        domain) 原始码建立一个C的前处理器,和修正一些放错位置的系统 
        档案。如果你是在一部SUN 上,确定你在档案 
        util/imake.includes/Sun.macros的顶端设定了四个OS的参数。如此 
        作可防止在不同的SunOS 编译器下的错误。如果你是在Apollo上建立, 
        确定你是使用9.7.1 或更後面版本的C编译器,否则,server将无法 
        正确地编译。 
 
    7. 确定你已遵循所有和机器特性有关的指示,且imake 也是依你的机器 
        而建构。(看source tree 中util/imake.includes/Imake.tmpl顶端 
        的#ifdefs 区段(blocks))。 
 
    8. 当你完成了建构,你可以准备建立core版,注意那些在 
        util/imake.includes/应用到你的系统的.macros 档案。它们在接近 
        顶端有一行设定一个make的变数名称为BOOTSTRAPCFLAGS 。如果这个 
        变数值是空白,你可以用下列的命令开始建立: 
 
            % make World > & make.world & 
 
        如果不是空白,你必须将此定义附加到命令列上。这可用imake 对所 
        有的编译器设定特定的cpp 符号。(如果你在不同的系统安装,见 
        util/imake/imake.c)在所有的core版提供的macro 档案中,只有 
        A/UX需要这个旗标: 
 
            % make BOOTSTRAPCFLAGS=-DmacII World >& make.world & 
 
        不要用输出档make.log当作make clean藉著make World移去此名称的 
        所有档。这将导致重建所有的Makefiles 和执行make -k all 来编译 
        core版中所有的东西。这将依你的机器不同,花掉2 至12小时。 
 
    9. 当make完成後,检讨log 是否有任何问题。必须要没有严重的问题, 
        A/UX的使用者可以忽略有关列举型态不调和(enumeration type 
        clashes)的编译警告,Applo 的使用者可以忽略最佳化的警告。 
 
    10.如果你对一切均感到满足且建立正确程序,测试一些不同的程式(如 
        server, xterm, xinit, etc)。你也许需要在根目录执行 server或 
        xterm ,如果你执行上有问题,第二部的工作站或终端机将很有用。 
 
    11.对你旧版的Xheader file, binaries, fonts, libraries 等作备份。 
 
    12.到build tree顶端并键入 
 
            % make install >& make.install 
 
        你将不是在根目录做便是在熟悉的目录写入存取(看Imakefile 最上 
        阶层和util/imake.includes/Imake.tmpl)。xterm 程式在大多数的 
        系统必需安装setuid到根目录,xload 程式必需安装setguid 到那些 
        属於/dev/kmem 的档案。 
 
    13.如果你要安装指南页,在build tree顶端键入 
 
            % make install.man 
 
    14.如果你要建立和安装lint libraries,在build tree的顶端输入: 
 
            % make install.ln 
 
        如果你是第一次安装X,你可能也需要作以下的步骤。检查一下在 
        server/ddx目录中不同的README档案中附加的指示。 
 
    15.加入装置驱动器或重新建构你的核心(kernel)。 
 
    16.建立附加的虚拟终端机(pseudo terminals)。查看你的操作系统说明 
        /dev/MAKEDEV和问你的系统管理者细节部份。 
 
    17.阅读有关新的显示管理器xdm 的指南页,这个程式提供了一个可携的 
        自动执行X的方法,和许多为了初学者所建立非常好的介面符号。这 
        取代了原先自/etc/init 执行的终端机模拟器xterm 。 
 
    18.确定所有的X11 的使用者在他们的搜寻路径中均为BINDIR的目录(通 
        常为/usr/bin/X11)。 
 
 
B.2.2 操作系统需求 
 
    X受欢迎的理由之一为和操作系统无关。虽然我们讨论的范例均为在Unix 
系统下,但有许多非Unix操作系统的制造厂商也提供X。本次发行的Server已 
在下列系统建立: 
 
          4.3+tahoe 
          Ultrix 3.0 FT2(Ultrix 2.0) 
          SunOS 3.4 
          HP-UX 6.01 
          Apollo Domain/IX 9.7 
          IBM AOS 4.3 
          A/UX 1.0 
 
    如果你使用较早的版本,你可能招致一些麻烦,特别是,server将无法在 
IBM 4.2A第二次发行版执行。在server/ddx/ 中不同的README档案描述了对编 
译器、函数馆、前处理器等等的特定需求。例如前述的A/UX 1.0的使用者将需 
要建立一个新版的C前处理器,而Apollo的使用者将需要9.7.1版的C编译器。 
 
    你应在使用X前先确定你的网路系统和相互通讯公用程式作用正常。如果 
像talk和rlogin这样的程式无法工作,X大概也不行。 
 
 
B.2.3 读取本发行版的磁带 
 
    本发行版可以用电子媒体的方式从DARPA 交换网路、UUNET 计画、一些谘 
询公司和不同的UUCP的档案库。尤有进者,MIT 软体发行中心提供了一组2400 
□的1600BPI 密度的磁带。(该中心不提供卡带或磁碟片) 
 
    每一卷MIT 的磁带包含有一个大的tar 目录结构,内含发行版一部份的软 
体的原始码和文件。如果你受限於磁碟机的空间,你可以只下载core磁带,删 
除任何你不需要的server,和产生一份使用者贡献磁带的目录以供以後查询, 
所有的档案名称均以相对路径方式给定(在开头以一个点替代斜线),所以这 
个发行版可放在你的档案系统的任何地方。 
 
    在读取磁带之前,确定你有足够的磁碟空间,以下为你对每卷磁带所需的 
空间。 
 
    版名        内容                        megabytes     情况 
    core        servers,函数馆,公用程式       35         必需 
    contrib-1   程式,示范程式,字型           36         推荐使用 
    contrib-2   使用者贡献的工具               34         推荐使用 
 
    编译过的程式估计需要二分之一到三分之二原始码所占的空间,所以,光 
是core版你便需要大约60 megabytes的磁碟空间。 
 
    建立一个目录用以放置所有的原始码,在此目录中,执行适当的作业系统 
命令来读取core版磁带。如果你的机器预设tar 为读取1600 BPI的磁带,则你 
键入的指令将类似: 
 
        % mkdir /usr/local/scr/X 
        % cd    /usr/local/scr/X 
        % tar x 
 
必要时可向你的系统管理者取得协助。 
 
 
B.2.4 使用符号连结(Symbolic Link) 
 
    本发行版在处理使用连结(Symbolic由机器所支援)避免档案重覆(大多 
的header file ),如果你在未提供建构档案情况下建立本发行版,你必须在 
适当的util/imake.includes/*.macros档案检查LN建构参数。如果你的作业系 
统不提供软体连结,LN需被设定为建立硬体连结(hard link) 或拷贝原始档。 
 
    如果你需要在建立後将本发行版移动到其它的机器,用tar 替代CP或rcp 
以保留日期和连结,通常可用下列的命令达成: 
 
        % (chdir/usr/local/src/X;tar cf - .) | \ 
          rsh othermachine "(chdir/moredisk/X; tar xpBf -)" 
 
    可向你的系统管理者获得协助。 
 
 
B.2.5 建构本发行版 
 
    这个发行版广□使用 imake 公用程式, 它可从机器相关的 (machine- 
independent)Imakefiles 产生机器特有的 (machine-specific) Makefiles. 
另一个叫做 makedepend 的公用程式,  是用於产生C语言档案的 Makefile 相 
关性 (dependencies). 假如你不在乎可携性 (portability), 虽然我们强烈地 
鼓励你去使用imake 与 makedepend, 但是仍提供有样本 makefiles. 
 
    imake 的建构档被置於 util/imake.includes 目录. makefiles 是由一个 
称做imake.tmpl 的模板 (template)档、一个机器特有的 .macros 档与一个 
site 特有的 site.def 档所产生. 只有极少例外, 建构参数为 cpp 符号, 它可 
以被定义於一个 per-server 基础上或在一个给定 site 里的所有 server.  模 
板档案不应该被修改. 
 
    util/imale.includes/README 档案每一个建构参数以及它可以设定的值. 
预设值的选择是考量可适用於多种机器且易於维护. site 特有的建构应在 
sit.def 档案内使用下列语法描述 : 
 
        #ifndef BuildParameter 
        #define BuildParameter site-specific-value 
        #endif 
 
 
B.2.6 编译本发行版 
 
    建构参数设定後, 你应该可以在构造树 (build tree) 的最上层利用下列 
命令以编译core 软体 : 
 
        % make World > &make.world & 
 
    若在建立过程, 将 make.log 这个特殊档案删除, 则请不要将输出重导 
(redirect) 到make.log。依照使用机器的不同, 这个步骤将花费 2 - 12 小 
时, 且在大多数的机器上皆能顺利完成。 
 
    在所有 Makefiles 与相关性都建好之後, 你必须重新启动以便使你的构 
造 (build) 发生作用, 请在构造树的最上层输入下列命令: 
 
        %make -k > &make.out & 
 
假如你以後决定改变任何建构参数, 你将需要作另一个完整的 make World. 
 
 
B.2.7 安装发行版 
 
    假如每一个编译皆成功, 你可以输入下列命令, 从建造树最上层安装软体: 
 
        # make install 
 
    假如你不想安装在根目录, 你必须建一些可写入的目录并从你的帐号 
(account) 安装它们, 然後检查在 BINDIR 目录 (通常是 /USR/BIN/X11) 内 
的 xterm 与 xload 的所有权(ownership) 与保护模式 (protection). xterm 
必须安装 setuid 至根目录以便它能设定虚拟终端机与更新/etc/utmp. xload 
需被 setuid 至根目录, 或 setgid 至拥有档案 /dev/kmem 的目录以使它们 
可以取得系统的平均负载. 
 
    假如你的 /etc/termcap 与 /user/lib/terminfo 资料库没有 xterm 的 
入口 (entry),可参考在 client/xterm 目录内的样本入口. System V 的使用 
者将需要用 tic公用程式编译 terminfo 入口. 
 
    假如你计划使用 xinit 程式去执行X, 你可能会想产生一个将指名的X 
指到适当server 程式的连结 (link) (通常的名称像 /usr/bin/x11/ 目录里 
的 Xmachine). 然而,xinit 不打算给初学者使用; 取而代之, site 管理者被 
期望能使用 xdm 或提供友善的使用介面. 
 
    假如你想安装指南页, 请检查在 util/imake.includes/ 里的 
MamDirectoryRoot、ManDir 与 LibManDir 三个建构参数, 并在构造树的最上 
层输入: 
 
        # make install.man 
 
    假如你喜欢建立与安装 lint 程式库, 在构造树的最上层输入下列命令: 
 
        # make install.ln 
 
    最後, 确定所有使用者在它们的 PATH 环境变数都有 BINDIR (通常是 
/usr/bin/x11/). 
 
 
B.2.8 kernel 与特殊档案的注意事项 
 
    在某些机器上, 如果有一个新的装置驱动器则必须重建 kernel 或至少经 
过重新建构, 假如你以前从未执行X且使用一个没有列在这些注意事项内的系 
统, 你可能需要确定在你的 kernel 建构档案里的 csr位址能与你的硬体相匹 
配. 另外, 你应该确定在系统启动时 kernel 会自动建构显示器. 
 
    你可能需要为你的显示器、滑鼠或键盘建立特殊的装置. 例如: 
 
        # /etc/mknod/dev/bell c 12 2     # for bell on Sun 
        # MAKEDEV displays               # for displays on the RT/PC 
 
    在显示器装置档上的保护模式应该被设定成只有 server 可以开启它. 假 
如 server是以 /etc/init启动, 这个保护可以被根读/写, 任何其他的人不能 
存取. 
 
    在一个 Digital QVSS (VAXstation II) 上, 你应该使用 adb 去确定 
kernel 变数qv-def-scrn 被设定为 2, 以便使用 VR-260 监视器的整个宽度. 
这可以藉著直接地改变/vmunix 或 /sys/vaxuba/qv.o 并重新连结与安装 
kernel 来达成. 你将需要 reboot 使新值发生作用. 
 
    更详细的资料请看 Server/ddx/ 目录里对应的 README 档与指南页. 
 
 
B.2.9 测试本发行版 
 
    即使你计划在所有时间都使用 xdm 执行X, 你也应该要从另一个终端机执 
行它, 以便检查每个你所安装部份的是否已被安装且正常工作. 
 
    来自 server 的错误讯息将会显示在你的终端机, 而不是被写到 
xdm-errors 或/usr/adm/X?msgs ('?' 是显示器的号码). 
 
    测试 server 最简单的方法是先进入 /usr/bin/x11 (或任何你已安装 X 
程式的地方)然後执行 xinit, 如下: 
 
        % cd/usr/bin/X11 
        % xinit 
 
    你应该可以看到一个灰色的带状图样覆盖萤幕、一个形状像 "X" 的游标追 
踪著指标以及一个终端机模拟视窗. 否则请按下列方式检查 : 
 
1. 假如没有显示出灰色萤幕背景, 检查是否有在 server/ddx/ 子目录内的 
   README 里描述的任何特殊装置档案的许可 (通常是储存在 /dev/). 
 
2. 假如背景出现, 但游标仍是白色方形. 请确定字型是否已安装 (特别是 
   usr/lib/X11/fonts/misc/ 里的字型 cursor.snf; 见建构参数 
   DefaultFontPath). 并确定在你的每一个字型目录都有一个档案叫做font.dir. 
   这个档案是由 mkfontdir 程式产生的, 被 server 用於找出一个目录里的字型. 
 
3. 假如游标出现但不追踪指标, 请确定任何特定装置档案 (它的名称像 
   /dev/mouse) 已被安装 (见 server 的 README 档). 
 
4. 假如 SERVER 启动且不久之後变成黑色, 表示启始的 client (xterm 或 
   xdm) 当掉了.请确定 xterm 安装於根目录并建立足够的虚拟终端机. 假 
   如你正执行 xinit, 且在你的home 目录一个有叫做 .xinitrc 的档案, 
   确定它是可执行的而且上一个它所启动的程式在前景执行 (亦即命令列尾 
   端没有一个 & 符号). 否则, .xinitrc 将立刻完成, 这也是 xinit 所 
   假设的以及你所想要的. 只要你有正确工作的初始视窗, 试著从 xterm 执 
   行其他的程式. 若想用 uwm 视窗管理器定位一个新视窗, 可在闪动的方框 
   出现时按下按钮 1 (通常在指标器的最左边按钮) : 
 
        % xlock -g 200x200-0+0 & 
        % uwm & 
        % xlogo & 
        % xeyes & 
        ... 
 
    X现在可以被使用了, 研读一个新程式的指南页, 看看新字型, 你会从中 
得到乐趣. 
 
 
B.2.10 建立额外的虚拟终端机 
 
    因为每个 xterm 需要一个不同的虚拟终端机, 所以你应该建很多给它们 
(在一个小型多使用者系统你可能至少要 32 个). 每个 ptr 有两个装置, 一 
个主控 (master) 与一个从属(slave), 它们通常叫做 /dev/tty/[pqrstu][0-f] 
与 /dev/pty[pqrstu][0-f]. 假如你没有最少的 "p" 与 "q" 列建构, 你应该 
要求你的系统管理者加上它们. 这通常是以 /dev里执行的 MAKEDEV script来 
完成: 
 
        # cd/dev 
        # ./MAKEDEV pty0 
        # ./MAKEDEV pty1 
 
 
B.2.11 从 /etc/rc 启动X 
 
    本发行版提供一个可以从系统启动档 /etc/rc 执行X server 的新公用 
程式叫做 xdm,它提供一个不同於从 /etc/init 执行X 的可携式与吸引人的 
方式. 设计时考虑到可以很容易地裁剪以应不同工作站的需求, xdm 小心地 
保持 server 的执行, 提示输入使用者名字与密码并管理使用者的session. 
样本建构目前使用 shell script, 以提供相当简单的环境. 这也将是未来发 
行版继续研究的地方. 
 
    xdm 弹性的关键是它广泛使用resource, 允许 site 管理者快速与容易地 
测试不同的设定(setup). 当 xdm 启动, 它读入一个建构档 (预设是 
/usr/lib/X11/xdm/xdm-config 但可以用命令列旗标指定-config) 列出不同的 
资料档、预设参数以及启动与关机时会被执行的程式. 因为它使用标准的 
Toolkit resource档案格式, 任何可以在 xdm-config 档设定的参数也可以在命 
令列使用 -xrm 选项指定. 
 
    预设建构包含下面所列: 
 
        DisplayManager.servers:         /use/lib/X11/Xservers 
        DisplayManager.errorLogFile:    /use/lib/X11/Xdm-errors 
        DisplayManager*resources:       /use/lib/X11/Xresources 
        DisplayManager*startup:         /use/lib/X11/Xstartup 
        DisplayManager*session:         /use/lib/X11/Xsession 
        DisplayManager*reset:           /use/lib/X11/Xreset 
 
    server 档包含要启动的 server 列表. errorLogFile 是 xdm 输出被重 
导的档案.resources 档包含 xdm Login 视窗预设的resource. 特别的地方是 
特殊键的顺序可以被指定 (在 xlogin*login.translation resource), startup 
档应该是一个程式或可执行的 script, 它可以在使用者打入合理的密码之後执行 
. 它是一个作 site 特有的初始化, logging 等的圈套 (hook). session 入口是 
用於启动使用环境的一个 session 管理程式或可执行script 的名称. 假如使用者 
在他的 home 目录内没有一个可执行的 .xsession 档, 有一个简单的版本可提 
供一个简单的 xterm 视窗与 uwm 视窗管理器. 最後, 在使用者 logout之後一 
个 reset 程式或可执行的 script 会被执行. 使用预设建构执行 xdm, 加入下列 
一行到你的 boot 档 (通常叫做 /etc/rc 或 /etc/rc.local) : 
 
        /usr/bin/X11/xdm & 
 
毫无疑问地, 大多数的 site 想建立它们自己的建构. 我们建议你们将 site 
特有的xdm-config 档与其它的 xdm 档放在不同的目录, 这样才不会被某些作 
了一个 makeinstall 的人盖掉. 假如你将档案储存在 /usr/local/lib/xdm, 
下面的命令可用於以启动xdm : 
 
     /usr/bin/X11/xdm -config /usr/local/lib/xdm-config & 
 
    许多 server 在假设它们是尝试读取键盘的唯一程式下, 将键盘设定成非 
阻断式 I/O(non-blocking I/O). 不幸地, 某些 /etc/getty 的版本 (特别是 
A/UX) 将立刻看到一个零长度读取的连续 stream, 因为将它解释成 EOF 档尾 
指示. 最後 /etc/init 将取消login, 一直到某人打入下列命令: 
 
        # kill -HUP 1 
 
在 A/UX 下, 一个变通的方法是禁止从控制台 login 且从 /etc/inittab 去 
执行 xdm.然而, 请确定你存有一个旧的 /etc/inittab 拷贝以备你在出错状 
况以及你必须从网路上或单使用者模式恢复 login 的时候使用. 
 
    另一个较少为人彻底研究的是如何设定一个帐号 (account), 它的 shell 
是在client/xdm/里的 xdmshell 程式. 预设状况下这个程式不会被安装, 所以 
site 管理者需要特别查看它是否符合需求. xdmshell 公用程式确定它执行於 
适当的终端机型式、启动 xdm、等待它完成与重置控制台 (如果需要的话).假 
如 xdm resource档包含一个终止-显示器 (abort-display) 动作的系结, 就像 
下列命令 : 
 
        xlogin*login.translations: #override Ctrl<Key>R: abort-display() 
 
然後在 xdm login 视窗按下指定键 (上例是 <Ctrl-R>) 控制台即可以被恢复. 
 
    xdmshell 程式通常安装在根目录, 但仅能被特殊群体的一份子执行, 如 
此以 xdmshell作为 shell 的帐号 (account) 的人是唯一的一份子: 
 
        % grep xdm  /etc/passwd 
        X:aB9i7vhDVa82z:101:51:Acount for starting up X: (contd.) 
        /tmp:/etc/xdmshell 
        % grep 51 /etc/group 
        xdmgrp:*:51: 
        % ls -g /etc/xdmshell 
        -rws--x--- 1 root xdmgrp 20338 Nov 1 01:32 /etc/xdmshell 
 
    假如 xdm resource不曾有一个键系结至 abort-display() 动作的建构, 
一般使用者将没有方法可直接 login 到控制台. 至於是否需要则视个别的 
site 而定. 
 
 
B.2.12 支援老旧系统 -- 从 /etc/init 启动X 
 
警告 : 下面所提供的适合较老的系统且在未来的发行版将不提供. 
 
    Ultrix 与 4.3bsd 使用 /etc/ttys 建构档的一个新的扩充格式, 它允许 
你指定一个视窗系统与初始时被执行的程式. 虽然一般人比较喜欢使用 xdm, 
但系统仍然提供可在 xterm里启动X与一个从 /etc/ttys 初始的 xterm 视窗. 
 
建立 ttyv 终端机 
 
    因为大多数的 /etc/init 版本需要给每个 /etc/ttys 的入口一个真实终 
端列, 所以你必须给每一个显示器指定一个虚拟终端机. 虽然正常状态下xterm 
动态地配置一个 pty, 但是 -L 选项可以强迫它使用从 /etc/init 传过来的虚 
拟终端机. 
 
    依照协议, 具有最高的 "小装置 (minor device) 号码" 被改名成 
[pt]tyv0, 次高的被改为 [pt]tyv1, 依此类推. 最高的被改为最低的, 可使 
他们不以正常从低至高的搜寻方法 (大多数程式配置一个 pty 的方法) 取得 
. 在仅有 "p" 与 "q" 的小系统, 下面的命令可用以将两个显示器设定成"v" 
终端机. 
 
     # cd /dev 
     # mv ttyqf ttyv0; mv ptyqf ptyv0 
     # mv ttyqe ttyv1; mv ptyqf ptyv1 
 
见你的系统管理者可以获得帮助. 
 
增加视窗进入口到 /etc/ttys 
 
    只要你已经改变虚拟终端机的名称, 你就能为它们在 /etc/ttys 增加入口 
. 再次提醒这个仅对具有以新的 4.3bsd 格式启动视窗系统的系统, 不能用在 
使用 4.2bsd 小进入口格式与 /etc/ttytype 的较老系统上. 假如你的系统没 
有新的格式, 将 ttyv 的与 ptyv 的改为原名并跳到下一部分. 
 
    xserver 指南页里包含关於设定 /etc/ttys 进入口的更详细叙述. 通常 
, ttyv 被置於档案的底部且类似下列: 
 
        ttyv0"/usr/bin/X11/xterm -L -grometry 80x24+0+0 -display :0" (contd.) 
        xterm off window="/usr/bin/X11/X :0" 
 
    注意, 它不像 X10, 给 X server 命令的 server 号码之引数必须在前面 
置一个冒号. 额外的命令列选项可以在 xterm 命令列或X命令列指定. 然而, 
许多 init 的版本具有相当小的程式名称缓冲区, 限制了入口的长度. 也有某 
些版本不允许在入口里有 pound记号, 意谓著不能给任意数目的颜色指定, 这 
也是为什麽会写 xdm 的原因. 
 
    只要你曾经增加或改变任何入口, 你必须送信号给 init, 告诉它重读 /etc/ttys 
与重新启动. 在根目录下打入下列命令即可以达到这个目的: 
 
        # kill -HUP 1 
 
这将会中止在重新启动前任何改变列上的任何存在的处理 (process), 所以它 
应该仅能由系统管理者去执行. 
 
===== 
 
附录C  本发行版的内容 -- MIT Core Distribution 
 
    本文件是从 MIT 发行版内的原始资料再制作而来的. 
 
    本发行版含有大约 100 Mbytes 的原始码与文件. 因为没有人会对它的全 
部内容都感兴趣, 所以本发行版被分为大致相等的三个部分: Core 软体(核心 
软体)、不同使用者贡献的工具集和使用者贡献的其他软体. 
 
C.1 核心版 
 
    这核心版, 包含大约 30 Mbytes 由X协会成员所支援的软体, 它是由下 
面所列的目录所架构起来的. 假如你发现该版中某个部分有错误 (bug), 请填 
妥位於doc/bugs/bug-report 的表格, 并邮递至 xbugs@expo.lcs.mit.edu. 
 
  ./ 包含重要通知、一般的X指南页与所有构成该发行版子目录的最上层目录. 
 
  X11/ 所有公用的引头档 (header file) 不是储存於此就是在建立系统的各 
      阶段时被连结. 本目录与其下的位元图像 (bitmaps) 在安装阶段被拷 
      贝至 incdir架构参考所指定的目录 (预设为 /usr/include/x11).  注 
      意最後的目录名称应该是 X11, 否则所有X程式在编译时将会出错. 
 
  X11/Bitmaps/ 本目录内包含一些以 Bitmaps 格式储存 (可用 Xlib 的常式 
      XReadBitmapFile, XmuReadBitmapDataFromFile 与 XWrite BitmapFile 
      处理者) 的一些单平面影像. 在 C 程式中它们通常被以 #include 引入 
      且使用 xsetroot 公用程式被当作背景磁砖 (background tiles) ,而且 
      X工具集 (toolkit) 允许使用者指定目录内的档名作为游标与表徵图. 
      详细资讯请参考 bitmap 的指南页与util/bm-convert/bm-convert.doc. 
 
  clients/ 本目录是使用者程式来源树 (source tree) 的最上层. 其他一些 
      程式则存於 domos/ 与 examples/ 树,原因为它们只是为了示范目的而 
      已. 其他一些非常有用的使用者贡献程式可在 coutrib/clients/ 下找 
      到. 
 
  clients/bitmap/ 本目录包含建立与修改单平面位元映成影像 (就像储存於 
      X11/bitmaps/ 的一样) 的编辑器. 可用於定义双色磁砖 (为了用stipple 
      填满区域) 与遮罩 (为剪除与指定游标影像). 所有resource皆可以 
      用命令列与预设方式指定. 两个新的程式bmtoa 与 atoma 已经被加入, 
      它们用於转换位元影像档案成为简单的字串及简单字串转换成映像档案. 
 
  clients/uwm/ 本目录包含一个较老的X视窗管理器. 一些错误已更正且增加 
      了一些新功能. 
 
  clients/x10tox11/ 本目录包含一个重写过的 X10 至 X11 的通讯协定转译 
      器. 它充当X10 Server, 转换 X10 的 request 为 X11 的 request 以 
      及 X11 的 event 为 X10 event. X10toX11 程式允许 X10 程式不经修 
      改即可在 X11 server 上执行, 使得从 X10 转换成 X11 非常容易, 新 
      版本实质上会比旧版本有更快更精确的结果. 
 
  clients/xbiff/ 本目录包含一个简单的小程式, 它会在你有新邮件送达时, 
      在邮箱上显示一个竖起的旗帜, 它使用 athena widget set 里的 Mailbox 
      (邮箱) Widget. 
 
  clients/xcale/ 本目录内包含一个可以模拟 TI-30、HP-10 与计算尺的桌上 
      型计算器程式. 这个程式需要被重新改写. 
 
  clients/xcliphoard/ 本目录内包含两个程式用以处理段落. xclipboard 搜 
      集来自其他 client (见 xterm 与 Athena Text widget) 的文字将它们 
      送至 CLIP-BOARD, xcutsel 提供介於只能处理剪一缓冲区的旧 client 
      与使用段落的新 client 之间的桥梁. 
 
  clients/xclock/ 本目录内含有一个可显示时钟的简单小程式. 它可以显示 
      指针或数字型时间, 它使用 Athena Widget Set 里的 Clock Widget. 
 
  clients/xdm/ 本目录内包含新的显示管理器 (Display Mamager). 它企图取 
      代 xterm-L与大多数使用 xinit 的场合. 位置管理者应该研读文件与样 
      本架构以裁剪 xdm 配合它们的特殊环境. 一些样本架构提供於 config 
      子目录下面. 
 
  clients/xdpyinfo/ 本目录包含一个可以列印有关显示器的视觉影像与 
      萤幕的资讯的公用程式. 
 
  clients/xedit/ 本目录包含一个建立於 Athena Text widget 与 X Toolkit 
      之上的文字编辑器. 
 
  clients/xev/ 本目录包含一个可以检查 event 内容以及它们如何产生的程式. 
 
  clients/xfd/ 本目录包含一个可显示指定字型的字元之公用程式. 
 
  clients/xhost/ 本目录包含一个以主机为基础 (host-basis) 控制存取主机 
      显示器的公用程式. 
 
  clients/xinit/ 本目录包含一个可以在无法从 /etc/init 启动一个X server 
      与初始化一个 client 的系统上, 启动X server 与初始化 client (通 
      常是一个终端机模拟器) 的公用程式. 
 
  clients/xkill/ 本目录包含一个公用程式可除去不要的视窗. 
 
  clients/xload/ 本目录包含一个可监视机器平均负载状况的程式. 它可以显 
      示最近一段期间平均负载的柱状图, 通常用於监视网路上的机器. 它使 
      用 Athena widget set 里的 Load widget, 假如你将X转移至一个新 
      的作业系统时, 它须要作些修改. 
 
  clients/xlogo/ 本目录包含一个使用 Athena widget set 里的 Logo widget 
      显示 X视窗系统语标 (Logo) 的程式. 
 
  clients/xlsfonts/ 本目录包含一个可以列印目前 server 可供使用的字型 
      之公用程式.假如你要求从具有许多压缩字型的 server 作较长的列印, 
      你的显示可能会暂停一段较长的时间. 
 
  clients/xlswins/ 本目录包含一个可列印出显示器上的视窗的公用程式. 
      在找出一个因某种原因而忽然在萤幕上消失之视窗时非常有用. 
 
  clients/xmag/ 本目录包含一个当你在侦错图形时, 可以放大部分显示的公 
      用程式. 如果萤幕上同时有超过一种型式的视像, 可能无法达成目的. 
 
  clients/xman/ 本目录包含一个可以显示指南页的公用程式. 加上少量的修 
      改可以模拟本地作业系统的 man 程式. 
 
  clients/xmh/ 本目录包含一个与 MH 邮件处理系统的视像介面. 它扩展X 
      Toolkit 与Athena widget set 的使用. 
 
  clients/xmodmap/ 本目录包含一个可以显示更改的键盘、修正器或指标图 
      . 它会读取一个包含命令的 script 档且通常在你登录或第一次启动X 
      时执行. 
 
  clients/xpr/ 本目录包含一个可列印由 xwd 所获得的萤幕倾印影像的公用 
      程式. 
 
  clients/xprop/ 本目录包含一个可检查一个特定视窗特性的公用程式. 
 
  clients/xpseudoroot/ 本目录包含一个在 Inter-Client 通讯惯例手册 
      (ICCCM) 的前一版本所描述的原型程式. 它只供实验用且承诺在最终的 
      ICCCM 规格被发展时予以修正. 
 
  clients/xrdb/ 本目录包含一个可载入使用者指定的预设resource定义给 
      server 的公用程式, 它通常是在 login 或第一次启动 X 时被执行. 
 
  clients/xrefresh/ 本目录包含一个可刷新全部萤幕的一个简便公用程式. 
 
  clients/xset/ 本目录包含一个可设定按键声音、指标加速度等个人喜好特 
      性之公用程式.它现在提供从字型路径增加与删除进入点的功能. 
 
  clients/xsetroot/ 本目录包含一个可设定根视窗背景的公用程式. 
 
  clients/xterm/ 本目录包含一个 VT102 与 Tektronix 4014 终端机模拟器 
      程式. 先前版本的许许多多错误都已修正. VT102 模式现在可以使用X 
      Toolkit 转换管理器(使任意重系结按键成为可能)、选择区 (selection) 
      (见 xclipboard 与 xcutsel)与正确地设定它的处理群 (process group). 
 
  clients/xwd/ 本目录包含一个可以倾印视窗影像的公用程式. 它通常是将 
      一个视窗快拍以便列印或稍後使用 xwud 程式显示, 对某些使用 XY 格 
      式影像的 server 仍有问题, 且执行时大都相当慢. 
 
  clients/xwininfo/ 本目录包含一个可以检查各种不同的视窗属性 (像大小 
      、位置、视窗管理器资讯等) 的公用程式. 它常与 xprop 合用, 用以 
      检查视窗的阶层架构. 
 
  clients/xwud/ 本目录包含一个可以显示先前用 xwd 建立的影像之公用程式. 
 
  demos/ 本目录包含许多看来非常有趣, 但不常用的程式. 
 
  demos/ico/ 本目录包含一个可以让一个多边型物体绕著萤幕滚动的精巧程式. 
 
  demos/maze/ 本目录包含一个相当吸引人的解迷宫示范程式. 
 
  demos/muncher, demos/plaid/ 目录包含一个可以画可爱图画的程式. 
 
  demos/puzzle/ 本目录包含一个为 X11 设计的 "重排磁砖" 的益智游戏. 假 
      如你有彩色显示器, 试著在它建立时的目录执行 puzzle -picture mandrill.cm. 
 
  demos/xeyes/ 本目录包含一个在 SIGGRAPH'88 看到的一个 NEWs demo 所 
      启发出的吸引人的程式. 
 
  doc/ 本目录包含描述标准版本的所有文件. 不同 client 的指南页可以在 
      个别的原始程式目录里找到. 
 
  doc/HelloWorld/ 本目录包含 DavidRosenthal's USENIX'88 Hello, World 
      关於使用toolkit 的文章. 
 
  doc/Protocol/ 本目录包含X通讯协定的正式公认规格, 里面说明了甚麽是 
      与甚麽不是X的通讯协定部分以及那一部分是X标准的最後根据. 
 
  doc/Server/ 本目录包含将XServer 植入新工作台的许多指南. 
 
  doc/Xaw/ 本目录包含对 Athena Widget Set 的一个指南. 
 
  doc/Xlib/ 本目录包含 Xlib 程式规划指南与指南页的原始资料. 其中有一 
      个未测试过的命令列程序叫做 doc/Xlib/Xman/ expand.names, 它会将 
      指南页更改名称使其与它所描述的常式 (routines) 名称匹配. 
 
  doc/Xt/ 本目录包含X Toolkit Intrinsics 的规格说明. Inrinsics 现在 
      已经是X标准的一部分; 任何供应 Xlib 的供应商也大都会供应 Xt. 
 
  doc/bdf/ 本目录包含一个描述字型的位元映像分布格式 (Bitmap 
      Distribution Format). BDF 已是 X 标准的一部分; 所有的 server 供 
      应商也大都会提供一个程式, 可以转换该格式至任何他们所喜欢的内部 
      格式. 
 
  doc/bugs/ 本目录包含一个可提供错误报告的模板(见 doc/bugs/bug-report). 
      当使用xbug@expo.lcs.mit.edu 报告错误时时请使用这个格式. 
 
  doc/extensions/ 本目录包含 core 通讯协定基础程式库可能扩充的文件. 
      它目前包含已提出的 PEX 3D 图形扩充与一个输入综合 (INPUT 
      SYNTHESIS) 扩充. 
 
  doc/fontnames/ 本目录包含一个经过X协会评估的字型命名草案的规格. 
      这是对 AdobeSystem Inc.、Digital Equipment Corporation 与 
      Bitstream Inc. 所赠送的字型命名时所使用的格式. 
 
  doc/releasnotes/ 本目录内包含目前你看的这份文件的原始资料. 
 
  doc/tutorials/ 本目录内包含评论如何使用X视窗系统的特别麻烦的部分. 
      且欢迎使用者多提供. 
 
  examples/ 本目录内包含不属於任何其他地方的不同例子. 
 
  examples/CLX 本目录内包含如何使用 CLX (Common Lisp X) 介面的一些样 
      本例子. 
 
  examples/Xaw 本目录内包含可以测出不同 Athena widget 的一些小程式. 
 
  extensions/ 本目录树内包含一些 SERVER 扩充样本的原始码: 一个绘出 
      request(bezier) 的云形规、一个在X里使用生动视像的程式集 ( 
      plxvideo)、为了作输入记录与综合的一个扩充的开始 (xtest) 与一 
      个梯形绘出要求 (zoid). 
 
  extensions/include/ 本目录包含扩充样本的标头档. 
 
  extensions/lib/ 本目录包含 client 程式库常式用以和扩充程式集通讯. 
 
  extensions/server/ 本目录包含用以撰写扩充功能 server 的常式. 
 
  extensions/test/ 本目录包含一些用以测试扩充功能的范例. 
 
  fonts/ 本目录树内包含可以给不同的公用程式产生与处理字型档的原始资料 
      . 使用者贡献的版本有一个不同的转换器用以转换不同格式的字型成为 
      BDF 格式. 
 
  fonts/bdf/ 本目录内包含经过仔细选择的字型之原始资料. 从这个发行版开 
      始, 给定字型名称的长度与具有别名与通用字型名称的能力, 对组织字 
      型到目录是相当重要的. 就像 BDF 格式现在已是X标准的部分, 所有 
      server 的供应商被期待提供可以转换 BDF 档成他们的 server 可以接 
      受的适当包装字型格式的编译器. 预设状况是 sample server 将具有 
      在这里介绍的所有三个字型目录. 假如主显示器的解析度小於每英□ 
      88 点, 75 dpi 字型将较 100 dpi 字型在路径上优先. 否则 100 dpi 
      字型出现在字型路径的最前面. 
 
  fonts/dbf/misc/ 本目录包含前一发行版本的游标与固定宽度字型. 
 
  fonts/bdf/75bpi/ 本目录内包含由 Adobe System Inc. 与 DEC 以及 
      Bitstream, inc.为每英□ 75 点的监视器所设计提供的字型. 这些字 
      型遵照新的字型命名惯例; 多数使用者将想要去学习如何适当地使用通 
      用字元 (wildcard). 
 
  fonts/bdf/100bpi/ 本目录内包含为每英□ 100 点的监视器所设计的 75 
      dpi 字型版本.某些家族在这种解析度下无法及时备妥. 
 
  fonts/bdftosnf/ 本目录内包含用以编译 BDF 格式的字型成为由 sample 
      server 所使用的已被压缩的 Server Natural Format 的格式. 
 
  fonts/mkfontdir/ 本目录内包含在建立字型资料库时 server 用以映成字 
      型名称至对应档案的新公用程式. 无论何时字型被增加或移出目录, 这 
      个程式必须在该目录内执行以便重建资料库. 
 
  lib/ 本目录包含标准版本内所有主要的程式库. 
 
  lib/CLX/ 本目录包含 CLX common Lisp X程式集. 这是一个本国的 Common 
      Lisp 与X通讯协定的介面 (也就是说,它不使用 Xlib), 它将会被X 
      协会审核, 因为考虑它将纳入X标准中. 
 
  lib/X/ 本目录内包含 Xlib C 语言程式的程式库. 这个程式集所提供的介 
      面是X标准的一部分 (亦即任何供应商提供任何 C 介面为了叫用它的 
      产品X也必须提供 Xlib).供应商可以自由的去改变它的内部, 但介面 
      必须保持相同. 自从上一个发行版发行以来一些新的常式已被加入以提 
      供存取不透明的资料结构元素. 
 
  lib/X/sysV/ 本目录内包含一个使 Xlib 可工作於 System V-based 机 
      器的常式. 
 
  lib/X/mips/ 本目录内包含一个使 Xlib 可工作於由 Mips Computer 
      System 制造的工作台的常式. 
 
  lib/Xaw/ 本目录内包含 Athena widget set. 它是一个逐渐搜集使用者介 
      面实体的开始,建於 X Toolkit Intrinsics 的顶端. Widget 是用於建 
      立高阶应用 (higher level), 且理想地应该尽可能地提供较多的机构 
      与较少的政策. (使用者介面工具集、使用者介面管理系统与从应用至 
      撰写). 一个由 HP 发展的较完整集合可以在使用者贡献版本中找到, 
      (不幸的, 它还无法植入 R3 标准的 X Toolkit Intrinsics). 
 
  lib/Xmu/ 本目录内包含一个搜集有支援 MIT 应用的杂项常式. 它不是X 
      标准的一部分; 供应商可以不提供这个程式库. Xmu 使用外面介面连 
      结所有程式库且可被植入不同的系统. 它目前被部分 Athena widget 
      set 与不同的 client 所使用.  lib/Xt/ 本目录内包含一个 X 
      Toolkit Intrinsics 撰写样品、一个resource、事件与物件的管理器 
      , 此管理器机制用以建立使用者介面物件, 称为 widgets. Intrinsics 
      已被发展成为X标准的一部分. 任何供应 Xlib 的供应商也被期望能提 
      供 Xt.  lib/oldX/ 本目录内包含 X11 重新改写的 X10 Xdraw 与 
      Assoc Table. 
 
  rgb/ 本目录包含一个 RGB 彩色资料库样品与一个编译它的程式. 一个好的 
      资料库是非常有需要的, 但是还没一个有人志愿去做. 灰度阶与一些新 
      色彩已被加入. 
 
  server/ 本目录包含一个 Core 通讯协定的 sample Server. 它应该与 X 
      Protocol Specification 相当匹配, 但规格是最後的根据. 在试图做 
      任何改变之前请读取在dos/Server 目录内的文件与任何在 Server/ddx 
      目录内的 README 档案, 并认真地研究它的码. 
 
  server/ddx/ 本目录包含一些不同工作台的设备相关程式库. 在建立或安装 
      任何 Server之前请研究每个 README 档案. 
 
  server/ddx/apollo/ 本目录包含一些建立一个 server 的完整原始程式, 
      它们须在单色与彩色 Apollo 显示器上执行, README 档内建立有这种 
      Server 的提示与必要条件. 
 
  server/ddx/cfb/ 本目录包含一个非现场获取色彩Ports的色彩架构缓冲器 
      (color frame buffer)函数馆之范例。在 server执行之後,它被用来 
      在所有可用之硬体支援选择最佳之使用。 
 
  server/ddx/dec/ 本目录包含在 VAXstation II、2000 及 300 系列的单色 
      (qvss) 与彩色 (qdss) 显示器上建立 server 的完整原始码. 它也包 
      含控制与解译 LK201键盘的常式. 
 
  server/ddx/hp/ 本目录包含一个建立可执行於 HP 9000/300 系列,具有 
      Topcat 显示器的 server 之完整原始码. 
 
  server/ddx/ibm/ 本目录包含一个建立可执行於 IBM AOS (不是 AIX) 下的 
      APA16 与Magaple 显示器的 server 之完整原始码. 
 
  server/ddx/macII/ 本目录包含一个建立可执行於 A/UX 下的 Apple 
      Macintosh II 的Server 之原始码. 
 
  server/ddx/mfb/ 本目录包含一个单色架构缓冲显示器的可携式驱动器. 它 
      的主要目的是为了没有特殊图形硬体的工作台作为一个初始植入基础. 
      假如硬体可以支援,它也可以用在任何可能的地方. 
 
  server/ddx/mi/ 本目录包含与机器无关的不同图形操作的程式. 在将 server 
      植入新工作台与处理在记忆体里的 (in-memory) 影片影像 (pixmap) 时 
      通常与 mfb 以及 cfb程式库合用. 
 
  server/ddx/ndx/ 本目录包含建立一个不具有输入或输出装置的 server 的 
      原始码. 它使用一般性的单色与彩色框架缓冲码, 使得它对於测试 server 
      与机器无关的部分很有用. 
 
  server/ddx/plx/ 本目录包含在 Sun 或 VAX 的 parallax 视讯图形控制器 
      上建立一个server 的原始程式. 它也使用到在 extensions/server/ 
      目录里的 Parallax VideoExtension. 
 
  server/ddx/snf/ 本目录包含处理 SNF 字型的常式. 大多数的 server 使 
      用不方便的SNF, 但它们并没有需要如此作. 
 
  server/ddx/sun/ 本目录包含一个建立可执行於 Sun bw2 与 cg 显示器的 
      server 的完整原始程式. 它使用 cfb 程式库取代一些指定设备的常式 
      , 也因此在支援分散处理的某些时候较其他彩色 server 慢. 在建立与 
      安装 Sun server 之前请阅读目录里的README 档. 
 
  server/dix/ 本目录包含 sample X server 与设备无关的部分. 它强烈地 
      建议你不要改变任何码, 就好像阻碍你更新至新版本一样. 假如你发现 
      问题或建议作一个改变使植入一个新工作台更容易, 请依照附录E所描 
      述的方式发出一个错误报告. 
 
  server/include/ 本目录包含整个 server 所需用到的前置档. 
 
  server/os/ 本目录包含 server 与不同作业系统相关的部分. 
 
  server/os/4.2bsd/ 本目录包含可以使 sample server 执行於支援 4.2bsd 
      插座介面的作业系统常式. 
 
  server/os/bsdemul 本目录包含可模拟一般使用的 BSD 的常式. 它是 System 
      V 基础的server 典型的用法. 
 
  util/ 本目录包含本发行版建立与建构的不同程式与 script. 当你想将X 
      带上新工作台时, 应该最先将本部分的程式植入. 
 
  util/bm-convert/ 本目录包含一个可以将 X10 格式的位元影像档转换成 
      X11 格式的过滤器. 
 
  util/checkfn/ 本目录包含一个可以检查不合法档案名称的公用程式. 它通 
      常在准备发布之前使用. 
 
  util/compress/ 本目录包含 BSD 压缩程式的原始码. 
 
  util/cpp/ 本目录包含一个由 Martin Minow's DECUS cpp 所发展的公开领 
      域的 C 前置处理器的原始程式. 它提供那些 cpp 无法处理复杂的 
      server 或 X Toolkit的系统. A/UX 1.0 的使用者在尝试建立本发行版 
      之前必须建立与安装它 (参考 ser-ver/ddx/macII/R3setup.sh). 
 
  util/imake/ 本目录内包含建立系统时大多数重要的公用程式. imake 程式 
      用於从机器无关的叙述称作 Imakefile 的档案产生适当的机器相关 
      Makefile 档. 它使用 C前置处理器所以记号名称与巨集函式也可以被 
      定义. 它有它自己的手工做的Makefile, 且有一个可决定初始编译旗标 
      的特殊程式. 假如你将本发行版植入新机器, 你可能需要去编辑 
      util/imake/ccflags.c 以加入当你的机器在编译 imake 时所需要的任 
      何编译旗标. Imake 会被自动地建立, 就好像 make World 的一部分. 
 
  util/imake.includes/ 本目录包含用於产生不同 Makefile 的架构档. 
      README 档里有哪些参数能被设定与在那里设定的描述. server-specific 
      值在适当的 macros 档内给定, 与预设值不同的 site-wide 值在 site.def 
      档给定. Imake.tmpl 不应该被更改. 假如改变任何这些参数, 你将需 
      要完全重新建立 (rebuild) 使其能发生作用.假如你正想将 X 植入新 
      机器, 必须非常小心地研读本目录的档案.  util/makedepend/ 本目 
      录包含一个可以自动产生 Makefile 的关联性的程式. 它作用於程式建 
      立过程, 在有任何原始程式改变的时候会正确地将应该重新编译的档案 
      重新编译. 假如架构参数 CppSourcesPresent 设为 Yes, makedepend 
      会有一份 C 前置处理器的拷贝, 以便加快速度. 这不是必要的且本发 
      行版也未完成该功能. makedepend 被自动地建立, 作为 "make World" 
      阶段的一部分. 
 
  util/patch/ 本目录包含 Larry Wall's patch 程式, 它是一个要将修补差 
      异转换成原始码时非常有用的程式. 本程式在本发行版不会自动建立; 
      它提供无法存取 comp.sources.unix 压缩档的人一个简易与方便性. 
 
  util/scripts/ 本目录包含不同安装软体与产生连结树等工作的有用说明。 
 
  util/soelim/ 本目录包含某些系统需要的一个 soelim 程式版本. 
 
===== 
 
附录D  本发行版的内容 -- 使用者贡献的软体 
 
D.1 使用者贡献的版本 
 
    本文件是从 MIT 发行版内的原始资料再制作而来的. 这个使用者贡献的 
版本包括下列的目录. 本发行版这个部分的错误应该报告给个别的作者而不是 
送至 Xbugs.contrib/ 本目录是使用者贡献版本的最上层. 这个安排是有意将 
它与 core 版本视为平行的地位. 
 
contrib/clients/ 本目录内包含各种一般性的有用程式. 
 
contrib/clients/alertyorngs/ 本目录内包含一些可用以告诉或询问使用者 
    不同资讯的突现式对话视窗的公用程式. 
 
contrib/clients/gsh/ 本目录内包含给初学者使用的图形 shell. 
 
contrib/clients/hpxpr/ 本目录内包含一个 xpr 的版本, 它可以在 HP Laserjet 
    印表机上列印. 
 
contrib/clients/kterm/ 本目录内包含一个 xterm 的版本, 它可以使用 
    Kanji 字型. 
 
contrib/clients/magic/ 本目录内包含可用於 magic VLSI 设计系统的 X 驱 
    动器. 
 
contrib/clients/pbm/ 本目录内包含 Jet Poskanzer 的 Portable Bitmap 
    Toolkit 与可转换不同位元影像型式的公用程式. 
 
contrib/clients/splot/ 本目录内包含一个描绘图形的程式集. 
 
contrib/clients/spy/ 本目录内包含另一种放大影像的公用程式. 
 
contrib/clients/texx/ 本目录内包含一个 DVI 试播的程式 (previewer). 
 
contrib/clients/x11stsrtup/ 本目录内搜录有用以提供比普通的 xinit 更 
    好的介面的script 与预设建构档案. 
 
contrib/clients/xbgsun/ 本目录内包含一个可用以载入一个 Sun raster 影 
    像到根视窗背景的公用程式. 
 
contrib/clients/xcalendar/ 本目录内包含一个可以管理行事历的程式. 
 
contrib/clients/xdvi/ 本目录内包含另一个 DVI 试播的程式. 
 
contrib/clients/xdvorak/ 本目录内包含一个公用程式, 它可采用 Dvorak-style 
    连结(binding) 方式将键盘重新映射 (remapping). 
 
contrib/clients/xfig/ 本目录内包含一个绘画程式集. 
 
contrib/clients/xim/ 本目录内包含一个可以在 8 plane 显示器上显示 8 
    与 24 位元影像的程式. 
 
contrib/clients/xipr/ 本目录内包含一个针对 Imagen printer 的 xpr 程 
    式. 
 
contrib/clients/xlock/ 本目录内包含一个可以对不使用的显示器上锁的程 
    式. 
 
contrib/clients/xmessage/ 本目录内包含另一个显示讯息的程式. 它主要是 
    用於显示X启动 script 时的错误讯息与在其他人的显示器上留言. 
 
contrib/clients/xmore/ 本目录内包含一个针对 X 的 more 标页数的公用程 
    式. 
 
contrib/clients/xperfmon/ 本目录内包含一个搜集与显示系统统计资料的公 
    用程式. 它必须指定作业系统以及不同的的工作台. 
 
contrib/clients/xpic/ 本目录内包含一个 pic 试播器 (previewer). 
 
contrib/clients/xplaces/ 本目录内包含一个展开与记录一个使用者初始交谈 
    (session)的工具. 
 
contrib/clients/xpref/ 本目录内包含一个与一些 xset 函式的视像介面. 
 
contrib/clients/xshell/ 本目录内包含一个可以将命令嵌入单一键的古老程 
    式. 
 
contrib/clients/xshowcmap/ 本目录内包含一个可以使 colormap 显示彩色 
    的公用程式. 
 
contrib/clients/xstring/ 本目录内包含一个可以在另一个使用者的显示器 
    上显示字串的程式. 
 
contrib/clients/xtools/ 本目录内包含另一个可以展开一个使用者交谈的程 
    式. 
 
contrib/clients/xtroff/ 本目录内包含一个 troff 试播器. 
 
contrib/clients/xwebster/ 本目录内包含一个 SRINIC webster 字典资料库. 
 
contrib/demos/ 本目录内包含一些好玩的示范程式. 
 
contrib/demos/paint/ 本目录内包含一个非常简单的画图程式. 
 
contrib/demos/psycho/ 本目录内包含一个 ico 的多重显示器版本. 
 
contrib/demos/spaceout/ 本目录内包含另一个可以设定根视窗背景的程式. 
 
contrib/demos/worm/ 本目录内包含一个可以研究随机滑行图样 (slither 
    patterns) 的程式. 
 
contrib/demos/xcolors/ 本目录内包含一个可以显示色彩名称的程式. 
 
contrib/demos/xfish/ 本目录内包含另一个可以设定根视窗背景的程式. 
 
contrib/demos/xgranite/ 本目录内包含的仍然是另一个可以设定根视窗背景 
    的程式. 
 
contrib/demos/xphoon/ 本目录内包含一个可以显示月亮目前相位的可爱程式. 
 
contrib/demos/xrotmap/ 本目录内包含可以旋转彩色图形的一个难缠程式. 
 
contrib/doc/ 本目录树内包含附加的文件. 
 
doc/SharedLibs/ 本目录内包含 AT&T 所提出的如何撰写主要 C 语言程式库 
    共用版之规格. 它是由 AT&T 提出的并不是X的标准. 
 
contrib/extensions/ 本目录树内包含 core 通讯协定的扩充程式集. 
 
contrib/extensions/pex/ 本目录内包含可以让 PEX 将 3d 图形扩充至X的 
    现有文件与前置档. 
 
contrib/fonts/ 本目录树内包含编辑以及建立可供取舍的字型之公用程式. 
 
contrib/fonts/bdf/ 本目录树内包含一些随机字型的集合. 
 
contrib/fonts/bdf/bmug/ 本目录内包含转换自 Berkeley Mac User Group 
    公益软体压缩档的字型. 
 
contrib/fonts/bdf/info-mac/ 本目录内包含转换自 INFO-MAC 软体压缩档的 
    字型. 
 
contrib/fonts/bdf/oldx10/ 本目录内包含许多 X10 字型的 BDF 版. 
 
contrib/fonts/bdf/oldx11/ 本目录内包含发行 X11 之前所给出的字型. 它 
    们大多数都很难看. 
 
contrib/fonts/utils/ 本目录树内包含一些可以转换各种不同字型格式为 BDF 
    的公用程式,以及可用以分离字型档使它们可以被编辑的两版基本的工具 
    程式. 
 
contrib/games/ 本目录树包含一些有趣的游戏, 它对於熟悉X是有帮助的. 
 
contrib/games/mazewar/ 本目录内包含一个光荣的古老迷宫大战 (mazewar) 
    的程式, 它是大多数网路计算机游戏的鼻祖. 
 
contrib/games/qix/ 本目录内包含一个与X版 viedo arcade 游戏同名的视 
    讯游戏. 
 
contrib/games/xhanoi/ 本目录内包含一个可以解汉诺塔 (Tower of Hanoi) 
    问题的程式. 
 
contrib/games/xmille/ 本目录内包含 Milles Bournes 牌戏的一个漂亮的计 
    算机版本. 
 
contrib/games/xpuzzle/ 本目录内包含另一个 puzzle 程式. 
 
contrib/games/xsol/ 本目录内包含一个 solitaire 牌戏的X版本. 
 
contrib/games/xtrek/ 本目录内包含恶名昭彰的 xtrek. 它需要 System V 
    共用记忆体介面才能工作. 
 
contrib/hacks/ 本目录树内包含一些令人怀疑其有用性的程式. 
 
contrib/hacks/arctest/ 本目录内包含一个可以测试 arcs 的简单程式. 
 
contrib/hacks/reborder/ 本目录内包含一个当 anti-social 视窗当掉後可 
    用来重新设定视窗边界的小公用程式. 
 
contrib/hacks/xbounce/ 本目录内包含一个可以在萤幕上带著视窗前进的 
    (dribbling window) 程式. 
 
contrib/hacks/xchcursor/ 本目录内包含一个可循环变化不同游标图样的程 
    式. 
 
contrib/hacks/xsetsize/ 本目录内包含一个可以由命令列下达移动, 重定大 
    小以及表徵图化视窗的公用程式. 它是一个违反 Inter-Client 通讯惯例 
    程式的主要范例且可能无法在大多数的视窗管理器上工作. 
 
contrib/server/ 本目录内包含未被整合进 sample server 项目的文件与程式 
    码. 
 
contrib/server/sgi/ 本目录树内包含修补 sample server 和可以使 R3 server 
    在Silicon Graphics 工作站上执行的机器指定的驱动器. 
 
contrib/server/speedups/ 本目录内包含最佳化样本 server 的建议方法. 
    它所强调的是精确度而不是性能. 它可以使许多地方有实质地改进. 
 
contrib/server/veryoldxpc/ 本目录内包含过去尝试将非常早期的 X11 server 
植入MS-DOS 下的 IBM PC 的结果. 要使它们有用还需要实质的努力. 这个程 
式集将不包含在未来发行的版本, 除非有实质的进展使它可以发表. 
 
contrib/toolkits/ 本目录树内包含一些现有的工具集. 
 
contrib/toolkits/InterViews/ 本目录内包含一个 Standford 大学 InterView 
    C++ toolkit 的新版本. 
 
contrib/toolkits/Xr11/ 本目录内包含一个 HP X-Ray toolkit 的新版本. 
 
contrib/toolkits/andrew/ 本目录内包含一个 Carnegie-Mellon 大学 Andrew 
    toolkit的新版本. 
 
contrib/toolkits/clue/ 本目录内包含一个 TI 公司的 Common Lisp 使用者 
    环境的样本程式. 
 
contrib/widgets/ 本目录树内包含不同的 widget. 某些是立基於 R2 Intrisics 
    , 其他则立基於目前的 Intrinsics. 
 
contrib/widgets/Dclock/ 本目录内包含一个立基於 R2 Intrisics 的数字时 
    钟 widget. 
 
contrib/widgets/Mailwatch/ 本目录内包含一个立基於 R3 Intrisics 的较 
    佳邮箱 widget. 
 
contrib/widgets/MenuBox/ 本目录内包含一个选单 widget 的原型, 它终将 
    变成 Athena widget 集的一部分. 它是立基於 R3 Intrinsics. 
 
contrib/widgets/Xhp/ 本目录内包含一个 HP 的大型整合性 widget 集以及 
    一个 R2 X Toolkit Intrinsics 的版本, 依赖它这些 widget 可暂时被 
    立基. 
 
contrib/widgets/Xsw/ 本目录内包含搜集自 Sony 的 widget, 它也是立基於 
    R2 Intrinsics. 
 
contrib/widgets/cpicker/ 本目录内包含一个立基於 R2 Intrinsics, 用於 
    选择与修改色彩的 widget. 
 
contrib/widgets/tblwidget/ 本目录内包含一个几何管理器, 它使用 tbl-style 
    格式的命令并立基於 R2 Intrinsics 安排子视窗. 
 
contrib/widgets/widgeteditor/ 本目录内包含一个立基於 R2 Intrinsics 的简 
    单 widget编辑器. 
 
contrib/widgets/widgetwrap/ 本目录内包含一个可用於建立 widget 与设定 
    他们的引数的公用常式. 
 
contrib/widgets/xpalette/ 本目录内包含可用於显立基於 R2 Intrinsics 
    彩色的 widget. 
 
contrib/windowmgrs/ 本目录树内包含一些较流行的视窗管理器. 
 
contrib/windowmgrs/awm/ 本目录内包含 awm 视窗管理器. 
 
contrib/windowmgrs/rtl/ 本目录内包含 rtl tiling 视窗管理器.  
 
contrib/windowmgrs/twm/ 本目录内包含 twm 视窗管理器. 
 
contrib/windowmgrs/wm/ 本目录内包含旧的 wm 视窗管理器. 它主要是因历 
    史的理由而提供的. 
 
===== 
 
附录E  如何取得X 
 
E.1 在美国 
 
    仅要完整的手册或手册与全部 MIT 发行版磁带两者都要, 可以从下列地 
方取得 : 
 
          MIT Software Center 
          Technology Licensing Office 
          room E32-300 
          77 Massachusetts Avenue 
          Cambridge, MA 02139 
          USA 
 
E.2 在欧洲 
 
    仅要完整的手册、或手册与磁带、或仅要全部 MIT 发行版磁带, 可以从 
下列地方取得 : 
 
          Unipalm Limited 
          147 St. Neots Road 
          Hardwick 
          Cambridge CB3 7QJ 
          England 
 
          Phone:+44 954 211797 international, (0954) 211797 in UK. 
          Fax:+44 954 211244 international, (0954) 211244 in UK. 
 
E.3 如何取得 GNU Emacs 
 
    GNU Emacs 的生产、开发与出版在 : 
 
        Free Software Foundation 
        1000 Mass Avenue 
        Cambridge, MA 02138 
        USA 
 
    在执照期限内任何拥有系统拷贝的人被允许 (鼓励) 可以自由地将原始码 
和文件拷贝给任何其他的人. 
 
    假如你无从得知谁有一份拷贝, 只要付媒体价钱以及手续费你就可以获得 
一个系统的完整版本, 你可以从自由软体基金会, 或者在欧洲, 从 Unipalm取 
得. 
 
===== 
 
附录F X网路与电子邮件服务 
 
    透过电子邮件与其他网路可取得一些与X相关的服务. 这些包括公布栏 
(bulletin board)、"资讯服务 (information servers)", 与获得X软体 (包 
括 MIT 发行版以及其他程式与软体) 的设备. 
 
F.1 xpert 邮件竞技场 
 
    xpert 邮件竞技场 (Mailing List) 是一个用於讨论X面貌的论坛. 包括 
已存在软体的问题、设计的变更、可能的改进与其他一般资讯. 它发源於 MIT 
的X 研究人员, 是许多有用资讯的来源. 
 
    要加入该竞技场, 可以送一个邮件讯息至 : 
 
        xpert-request@athena.mit.edu 
 
要求加入各分布区域的竞技场. 
 
F.2 xstuff Server 
 
    xstuff Server 是一个透过邮件网路发送你的程式与(或)文件档案的服务 
程式, 用以反应一个你以电子邮件送出的要求. 它主要包含来自X协会 "认定 
的" 资讯, 包括新发行的文件与确定 MIT所发行的软体. 
 
    本节剩於的部分是当你发送一个 "求助 (help)" request 至 server 时, 
你从 server 所得到的讯息所组成. 
 
       ┌—————————┐ 
       │见 p307-310 原文  │ 
       └—————————┘ 
 
F.2.1 注意事项 
 
       ┌———————┐ 
       │见 p310 原文  │ 
       └———————┘ 
 
F.2.2 明朗性 
 
       ┌———————┐ 
       │见 p310 原文  │ 
       └———————┘ 
 
F.3 FTP 与其他网路 Server 
 
    对那些可以接取 Internet (Arpanet) 者, 有许多站可以提供 FTP 处理, 
允许你直接由网路上获得软体. 也有其他站允许你以用 uucp 或其他通讯协定 
存取. 详细的这些内容有时候会印在 xpert 邮件竞技场上. 
 
===== 
 
附录G  需要从你的系统管理者得到的资讯 
 
    如果你自行安装X,我们强力推荐你使用预设的建构(configuration) , 
因而所有的档案将储存在标准的目录中。 
 
    如果系统是以一种非标准建构来安装的话,你需要从你的系统管理者,至 
少获得下列的资讯: 
 
    1. X可执行程式的目录 
        (预设值:/usr/bin/x11). 
 
    2. 位元映像馆的目录 
        (预设值:/usr/include/x11/bitmaps/). 
 
    3. 指南页的目录 
        (预设值:/usr/man/mann/). 
 
    4. 字型的目录 
        (预设值:/usr/lib/x11/fonts/misc/, /usr/lib/x11/fonts/75dpi 
                  和/usr/lib/x11/fonts/100dpi/). 
 
    5. RGB 色彩资料库的位置 
        (预设值:/usr/lib/x11). 
 
    6. 应用程式特性resource名称的目录 
        (预设值:/usr/lib/x11/app-defaults/). 
 
 

BBS水木清华站∶精华区