LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1469|回复: 1

XFree86 4.x介绍[转帖]

[复制链接]
发表于 2002-8-28 19:30:30 | 显示全部楼层 |阅读模式
作者:Chris Houser
来源:IBM

我应该学习此教程吗?


或许您已经安装了 XFree86 4.0(或更高版本),但不知道接下来该干什么。或者您可能已尝试运行 X,但只看到整个屏幕都是黑白点画。或者很可能,您已经成功运行了 X,但您确信显卡支持更多的色彩或更高的分辨率。对于其中任何一种情况,您都找对了地方。首先,我们将为您的特定显卡和监视器设置 XFree86 X 服务器并使之运行。然后,将涉及您的所有个人配置选项,这些配置选项使您的桌面有家的感觉。

在本教程中,Chris Houser 向您演示了如何使 XFree86 4.x(Linux 版的标准免费 X 服务器)在您的系统上启动与运行起来。Chris 逐步指导您完成配置 X 以与硬件一起正确工作并使用您所喜欢的分辨率和颜色深度来使 X 运行起来的过程。

另外,Chris 还论及了 X 的用法基础,包括远程运行 X 应用程序、保护 X 和使用 X 资源数据库来配置 X 应用程序。他还向您演示了在 Xfree86 启动时如何启动您所喜欢的窗口管理器、桌面环境和应用程序。在本教程结束时,您将很好地领会 XFree86 的基本原理,可以准备将 XFree86 的许多功能应用到实际使用中。

