无谓的窗口装饰,第 3 部分

作者 Marcel Gagné

首先,请允许我做一个简短的非付费、非政治声明。嗯...我是一个过时风格指南的受害者!感谢所有友好地指出应该是 X window 而不是 X-Windows 的人。我感谢您抽出时间写信并试图避免我尴尬。事实证明,我已经知道这一点,但我的前两篇专栏文章根据略有缺陷的编辑风格指南进行了更正。我最后听说,Linux Journal 的工作人员正在篝火旁烤棉花糖,火堆就是那个指南。[抱歉,Marcel。——编辑]

但我们谈论的是没有得到足够的(X,就是那个),所以请让我回到这一点。为了探索这种 更多 的状态,您需要能够相当容易地登录和退出 X。如果您使用像 xdm、gdm 或 kdm 这样的登录管理器,您可能希望使用 startx 启动您的桌面。然后,当您离开 X 时,您将返回到文本控制台和命令提示符。在我的 Red Hat 系统上,我可以根据我的 /etc/inittab 文件中的这个条目来决定是否使用图形登录管理器。

     # Run xdm in runlevel 5
     # xdm is now a separate service
     x:5:respawn:/etc/X11/prefdm -nodaemon 

一旦我注释掉最后一行并保存我的更改,我就几乎准备好了。假设您正在使用图形登录,此时您可以重新启动系统,新更改将生效。您将启动进入一个漂亮的纯文本控制台屏幕。啊,简洁。我也可以告诉您,为了使更改生效,您可以让 init 重新读取 /etc/inittab 文件。您可以这样做(但现在还不要做)。

     init q

如果您碰巧正在运行 Debian 系统(或 Storm 或 Corel),您的图形登录管理器可能会从 rc 文件之一启动。这些文件是您在 /etc/init.d 下找到的那些。在这种情况下,您可以按以下方式终止登录管理器。但请注意——如果您在会话中执行此操作,那么您的图形管理器会话将终止,X 将关闭,您可能会丢失您打开的任何工作。所有这些都想说您现在应该保存您的工作,关闭您正在运行的任何应用程序并退出桌面。

     /etc/init.d/kdm stop

这引出了另一个问题。如何在不登录桌面​​的情况下获得 shell 提示符来运行 init q

您可以不影响当前的 X window 会话,通过按 Ctrl-Alt-F1 跳出该会话。功能键 1 也可以很容易地是 2、3、4、5 或 6。如果您从命令行使用 X 启动 X,当您单击 Ctrl-Alt-F1 时,您可能会看到会话的对话框。F2、F3(等等)版本应该为您提供一个基于文本的登录屏幕。顺便说一句,如果您还不知道这一点,您可以通过键入 Alt-F#(其中“#”是数字)从任何这些“虚拟”终端 (VT) 切换到另一个终端。要返回到您的 X window 会话,请单击 Ctrl-Alt-F7。继续尝试一下。来回切换。当您对此感到舒适时,请回到文本屏幕 (Ctrl-Alt-F1)。

现在您有了一个文本屏幕,我们将继续进行一些有趣的事情。顺便说一句,如果您是那些从图形登录管理器运行 X 的人之一,现在是时候取消它了,可以使用 init q 或通过相应的 rc 脚本。好的。回到那些虚拟终端。因此,功能键 1 到 6 代表您的虚拟终端编号,而功能键 7 是您的第一个 X 会话。那么 8、9 和 10 呢?

好吧,让我们尝试一些有趣的事情。

我们的第一个 X 终端通常在六号的原因是,虚拟终端一到六号在我们的默认 /etc/inittab 文件中被占用。这是我的 /etc/inittab 中的相关部分

     # Run gettys in standard runlevels
     1:2345:respawn:/sbin/mingetty tty1
     2:2345:respawn:/sbin/mingetty tty2
     3:2345:respawn:/sbin/mingetty tty3
     4:2345:respawn:/sbin/mingetty tty4
     5:2345:respawn:/sbin/mingetty tty5
     6:2345:respawn:/sbin/mingetty tty6

如果您以 root 身份登录,使用您最喜欢的编辑器(vi、Emacs、pico、nano)并注释掉最后一行,您认为会受到什么影响?试试看。与之前对 inittab 的更改一样,您仍然需要让 init 重新读取 /etc/inittab 文件。

现在,切换到虚拟终端六号。突然,这不再是一个可用的终端。没有登录提示。酷吗?嗯,也许不是,但现在试试这个。使用这个简单的命令启动您的 X 会话。您可能还记得 上一篇专栏文章 中的内容

     xinit /usr/X11R6/bin/xterm

这为您提供了一个非常无聊、普通的 X 屏幕,左上角有一个 X 终端。您无法移动它,也无事可做。今天,我们将使用它来演示一些东西。当您在该屏幕中时,切换回您的第一个虚拟终端 (Ctrl-Alt-F1)。太棒了。现在,从文本控制台,通过按 Ctrl-Alt-F7 返回到您的 X 会话。有什么不对劲吗?尝试 Ctrl-Alt-F6 代替。啊哈!

