无谓的窗口装饰,第 2 部分
命令行万岁!
好了。我感觉好多了。继续今天的专栏。
如果您以任何形式运行过 X 窗口系统,那么您的主目录中就会积累一些有趣的文件。它们的名字像“.Xclients”、“.Xauthority”和“.xinitrc”等等。这些神秘的(我敢再说一遍)“.X”文件是什么?嗯,在我深入探讨之前,让我们先来看看总是使用这些文件的程序,一个叫做 xinit 的小程序。
xinit 是启动图形桌面的主程序。xinit 使用各种“.X”文件,将创建、构建并以其他方式启动您的 X 会话。但是等等?这不就是 startx 背后的想法吗?嗯,在某种意义上,是的……又不是。您看,使用 xinit 启动 X 会话的问题在于它太复杂了(或者至少,太冗长了)。
startx 实际上只是 xinit 的 Bourne shell 前端。事实上,如果您查看文件 more /path_to/startx,您会发现,在设置了许多变量、路径等等之后,最终会调用 xinit 来启动 X。顺便说一句,该路径几乎总是以下路径之一。
/usr/X11R6/bin /usr/bin/X11
还记得我在本系列文章的第一篇中让您启动的那个非常无聊的 X 终端吗?您所做的就是创建一个空的“.xinitrc”文件,其中只有一行写着“xterm”。然后,我让您键入 startx 以启动 X 窗口系统。您最终得到的是一个普通的 X 终端,您无法移动、调整大小或修改它。我能想到的在该环境中做的唯一有趣的事情是键入类似 wmaker 的命令来启动桌面管理器,这样您就可以实际工作了。但这是一种非常奇怪的做事方式,而且我离题了。
您也可以使用 xinit 命令来启动该 xterm。从控制台屏幕,您将键入此命令
xinit /usr/X11R6/bin/xterm
同样,您也可以通过相同的方式从命令行启动桌面系统。例如,我可以启动 KDE,使用
xinit /usr/bin/startkde
以下是您键入 startx 时发生的情况。shell 脚本检查是否存在本地“.xinitrc”文件。如果不存在,它会查找系统范围的版本。这被称为简单的“xinitrc”(开头没有点),通常位于 /etc/X11/xinit/xinitrc。您的个人 xinitrc 文件,即以点开头的文件,可以非常简单,就像“exec xterm”这一行一样。系统范围的版本稍微复杂一些,它会检查是否存在其他 .X 文件以拉入您的配置。对于你们这些运行 Red Hat 的人来说,情况稍微有些不同。您的系统范围的 xinitrc 文件检查是否存在名为“Xclients”或其本地版本“.Xclients”的东西。
在某种意义上,.xinitrc 和 .Xclients 的用途几乎相同。在 Red Hat 系统上,您会注意到,在没有本地 .Xclients 文件的情况下,它会查找 Xclients 文件(位于 /etc/X11/xinit/Xclients)。如果您没有 .Xclients 文件,Red Hat 默认启动 GNOME。这是一个全局设置。您可以通过修改全局 Xclients 文件来更改此行为(特别是当有多个用户登录到一台工作站时)。在 /etc/X11/xinit/Xclients 的顶部附近查找以“PREFERRED=”开头的行。该变量现在设置为 null。将其更改为您首选的默认桌面。如果您想要 KDE,那么该行将如下所示。
PREFERRED=startkde
对于 GNOME 用户,将 starkde 替换为 gnome-session。你们这些运行 ICE 或 WindowMaker 的 叛逆者……我们很快就会讲到你们……在后续文章中。在继续讨论其他内容之前,我想提及另一个 X 文件。这个文件是“.wm_style”,如果您遵循您的全局 Xclients 文件,您会看到它查找一个名为 .wm_style 的东西。这是本地用户首选项窗口管理器。为了让事情变得极其复杂,这是 .Xclients 的另一种替代方案,它允许一些自由形式的表达。全局 Xclients 文件查找窗口管理器名称的几种变体。例如,如果您想运行 WindowMaker,您可以键入 WindowMaker、Windowmaker、WMaker 或 wmaker。浏览 /etc/X11/xinit/Xclients 文件,您会找到有效的选择。
那么,我们还有哪些 .X 文件?.xserverrc 定义了您希望运行的 X 服务器,但几乎从未使用过。原因是,默认情况下,您只运行一个 X 服务器,无论是您的 SVGA 服务器、加速的 S3 服务器还是直接帧缓冲服务器——即适用于您的特定显卡的服务器。如果您在此处未设置任何内容,系统将运行链接到 /etc/X11/X 的任何内容。例如,在我用来撰写本文的系统上,X 链接到 /usr/X11R6/bin/XF86_Mach64。
在大多数情况下,一旦事情(或多或少)运行良好,人们通常不会乱动他们的 X 配置——当然,除非他们是那种经常光顾这里的人。尽管如此,驻留在您主目录中的那些小的 .x_something 或 .X_something 文件确实让您在一定程度上控制您的 X 环境的行为方式。此外,我们上周讨论的 .xinitrc 文件还允许您在完成使用 xf86config(或通过图形安装过程)配置 X 服务器后进行其他更改。例如,人们遇到的最大烦恼之一是配置错误的退格键。您知道……您最终永远不会退格,因为它会添加一些您无法摆脱的奇怪字符。
以下是如何解决此烦恼的方法。简单的解决方法是使用 xmodmap 定义一个新键,这是一个专门为在 X 下重新映射键而设计的实用程序。假设您打开了一个终端会话,并且您的退格键不起作用。(如果某些设置错误,通常就是这种情况。)键入以下内容
xmodmap -e 'keycode 22=BackSpace'
您还可以使用该命令来修改鼠标的行为。假设您有一个 3 键右手鼠标,但您是左手。如果您可以颠倒按钮的顺序,那将非常好。没问题。试试这个。
xmodmap -e 'pointer = 3 2 1'
突然,我们所有 右手 人都感受到了在一个主要由右手主导的世界中,我们的 左手 朋友是什么感觉。如果您想将其恢复到原来的状态,请将序列“3 2 1”改回“1 2 3”,一切都将恢复原样。当然,这不是我们每次重启 X 都想做的事情。为了使更改永久生效,请将该命令添加到您的 .xinitrc 文件中,就在 exec window_manager 命令之前(如前所述)。
下次我们将研究其他“.X”文件,并回答“当一个桌面不够用时该怎么办?”这个问题。我们还将开始研究不同的窗口管理器和桌面,并讨论它们对您的工作方式和系统有限资源的影响。然后,我将告诉您如何覆盖那些不错的默认设置,使您的系统看起来像您自己的系统,并且仅属于您自己。
嗯,这些应该足够让我们忙到下次了。大家保重,记住,一点无谓的窗口装饰永远不会伤害任何人。X 不需要警告标签。
电子邮件:ljeditors@ssc.com