Chris Houser,朋友称他为“Chouser”,自 1994 年他成为印地安那州 Taylor 大学的计算机科学网络管理员开始,他就一直是一名 UNIX 支持者,在那里他获得了“计算机科学与数学”学士学位。其后,他曾经从事 Web 应用程序编程、用户界面设计、专业视频软件支持,现在他正在从事 Compaq 上的 Tru64 UNIX 设备驱动程序编程。他还给各种免费软件项目投稿,最近他在给 Gentoo Linux(http://www.gentoo.org)投稿。他与他的妻子及两只猫居住在新罕布什尔州。

Chris 欢迎您对本教程提出疑问和意见。可以通过 chouser@gentoo.org 与他联系。

XFree86 的角色

XFree86 是一种多用途系统,它扮演两个不同的主要角色。首先,我们将它用作设备驱动程序; 在这个角色中,X 允许操作系统和应用程序与计算机硬件通信。要做到这一点,XFree86 必须知道有关硬件的一些详细信息。该信息存储在它的主配置文件 XF86Config 中。

查找 XF86Config

在开始之前,关键是要找到 XF86Config 文件所在的位置。要查找 XF86Config,以 root 用户登录到文本控制台 — 不应该马上运行 X。通常,将在 /etc/X11/ 中找到 XF86Config;如果系统上存在这个特殊目录,那么它很可能就是 XF86Config 所在的位置。其它公共位置包括 /etc/、/usr/X11R6/etc/X11/、/usr/X11R6/lib/X11/ 或 /usr/lib/X11/ 下的某处。

如果您发现某个地方应该有 XF86Config,而它不在那里,请不要担心;我将在后面几屏中指导您如何从零开始创建 XF86Config。

向前跳过

如果您已经使 X 工作,但想要学习如何调整各种 XFree86 配置设置,则向前跳到下一章节,XFree86 配置。现在,让我们看一下如何从零开始创建一个 XF86Config 文件。

创建新的 XF86Config 文件

创建新的 XF86Config 文件的最容易方法是使用 XFree86 的 -configure 选项。这里是如何告诉 XFree86 探测硬件并创建一个初始 XF86Config 文件的命令:

# XFree86 -configure


屏幕应该会变成黑色,或许会闪烁一会儿 — 您不必担心;允许有几秒钟的时间来完成硬件探测。


如果您没有看到屏幕变成黑色,相反得到一行类似 XFree86: command not found 的错误,则可能需要将 XFree86 的二进制安装目录(几乎总是 /usr/X11R6/bin)添加到路径中。如果正在使用类似 Bourne 的 shell(sh、bash 和 ksh 等),则可以输入下列命令来完成它:

# PATH="/usr/X11R6/binPATH"

如果正在运行类似 csh 的 shell(csh、tcsh 等),则可以输入下列命令来做到:

# setenv PATH "/usr/X11R6/binPATH"

一旦完成了任一设置,请再次尝试 XFree86 -configure。这次它应该起作用了。请记住,将 /usr/X11R6/bin 添加到缺省路径中,这样每次打开新控制台时,您就不必显式地将它添加到路径中了。

安装新的 XF86Config

现在,主目录 /root 中应该有一个名为 XF86Config.new 的新文件。如果正在替换现有的 XF86Config 文件,则将它移开并在其位置上复制这个新文件。当然,如果没有要替换的 XF86Config 文件,则只要跳过下面的第一个 mv 命令:

# cd /etc/X11
# mv XF86Config XF86Config.orig
# cp /root/XF86Config.new XF86Config

第一次 XFree86 测试运行

这个新的 XF86Config 包含 XFree86 对于您所具有的硬件类型以及应该如何设置它的最好猜测。要测试到目录为止您所拥有的配置,只要再次运行 XFree86,但这次不带 -configure:

# XFree86

这应该使屏幕再次变成黑色。几秒钟之后,整个屏幕都是黑白点画图案,并且应该看到中间有一个黑色的 X。点画模式是缺省 XFree86 背景,屏幕中间的黑色 X 是缺省鼠标指针。如果移动鼠标,它应该移动。如果光标不移动,不要担心;这意味着我们只需要调整一下 X 鼠标设置,我们马上就会做。

要在一旦出现点画图案时就回到文本控制台,请按住 Ctrl 和 Alt 键,并轻轻地按一下 Backspace 键。这是要记住的重要的组合键,因为它几乎总是关闭 X 然后使您回到文本控制台 — 万一您找不到从 X 会话退出的任何其它方法。

测试运行故障排除

如果运行 XFree86 不会使图形点画图案出现在屏幕上,相反您得到了某种错误,那么您或许有超出了本教程范围的不常用的硬件或者操作系统设置。现在,可能是转至 http://www.xfree86.org 的好时机,研究一下您的 XFree86 发行版是否支持您的特殊显卡,如果支持的话,如何启用这一支持。

然而,假设一切都工作正常,您应该能看见图形点画模式。祝贺您!现在,XFree86 是用一些可用的缺省值进行配置的,但还要进行许多可能的配置调整,使 X 的行为方式如您所愿。如果目前为止它正在很好地工作,而且您很忙,则可以跳至禁用远程 X 连接;否则,让我们将新的 XF86Config 文件装入文本编辑器。

第一次查看

用您所喜欢的文本编辑器打开 XF86Config,让我们看一下可能有哪些配置调整:

# vi XF86Config

您应该看到它由几节构成,每节都整洁地用 Section 和 EndSection 行隔开,每节都包含不同硬件或软件组件的设置。您可以看到在 Section 行上命名的组件类型,如 "ServerLayout"、"InputDevice"、"Monitor" 等。通常,其中的大多数节都应该在早先运行 XFree86 -configure 时得到了正确设置,不应该将它们混在一起。

配置鼠标

如果在最初测试 XFree86 时可以通过移动鼠标来使“X”光标移动,则可以跳过下面的这几屏并继续 XF86Config:深度。

然而,如果鼠标不工作,这意味着 XFree86 正在对您的特殊鼠标使用错误的鼠标设备名或错误的鼠标协议。要查看当前的 XFree86 鼠标设置,找到 XF86Config 中名为 "InputDevice" 的 Section。或许有两个这种 Section,或许更多,而您要找到您鼠标的那个 Section。这应该不难找到,因为 Identifier 应该是 "Mouse0"。

对于鼠标配置,有两个基本配置选项:Protocol 和 Device。在新式的 PC 上,Protocol 应该几乎始终是 "S/2"。然而,正确的 Device 设置可能取决于操作系统、发行版(distribution)或其它因素,如系统是否使用 devfs。

正确的鼠标设备

最常用的鼠标 Device Option 是 "/dev/mouse",但仅当将 /dev/mouse 符号链接指向 /dev 中真实的鼠标设备名时它才工作,并且特定的 Linux 系统可能正确地设置了它,也可能没有正确地设置它。如果没有 /dev/mouse 符号链接,则您必须亲自查找特定的鼠标设备名。

幸运的是,这个过程通常很容易。几乎所有的新式鼠标都插入计算机的 PS/2 端口,它在 Linux 中显示为 "psaux" 设备。如果您碰巧使用启用 devfs 的系统,则可以在 /dev/psaux 或 /dev/misc/psaux 中找到该设备节点。如果这些设备节点之一存在,则尝试为 XF86Config 中的 Device Option 指定它;当输入 XFree86 以再次测试 X 时,鼠标应该开始正确工作。

现在,XF86Config 的鼠标 InputDevice 节应该类似于:


Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "rotocol" "S/2"
        Option      "Device" "/dev/psaux"
EndSection

如果仍不能使鼠标工作,则可能在内核中没有启用 PS/2 鼠标支持。要解决这一问题,请尝试装入适合于您的鼠标的内核模块,或者编译一个包括了鼠标支持的最新内核。

XF86Config:深度

现在,我们将看一下为 XFree86 定义了允许的分辨率/颜色深度组合的那部分 XF86Config 文件。您将在 "Screen" 节中看到该信息,该节应该在 XF86Config 文件的末尾或其附近。在 "Screen" 节内部应该至少有一个(可能有几个)"Display" SubSection,每个 SubSection 都有它自己的“深度”设置。

“深度”指的是用于在屏幕上存储每个像素的位数,其中“深度”1 是黑白色的,“深度”24 指定真彩色显示:

深度 颜色数
1    2(黑白)
4    16(16 色调色板)
8    256(256 色调色板)
15   32,768(近似彩色)
16   65,536(近似彩色)
24   16,777,216(真彩色模式;准确的彩色)

XF86Config:深度

您可能只要在 "Screen" 节内部添加一行,以指定 XFree86 的缺省颜色深度,这一行将类似于:


Section "Screen"
        DefaultDepth 24
        (其余的 "Screen" 节……)
EndSection


带有高“深度”设置,您将有更丰富的颜色选择。通常,最好是争取到显卡将支持的最高深度;建议深度为 15(好)到 24(最佳),因为这些特殊深度将允许显示照片逼真的图象。如果深度小于 15,会使一些图像显得很不连贯,因为 X 服务器需要使用一种称为“抖动”的点画效果来模拟某些颜色。如果您有一块新式的显卡,则应该一定能够使用值为 24 的 DefaultDepth。

XF86Config: 模式

还要将一些缺省分辨率添加到 XF86Config 文件。要完成这一步,将如下面所示的 Modes 行添加到与您在上面所选择的 DefaultDepth 设置相对应的 "Display" SubSection。建议将相同的 Modes 行添加到每个 "Display" SubSection,避免以后产生混乱。


        Modes "1280x1024" "1024x768" "800x600" "640x480"


每对数字就是一个屏幕分辨率。例如,如果使用 "800x600",则会在水平方向上看到 800 个像素,在垂直方向上看到 600 个像素。如果使用更小的数字,则在屏幕上显示更少的“实际内容”,但您可以看到的每样东西都会变得更大,更便于阅读。注意,您不能随意地简单地选择这些模式名;上面列出的分辨率("1024x768" 等)是编程以使 XFree86 可识别的标准模式。可能要定义您自己的定制分辨率,要完成这一操作需要另外几个步骤,而且您通常应该坚持这些预定义模式。

XF86Config:消除“坏”模式

一个重要的注解 — 在上一屏的示例中,XFree86 将试图创建 1280x1024 屏幕,仅当显卡碰巧不支持 1280x1024 时,才后退到其它分辨率。所以,如果 DefaultDepth 为 24 并且 modes 行类似于前面 "Depth 24" SubSection 的 modes 行,则缺省情况下 X 将尝试用 24 位彩色来设置一个分辨率为 1280x1024 的屏幕。然而,如果显卡或监视器不支持分辨率 1280x1024,则 X 将后退到 1024x768、800x600 等,直到找到一个有效模式为止。

XFree86 和模式切换

然而,即使在缺省情况下没有启用特定分辨率,但 XFree86 仍允许您在 X 运行时通过使用特殊的组合键来切换到它。运行 X 时,通过按下 Ctrl 和 Alt 键并轻按数字小键盘上的“+”和“-”键以在列表中上下移动,可以在所有指定的有效显示器分辨率之间循环。

我建议从列表中删除所有高于您通常运行的分辨率,而保留较低分辨率。较低的分辨率有时是有用的,例如,要“放大”桌面上的某一小图标或文件,或者要玩游戏,它们以稍低于通常使用的分辨率运行效果最佳。通常,游戏会将 X 自动切换到更低的分辨率(如果可用)。

XF86Config:最终的 "Screen" 节

这时,XF86Config 的 "Screen" 节应该类似于下面所显示的那样。如果数字有些不同,那不必担心,只要确保其中的大体顺序类似于:


    Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
            Depth     8
            Modes           "1280x1024" "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
            Depth     16
            Modes           "1280x1024" "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
            Depth     24
            Modes           "1280x1024" "1024x768" "800x600" "640x480"
        EndSubSection
    EndSection


一旦将您喜欢使用的分辨率添加到 XF86Config 文件,就可以尝试再次运行“XFree86”,以查看正在起作用的更高分辨率。只带有点画图案背景,很难注意到屏幕分辨率中的差异,但应该有差异。一旦配置了 X 以启动几个应用程序(这使您能够更容易地看出屏幕分辨率中的差异),您就可能要回到本教程的这一部分。

XF86Config:监视器支持

正如前面所提到的那样,如果 XFree86 确定特定显卡/监视器不支持特定分辨率,那么 XFree86 可能会忽略这一选择。如果有一个新式的“即插即用”监视器,那么 XFree86 将可以查询它并确定它所支持的分辨率和刷新速率,并除去完全不在监视器上起作用的所有无效分辨率。然而,如果 XFree86 完全拒绝初始化您知道监视器支持的分辨率和显示深度,则可能需要调整 XF86Config 文件中的 "Monitor" 节并手工指定监视器的水平和垂直刷新设置。这里是如何完成这一操作的步骤。

XF86Config:监视器支持(续)

首先,需要跟踪监视器的特定刷新设置。我的特定监视器的水平刷新范围是从 31.5 到 64.3Khz, 垂直刷新范围是从 50 到 100Hz。要手工指定我的设置,我已经将 "Monitor" 节编辑成如下所示:


Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    31.5 - 64.3
        VertRefresh  50 - 100
EndSection


在对您的 "Monitor" 节做适当更改之后,XFree86 现在应该开始正确识别显示器所支持的分辨率。

XF86Config:其它选项

如果要查找 XF86Config 中的其它设置、它们的含义以及您可能要更改的设置,请参阅 XF86Config 帮助页面,它十分详细:

# man XF86Config

远程 X 连接

现在,您已经使 XFree86 的硬件配置起作用,在使用系统范围的配置之前,还有一个小的步骤。缺省情况下,XFree86 允许客户机应用程序以几种不同的方法(包括通过因特网连接)与之对话。这是一种功能强大的特性,如果您打算远程运行某些 X 客户机,则需要这一特性并且应该向前跳到 XFree86:服务器章节。

然而,在许多工作站上,从不远程运行 X 客户机,并且让 XFree86 侦听 TCP/IP 端口只会没有必要地增加更多安全性方面的危险。要禁用这一功能并杜绝这一潜在的安全性漏洞,可使用您所喜欢的文本编辑器来编辑系统范围的 startx 脚本:

# vi /usr/X11R6/bin/startx

禁用远程 X 连接

Startx 是一个我们将在本教程的下一部分中详细讨论的 shell 脚本。现在,向下滚动到第 23 行附近,也就是第二个文本块的末端。在那里,应该看到行:

    serverargs=""


将该行更改为:

    serverargs="-nolisten tcp"

现在,设置了 XFree86,使它能够在系统上运行。如果您是一名系统管理员,那么这就是您所需要做的事情。然而,如果您是用户,则可能要添加一些个人设置,以便 X 以您想要的方式运行。

介绍 startx

XFree86 扮演的第二个主要角色是服务器,为多个客户机提供中央服务。在讨论 X 时,术语“服务器”和“客户机”似乎会有点儿混淆。它帮助我记住,就象 Web 服务器一样,通常只运行一个 X 服务器,而它控制对共享资源的访问。对于 Web 服务器,这些资源可以是 Web 页面和其它文件,但对于 X,它们是显卡、监视器、键盘和鼠标。 X 客户机是一个与服务器交互以打开一个窗口的应用程序或程序,并且在单击按钮并输入时接收输入。

就象 Web 服务器需要 Web 客户机(Web 浏览器)以使它有用一样,X 服务器需要 X 客户机。当用 startx 命令启动 XFree86 时,会读取主目录中的 .xinitrc 文件,以确定哪些程序将自动启动。这些应用程序几乎始终是 X 客户机,可能包括终端仿真器、时钟、图形程序和窗口管理器或桌面环境。

.xinitrc 脚本

.xinitrc 文件只是一个 shell 脚本,所以,如果您熟悉编写 shell 脚本,本节应该对您很有意义。如果您没有编写过 shell 脚本,那也可以;它将是一个值得学习的简单示例,您将很快掌握它的窍门。

创建简单的 .xinitrc

让我们先从最简单的 .xinitrc 文件开始。切换成“普通”用户,而不是 root 用户。如果需要,先注销再登录。然后,在主目录中创建一个 .xinitrc 文件,使它成为“可执行的”,并用您所喜欢的文本编辑器打开它:

$ cd
$ touch .xinitrc
$ chmod a+x .xinitrc
$ vi .xinitrc

然后,只要将一行放入其中:

exec xterm

这将告诉 startx 命令在启动 X 时运行 xterm。exec 命令会使 xterm 替换当前的 shell 进程,从而节省一些内存。

运行 startx

现在,请试一下 startx:

$ startx

屏幕应该变黑并闪烁,就象先前运行 XFree86 时一样。当这次看到黑白点画时,还应该看到一个窗口,其中有 shell 提示。这是您在 .xinitrc 中指定的 xterm 客户机。请注意,该窗口没有边框 — 无法在屏幕上拖动它或调整它的大小。我们稍后将修正它。

通过注销来退出 XFree86

XFree86 将继续运行,直到 .xinitrc 脚本完成为止。直到在其中列出的每个程序都已启动并退出后,.xinitrc 脚本才会完成执行。缺省情况下,要在其窗口关闭之后,才会执行 xterm。这意味着,当从 xterm 退出时,将启动级联效应:xterm 将关闭,因此 .xinitrc 将完成,因此 X 将关闭,并且最后 startx 将完成,您将恢复到控制台。

请试一下。在 xterm 窗口中输入 exit,稍后您应该最终回到文本控制台。这是退出 X-windows 的推荐方法(而不是依靠 Ctrl-Alt-Backspace 窍门)。

使用桌面环境

现在,需要向 .xinitrc 添加一些东西,以便您就可以移动并调整窗口的大小。这时,有两种主要的进行方法。一种方法是使用象 KDE 或 Gnome 那样的桌面环境。另一种方法是您自己选择所有的启动程序,并在 .xinitrc 中维护它们。启动桌面环境更方便,但缺少些灵活性。我建议仅当您熟悉编制 shell 脚本时才使用第二种更为复杂的方法。

如果要使用桌面环境,首先需要安装它。然后,要使用 Gnome 或 KDE,分别用 exec gnome-session 或 exec startkde 替换 .xinitrc(xterm)中的一行。这样就行了!现在,您可以跳到 X 客户机配置章节。

编写 .xinitrc shell 脚本

如果要编写一个更复杂的 .xinitrc 脚本,您需要挑选的主要东西是窗口管理器。窗口管理器是一种特殊类型的 X 客户机,它显示窗口周围的“装饰”,允许移动并调整窗口的大小,启动程序和做其它有用的事情。有许多窗口管理器可供挑选;一些示例是 sawfish、blackbox、enlightenment、mwm、fvwm2 和 twm,但还有许多其它的。除了 twm,它们都不包括在 XFree86 中,如果要使用它们则需要单独安装。

.xinitrc 应该启动窗口管理器和或许至少一个终端仿真程序,以便在 X 启动时,可以有地方输入命令。在编写 .xinitrc 时要记住的重要事情是,一旦执行完 .xinitrc,X 就将退出。这里是启动多个 X 客户机的样本 .xinitrc:

xterm -geometry +1+1 &
xterm -geometry +100+100 &
exec twm

正如您可看到的那样,在前两个 xterm 行之后都附加一个结尾的“&”;这通知 shell 应该在后台启动 xterm,并允许 .xinitrc 脚本继续而不必先等待每个 xterm 退出。最后,我们通过 exec twm 来执行窗口管理器。因为使用 exec 而不是使用 &,twm 将替换当前的 shell 进程,并且当 twm 终止后,XFree86 才会退出。

我们现在到哪儿了

这时,您应该有一个具有完整功能的 X 设置。这是为您的硬件配置的,并且根据您的首选项定制了一些基本设置。这里您可能要花一些时间来熟悉桌面环境或窗口管理器。本教程的其余部分将涉及 X 窗口系统的一些非必要特性,例如,如何使用 X 资源数据库定制颜色和字体设置,如何在远程机器上运行 X 客户机,以及如何使用 X 认证系统。这里的所有指令都应该在 X 内部的终端窗口中以“普通”的非 root 用户运行,如 xterm、rxvt、gnome-terminal 或 konsole。

X 客户机配置

可以用无数种方法配置 X 应用程序。每个应用程序都可以使用可用的一种方法或多种方法的组合。一些方法对于特定应用程序是唯一的,它们可以由命令行选项或 /etc 中的配置文件组成,就象其它 UNIX 程序一样。一些其它配置选项可以通过一些共享的外部程序进行设置,就象 Gnome 和 KDE 应用程序的控制面板。精确地讲,如何配置一个 X 应用程序在很大程度上取决于程序的已使用的年限、该程序是否是为特定桌面环境设计的以及创建该程序的开发人员的敏感性。在许多方面,配置是 X 的复杂方面之一,因为还没有一种配置它的“正式”方法。

X 资源数据库

通常,X 客户机已经将它们的配置设置存储在一个称为 X 资源数据库的资源库中。这个数据库不象大多数数据库那样被保存在磁盘上,而是由 XFree86 将它存储在内存中。当 X 应用程序启动时,它扫描 XFree86 的资源数据库,查找它所关心的那些项。X 资源数据库中的每个项都是由 ResourceName 及其相应的 Value 组成。

由于单个数据库用于存储许多不同 X 应该程序的配置值,所以 ResourceName 不仅需要指定设置的名称,而且还要指定它所适用的应用程序的名称。因此,ResourceName 指定以应用程序名开始的层次结构,并且获取更特定于其本身设置的确切名称。这有点象文件系统中的路径名从 / 开始并获取更特定于确切文件的方法。

使用 xrdb 的演示

例如,可以通过将一个项放入具有 ResourceName "xterm*background" 的数据库中来设置 xterm 的背景色。要尝试它,可以通过使用 xrdb 命令,以将项添加到 X 资源数据库中:


$ echo "xterm*background: red" | xrdb
$ xterm

您应该看到一个新的 xterm 以火红的背景出现,而不是缺省的白色背景。名称中间的星号(*)表示在 xterm 和背景之间可能有多层结构,但我们不必关心它 — 我们想让 xterm 的所有背景都是红色的。如果要更精确,可以使用句点(.)来代替星号,但必须指定 xterm 和背景之间的每一层,我们不会真正得到任何东西。

查询数据库

在上一步中使用的 xrdb 命令也可用于查询数据库。要查看当前设置,可以输入以下命令:

$ xrdb -query
xterm*background: red

并且非常肯定,有添加到数据库的设置。


将 xrdb 添加到 .xinitrc

使用 xrdb 的正常方法是从 .xinitrc 运行它,并使用它来装入已放置在一个称为 .Xresources(或者有时候称为 .Xdefaults)的文件中的设置。要设置它,在任何其它设置之前,将行 xrdb $HOME/.Xresources 添加到 .xinitrc 的顶部。不管 .xinitrc 中还有其它什么(即,不管正在直接使用窗口管理器还是在使用桌面环境),都应该完成这一操作。

创建 .Xresources 文件

接下来,在主目录中创建 .Xresources 文件,并将您自己的个人应用程序设置放入其中。这里是一些示例(注意,以感叹号 (!) 开始的行是 xrdb 将忽略的注释):


! use a light yellow background for everything except xterms
*background: lightyellow
xterm*background: white

! slim the widget borders on wish (TCL/TK) apps down to one pixel wide
wish*borderWidth: 1

! set the font for xterms to something a bit larger
xterm*font: -misc-fixed-*-*-*-*-20-*-*-*-*-*-*-*

资源名和颜色值名

查找特定应用程序使用的 X Resource 设置的最好方法是,浏览该应用程序的文档,特别是它的帮助手册页。例如,可以通过运行 man xterm 并搜索字“RESOURCE”来查看 xterm 识别的资源名。

指定颜色的任何资源都将接受 XFree86 识别的任何已命名颜色。这些颜色名和与之对应的红绿蓝三元组数字一起列在文件 /usr/X11R6/lib/X11/rgb.txt 中。除了使用已命名的颜色外,还可以使用下列语法来指定一个 HTML 样式的 RGB 十六进制三元组:


! specify a pure blue xterm background (#rrggbb)
xterm*background: #0000ff

字体名

X 将有点可怕样子的字符串用作字体名,象上面 xterm*font 后面的字符串。可是您不必担心这个。通过使用字体选择程序,很容易找到您想要的字体名。如果已经安装 gfontsel,我建议使用它,但标准的 xfontsel 也能很好地工作。这两个程序向您显示了一个字体外观的示例,以及在 .Xresources 文件中使用的完整字体名。


测试 .Xresources 文件

在您要测试 .Xresources 文件的任何时候,您都可以停止并重新启动 X 服务器,或者只是再次运行 xrdb:


$ xrdb $HOME/.Xresources


总之,对 .Xresources 所做的更改不会影响目前正在运行的任何程序。您将需要确保 xrdb 装入 .Xresources 文件,然后退出任何正在运行的程序并再次启动它,以查看新设置将如何影响它。

远程访问介绍


与许多图形用户界面系统不同,设计 X 窗口系统的时候考虑到了远程访问。在一台机器上运行 X 客户机和显示其窗口以及由运行于不同机器上的 X 服务器控制是简单的。

要完成本教程的这部分,将至少需要访问连接到同一个网络的两台不同 UNIX 机器,并且在这两台机器上安装了 XFree86。我们将您面前的那一台称为服务器;另一台称为客户机。虽然都需要安装 X,但只需要按照本教程中描述的那样配置“服务器”。还要记住,一定不能将 "-nolisten tcp" 放入“服务器”的 startx 脚本中。“客户机”必须安装了 X 库,但不必配置 X 服务器或者运行它。事实上,甚至安装在“客户机”上的 X 的版本也不必是 XFree86 — 任何新式的 X 实现都能做到。

获取服务器主机名和显示号

要开始,先在“服务器”的桌面上打开 xterm(或其它终端仿真程序),执行下列命令并注意输出。我们将在接下来的几个步骤中使用这个输出。

$ hostname
servermachine.foo.bar.net
$ echo $DISPLAY
:0

您应该已熟悉主机名命令,但 DISPLAY 变量对您来说可能是新的。当 XFree86 启动时,它通常采用 0 作为显示号。稍后,我们将看一下如何使用这个显示号。

生成新的 .XAuthority 文件


接下来,如果您还没有 .Xauthority 文件,则可能需要生成一个。要查找,可使用 xauth 命令:

$ xauth list
xauth:  creating new authority file /home/c/.Xauthority

如果没有看到这一错误消息,而是 xauth 列出了一个或多个认证行,则应该跳过下一步。认证行类似于:

servermachine/unix:0  MIT-MAGIC-COOKIE-1  39849ced20eb2b62df87c714a251b8fc

如果看到 creating new authority file 消息,则需要生成一个新的认证密钥:

# xauth generate .

共享的主目录

现在,要使远程程序的窗口在“服务器”的桌面上显示的最简单方法是,是否两个机器上用户的主目录是相同的。当从某些中央文件服务器通过 NFS 或某些其它网络文件系统安装用户的主目录时,通常在本地 UNIX 网络上发生这种情况。如果在“服务器”和“客户机”上发生这种情况,您需要做的只是告诉“客户机”在哪里查找 X 服务器,这将在后面的“设置 DISPLAY”屏幕中讨论。

抽取认证项

然而,如果两个机器不共享主目录,则必须做一点事情,以授予“客户机”与“服务器”谈话的权限,而不必访问整个资源。要做到这一点,需要将您先前创建(或已经存在)的认证项复制到远程“客户机”。首先,必须从“服务器”抽取项:

$ xauth nextract myauth.xa $DISPLAY

现在,文件 myauth.xa 包含 X 认证数据;您应该注意,不要将该文件放在其它人能够看到的地方,或者在公用网络之间不加保护地传送它。一定要将它复制到“客户机”上的主目录,所以我建议使用 scp(ssh 包的一部分)。

$ scp myauth.xa clientmachine:myauth.xa
$ rm myauth.xa


接着,使用 rlogin、ssh、telnet 或您通常用来访问其它机器的任何命令来注册到“客户机”。然后,将已复制的认证项合并到“客户机”上的 .Xauthority:

$ xauth nmerge myauth.xa
$ rm myauth.xa

设置 DISPLAY

“客户机”仍需要知道在哪里查找正在运行的 XFree86 服务器。通过设置 DISPLAY 变量以指向“服务器”告诉它。确保注册到“客户机”,并使用您先前打印的主机名和显示号。如果正在使用类似 Bourne 的 shell,请执行以下命令:


$ DISPLAY=servermachine.foo.bar.net:0
$ export DISPLAY


否则,如果正在使用类似 csh 的 shell,则执行以下命令:


$ setenv DISPLAY servermachine.foo.bar.net:0


正如您所看到的那样,我们使用了“服务器”的名称,并且末尾附上了显示号。

远程运行 xeyes


现在,您准备运行“客户机”上的程序并从“服务器”控制它:

$ xeyes


现在,您应该看到屏幕上弹出一双大眼睛(对您的鼠标指针“不怀好意”)。该程序正在一个远程 UNIX 机器(“客户机”)上运行,然而正在与本地工作站(“服务器”)上的鼠标和显示器进行交互。要使 xeyes 停止,只要通过在终端仿真器窗口中按下 Ctrl-C 来退出正在“客户机”上运行的 xeyes 程序。然后,眼睛将立即从“服务器”的显示器上消失。


结束语

现在,您已看过了 XFree86 配置的许多方面。您使用了几个不同的配置文件(XF86Config、startx、xinitrc、.Xresources 和 .Xauthority)。更改了远程访问和认证设置,并正确设置了 XFree86 驱动程序。现在,您应该拥有控制 X 窗口环境和精通 UNIX 桌面经验所需的工具。

网站

网上有许多有关 X 服务器的常规信息和 XFree86 的特殊信息。这里是一些开始查找更详细信息的好去处:

XFree86 主页(http://www.xfree86.org/)有用于下载的最新版本、安装说明、硬件支持列表和其它信息。
来自 X Consortium(http://www.x.org/)(The Open Group 的一个组织)的 X 站点分发了正式的 X 发行版(而不是 XFree86)。它们的站点包括有关 X 协议、服务器设计等信息,主要面向有经验的 X 开发人员。
“直接绘制基础设施(Direct Rendering Infrastructure(DRI))”(http://dri.sf.net/)是为安全而快速的 OpenGL 实现提供的框架,从而为许多图形卡在 XFree86 上运行高速 3D 游戏和图形打开大门。
DRI 不支持 nVidia 图形卡;但幸运的是,NVIDIA 为 Linux 提供它们自己的高质量加速 XFree86 可兼容驱动程序(http://www.nvidia.com/view.asp?PAGE=linux),其中包括新式的加速 OpenGL 实现。该页面提供对 Linux 上 XFree86 驱动程序的访问。
从 http://gnome.org/ 下载 GNOME 桌面和应用程序。
流行的“K 桌面环境(KDE)”(http://www.kde.org/)包括 KOffice 和 Konqueror Web 浏览器。
发表于 2002-9-24 19:02:03 | 显示全部楼层
经典,谢谢老师,我要把她收藏起来:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表