这里发生的事情是 startx(或 xinit)在这种情况下在第一个可用的空闲 VT 上启动了 X,现在是六号(因为我们关闭了 VT 6 上的 getty。接下来是第二个酷技巧。让您无聊的 X 会话运行,然后返回到文本控制台。现在,为了不将一个无聊的 xterm 会话与另一个混淆,键入此命令

     xinit /usr/X11R6/bin/xcalc -- :1

如果您现在切换回文本控制台,如果您尝试重新访问您的 X 会话,您会注意到一些有趣的事情。Ctrl-Alt-F6(假设您仍然在 inittab 中注释掉了 VT 6)将带您到您的 xterm。要进入您的 xcalc 会话,请键入 Ctrl-Alt-F7。由于您无法在 xterm 的命令提示符下键入 exit,因此您需要使用 X window 逃生舱口来关闭该会话。“哦,我的天哪,我已经尝试了一切,但我无法退出 X”的逃生条款是——Ctrl-Alt-退格键

这是您可能会觉得有趣的另一件事。您还可以定义您希望 X 在 哪个 虚拟终端上启动。假设十是您的幸运数字,并且您希望您的 X 会话在 VT 10 上启动。

     startx -- :1 vt10

我说过我会回到其中一些“.X”文件,这次我想谈谈您的 .Xresources 文件。到现在为止,您可能已经开始意识到您的桌面是一个非常可配置的环境。虽然窗口管理器做了一些事情,但您仍然可以施加进一步的控制。例如:如果我启动一个 xterm 会话,我会得到一个漂亮的闪烁蓝色光标。假设我希望该光标为红色或蓝色。我可以通过创建或修改我的 .Xresources 文件来更改它。

在我们深入了解文件结构的细节之前,您应该知道您已经有一个全局文件可以为您处理所有这些。实际上,您有几个。将目录更改为 /usr/X11R6/lib/X11/app-defaults,您会发现许多文件预定义了一些标准的 X 应用程序。在您的主目录中,您可能还会找到一个 .Xdefaults 文件,它或多或少做同样的事情。我的文件为几个应用程序(包括 Emacs、rxvt 和 xterm)设置了一些默认值。

回到我的 xterm。我需要做哪些更改?好吧,如果我使用 man xterm 检查 xterm 的手册页并查找 X 资源,我发现 cursorColor 是影响光标颜色的属性。如果我退出我的 .Xdefaults.Xresources 文件并添加这些更改,我会得到这个。哦,我改变主意了。我宁愿让我的光标成为难以辨认的小麦色

     XTerm*cursorColor:      Wheat

请注意,我在资源前面加上 XTerm*,以告诉我的 X 资源文件此资源属于(或影响)什么。由于我希望这些更改在不退出我的 X 会话并重新登录的情况下生效,因此我需要让系统重新读取我的配置并合并更改。我是这样做的

     xrdb -merge $HOME/.Xdefaults

顺便说一句,xrdb 是 X 资源数据库实用程序。此程序通常在您启动 X 会话时在某个地方运行。在我的系统上,它由 /etc/X11/xinit/xinitrc 调用。如果我创建了一个 .Xresources 文件,那么我的命令将如下所示

     xrdb -merge $HOME/.Xresources

我启动一个新的 xterm,瞧,光标是小麦色的。让我们尝试一个更有趣的例子。例如,当我启动 Netscape 时,我会在右侧得到一个带有“Help”字样的菜单栏。在我的 URL 地址栏旁边,我还得到了“Location”字样。假设只是为了好玩,当我需要帮助时,它更像是 S.O.S. 而不是简单的帮助请求。我希望我的浏览器在帮助方面显示 S.O.S.,在位置栏方面显示 URL。这就是我解决这个问题的方法。在我的 .Xdefaults.Xresources 文件的末尾,我添加以下行。

     Netscape*menuBar.helpMenu.labelString:          S.O.S.
     Netscape*urlLocationLabel.uneditedLabelString:          URL: 

在我们继续之前,我们需要重新运行 xrdb 以合并这些资源。现在,如果我关闭浏览器并重新启动它,我会得到我希望的显示方式。顺便说一句,我在浏览器随附的文档中找到了 X 资源或 Netscape。在我的机器上(以及使用 Netscape 4.75),此文档位于 /usr/doc/netscape-common-4.75/Netscape.ad

哇!我已经讲得太久了。非常容易沉迷于所有这些。X Window 系统非常灵活,以至于玩弄它可能会让人上瘾。直到下次,大家保重,并记住一点无谓的窗口装饰永远不会伤害任何人。X 不需要警告标签。

电子邮件:ljeditors@ssc.com

加载 Disqus 评论