自定义 XDM 登录屏幕

作者:Brian Lane

“什么是 XDM 屏幕?这是更神秘的 Linux 极客术语吗?” 嗯,是的,但我会尽量让它容易理解,这样你也可以更像 Linux 极客一样说话。如果您正在运行 X Window 系统,并且您的系统设置为直接启动到 X 并显示要求您输入登录名和密码的框,那么您已经在运行 XDM。如果您正在使用 shell 提示符下的 startx 命令运行 X,那么您现在没有运行 XDM,但很快就会运行。

XDM 除了与 xlogin 框相关的功能外,还有其他功能。只有当您在多个屏幕或机器上运行 X 时,这些其他功能才有用。如果您有兴趣,请阅读 xdm 手册页。在本文中,我将重点介绍基本的修饰性更改,例如背景图像、等待登录时要显示的程序、登录框中使用的颜色和字体以及登录框的大小和位置。

我将假设您已正确设置并运行 X。如果您没有运行 X,请查阅您的 Linux 发行版随附的文档。

如果您已经启动并运行了 XDM,则可以跳到关于自定义 XDM 的部分。

设置 XDM

设置 XDM 需要您更改系统的运行级别。运行级别控制系统重启时运行的模式。它可以运行在单用户模式、无网络的多用户模式、有网络的多用户模式和运行 XDM 的多用户模式。我的系统是 Red Hat 5.1,它使用运行级别 3 进行正常多用户操作,使用运行级别 5 进行 XDM 操作(多用户,加上启动时启动 X)。以 root 用户身份编辑您的 /etc/inittab 文件以更改系统的运行级别。首先,确保 /etc/inittab 中存在 XDM 运行级别。它应该看起来像这样,并且通常位于文件末尾附近

# Run XDM in run level 5
x:5:respawn:/usr/bin/X11/xdm -nodaemon

这是来自 Red Hat 5.1 的条目。Slackware、Debian、SuSE 和其他带有 X 的 Linux 发行版应该类似。在这种情况下,运行级别编号为 5,但在您的发行版中可能有所不同。

您可以通过键入 init 5 来测试 XDM 运行级别。如果出现登录框并且一切看起来正常,您可以更改启动的默认 initlevel 或在不重启系统的情况下尝试 XDM 更改。如果您不希望 XDM 在启动时启动,请跳到下一节。

在更改任何内容之前,请备份 /etc/inittab 文件。将其重命名为类似 inittab.bak.1 的名称,然后查找 initdefault 行,该行通常位于 /etc/inittab 文件的开头附近。由于您尚未运行 XDM,因此您的可能看起来像这样

id:3:initdefault:

要使您的系统在启动时启动 XDM,您可以将此行中的 3 更改为等于 XDM 运行级别行中的数字。在我的例子中,我将 3 更改为 5。重新启动您的系统,将出现一个灰色屏幕,中间有一个框,要求您输入用户名和密码。您可以登录并确保一切运行正常,但这对于完成本教程不是必需的。

自定义 XDM

现在 XDM 已经启动并运行,我们可以开始进行更改。我们将在文本模式登录和 XDM 屏幕之间切换。要进入文本模式控制台,请按 <H>ctrl<H>-<H>alt<H>-F1;要返回 XDM 屏幕,请按 <H>ctrl<H>-<H>alt<H>-F7。在某些发行版中,您可能必须使用 <H>ctrl<H>-<H>alt<H>-F6 来访问 XDM 屏幕。

切换到文本模式并以 root 身份登录。将目录更改为 /usr/lib/X11/xdm 并查看此目录中存在的文件。这些文件控制系统在 XDM 启动时以及用户使用 XDM 登录时的行为。我们关注的文件是

  • Xsetup(或 Xsetup_0),用于设置 XDM 屏幕

  • Xresources,用于控制 xlogin 组件的行为

更改背景颜色

让我们从将背景颜色更改为灰色以外的其他颜色开始。您可以使用任何可以在背景(有时称为根窗口)上显示图像或颜色的程序。X 发行版附带的一个程序是 xsetroot。编辑 Xsetup 文件并注释掉可能已在设置背景图像的任何程序,例如 xbanner、xv 或 xsetroot。添加以下行

/usr/X11R6/bin/xsetroot -solid steelblue

像 steelblue 这样的颜色名称在 /usr/lib/X11/rgb.txt 文件中定义。这会将颜色名称映射到实际的红/绿/蓝颜色设置,使内容更具可读性。如果您使用的颜色名称中包含空格,则需要将其用引号括起来,例如,"navy blue"

保存 Xsetup 文件,并通过使用 <H>ctrl<H>-<H>alt<H>-F7(或 F6,具体取决于 X 服务器用于其显示的虚拟控制台)切换回 XDM 显示。然后按 <H>ctrl<H>-<H>alt<H>-<H>backspace<H> 重新启动 XDM。注意:不要使用 <H>del<H> 键。它将重新启动整个系统,而不是仅仅重新启动 XDM。

您现在应该有一个漂亮的纯钢蓝色背景。您可以尝试不同的颜色,直到找到您喜欢的颜色。

更改背景图案

可以使用位图将简单的双色图像平铺(重复复制以覆盖整个显示)到背景上,而不是纯色。/usr/include/X11/bitmaps 中应该有一个位图集合。您也可以使用 X windows 附带的 bitmap 程序创建自己的位图。尝试将 xsetroot 行更改为这样

/usr/X11R6/bin/xsetroot -bitmap\
/usr/include/X11/bitmaps/xsnow

像之前一样重新启动 XDM,您现在应该有一个漂亮的冬季场景。您可以通过添加 -fg-bg 选项并指定颜色来更改位图的前景色和背景色。尝试将其更改为这样

/usr/X11R6/bin/xsetroot -bitmap\
/usr/include/X11/bitmaps/xsnow -fg blue -bg yellow
对于雪来说,不是最美妙的颜色,但您明白了。-fg-bg 选项识别的颜色与上面讨论的 rgb.txt 文件中的颜色相同。

您还可以平铺以 xpm 格式存储的彩色位图。 xpmroot 程序用于此。将 xsetroot 行更改为类似这样

/usr/X11R6/bin/xpmroot\
/usr/include/X11/pixmaps/file.xpm
显示背景图像

现在我们可以在背景上显示颜色和平铺位图,现在是时候在背景上显示图片了。为此,我使用一个名为 xv 的共享软件图形程序。您可以从 xv 主页 http://www.trilon.com/xv/ 获取它,或者它可能包含在您的 Linux 发行版中。请记住,这是共享软件,如果您发现他的程序有用,您应该通过向他发送 25 美元来支持作者。

我选择使用 xv,但可以使用任何能够在背景上显示图像的程序。对于 xv,您告诉它将图像居中显示在背景上。您还希望它在显示图像后立即退出;否则,XDM 将挂起,直到手动退出 xv 程序。

/usr/X11R6/bin/xv -root -rmode 5 -quit\
/root/.gromit01.jpg

我使用它将图片放在显示器的中心。要查看您的更改,请保存 Xsetup 文件并按 <H>ctrl<H>_<H>alt<H>-F7 切换回 XDM 屏幕。按 <H>ctrl<H>-<H>alt<H>-<H>backspace<H> 重新启动 X 服务器。您现在应该在屏幕中央看到您的图像,该图像被登录框覆盖。 xv 支持使用 -rmode 命令的其他几个放置选项。您可以通过键入 xv -rmode -1 来查看这些选项的列表。

显示随机图像

列表 1

借助一个简单的 Perl 脚本,您可以在每次运行 XDM 时在背景上显示一个随机图像。列表 1 是 Scott Scriven (toykeeper@cheerful.com) 编写的脚本的简化版本。

键入此程序或从 ftp.linuxjournal.com/pub/lj/listings/issue68/3325.tgz 下载它,并将其另存为 /usr/local/bin/bkgd。通过键入以下内容确保设置了执行权限

chmod ugo+x /usr/local/bin/bkgd

您可能还需要更改 xv 和 find 的路径以匹配您的本地设置。即使未设置 $PATH 环境变量,在脚本中包含绝对路径也可确保其正常工作。

要加载随机背景,请将 Xsetup 中的 xv 行更改为 usr/local/bin/bkgd。创建一个 /usr/lib/X11/backgrounds 目录,并用您喜欢的图像填充它。查找背景图像的几个好地方是 http://www.digitalblasphemy.com/http://ipix.yahoo.com/

列表 2 是一个可用的 Xsetup 文件,其中间步骤用“#”字符注释掉。

列表 2

自定义登录框

现在我们想使用 /usr/lib/X11/xdm/Xresources 文件自定义 xlogin 框。此文件也用于配置其他 XDM 组件,例如选择器,但我们在这里不讨论这些其他选项,请参阅 XDM 手册页以了解它们。

我们可以移动 xlogin 框,调整其大小,更改其颜色、字体以及它显示的内容。我已将我的移动到右下角,并使其尽可能小,以便它不会覆盖背景图像。

XDM xlogin 组件使用 X 资源来指定这些设置。它们都存储在 Xresources 文件中,并在每次 XDM 重新启动时由 XDM 读取。从 XDM 手册页中获取的可用选项列表显示在“Xresources 选项”中。我将介绍每个选项并解释其用途。

我忽略了一些更高级的 xlogin 资源,其中一些资源可能会出现在 Xresources 文件中。可以安全地忽略它们,安装 X 时设置的默认值应该可以正常工作。如果您想尝试使用它们,XDM 手册页包含每个选项的完整描述。

移动和调整 xlogin 框的大小

.width.height.x.y 设置可用于设置 xlogin 框的大小和屏幕位置,或者您可以使用 .geometry 一次指定所有这些设置。让我们将登录框移动到右下角,并将其设置为 300 x 250 像素。要使用的屏幕坐标从左上角的 0,0 开始,右下角的坐标将取决于您的屏幕分辨率。但是 X 有另一种指定坐标的方式:-0,-0 是显示器的右下角,无论屏幕大小如何。将此行添加到 Xresources 文件中,靠近其他 xlogin* 定义

xlogin*geometry: 300x250-0-0

保存文件并像更改背景图像后一样重新启动 x 服务器。您的登录框现在应该紧贴显示器的右下角,从而显示更多背景图像。

现在我们可以更改颜色。上表中列出了五个与颜色相关的资源。首先,使用 xlogin*foreground.background 设置更改框的默认前景色和背景色。让我们将其设置为蓝底黑字

xlogin*foreground: black
xlogin*background: steelblue

保存并重新启动 X 服务器,以确保您的更改已生效。问候语和登录提示未更改颜色,因为您尚未更改它们。您必须指定要更改的每个单独的颜色。 .greetColor 设置是在框顶部显示的问候语。 .promptColor 是 login: 和 password: 提示颜色,以及您为用户名输入的文本。 .failColor 用于在输入的用户名或密码无效时显示。

尝试以下设置

xlogin*foreground:  black
xlogin*background:  steelblue
xlogin*greetColor:  white
xlogin*promptColor: grey
xlogin*failColor:   red

不是一个非常鼓舞人心的配色方案,但比黑底白字好。尝试使用它,直到找到您喜欢的颜色。

更改 xlogin 字体

控制我们要更改的四种字体的资源是

  • xlogin*font:用于显示键入的用户名

  • xlogin*greetFont:用于显示问候语

  • xlogin*promptFont:用于显示 username: 和 password 提示

  • xlogin*failFont:用于显示登录失败

X 下的字体很难处理。它们有大量的选项和修饰符,其中大多数从未使用过。 xfontsel 程序可以使字体选择更加容易。只需浏览字体,选择您想要的字体样式、大小和属性。然后单击“选择”按钮,并使用鼠标中键或两个鼠标按钮(如果您有两个按钮的鼠标)将字体字符串粘贴到 Xresources 文件中。将以下行添加到您的 Xresources 文件中

xlogin*font:\
 -*-courier-bold-r-*-*-18-*-*-*-*-*-*-*
xlogin*greetFont:\
 -*-helvetica-bold-r-*-*-24-*-*-*-*-*-*-*
xlogin*promptFont:\
 -*-lucidatypewriter-bold-r-*-*-18-*-*-*-*-*-*-*
xlogin*failFont:\
 -*-times-bold-i-*-*-24-*-*-*-*-*-*-*
尝试使用不同的字体和大小,直到找到您喜欢的东西。
更改 xlogin 提示

您还可以为与 xlogin 组件关联的四个提示中的每一个指定显示的文本。 .greeting 可以设置为 CLIENTHOST,并将显示其运行所在系统的完整主机名。 .namePrompt 值显示用于询问用户名, .passwdPrompt 询问密码, .fail 在登录不成功时显示。例如

xlogin*greeting:         Welcome!
xlogin*namePrompt:       Name:\040
xlogin*passwdPrompt:     Password:
xlogin*fail:             !WRONG!
向您的 XDM 屏幕添加时钟

X 发行版通常包含 xclock 程序,该程序可以显示一个漂亮的模拟时钟。通过在您的 Xsetup 文件中插入以下行,将其添加到您的 XDM 屏幕

xclock -hl white
-hd white -bg black -fg white\ -geometry 100x100+0+0 &

这将在屏幕的左上角显示一个中等大小的模拟时钟。即使在用户登录后,时钟也可能会继续运行。

好了,这就是 XDM 的基本自定义的全部内容。有很多东西可以尝试,希望我已经为您提供了一个良好的框架,以便开始尝试。没有两个用户具有相同的品味,因此可能需要一些时间才能最终获得您想要的外观和感觉。

Xresources 选项

Brian Lane 和他的妻子 Denise 与他们的四台电脑住在华盛顿州奥拉拉。他白天开发嵌入式软件,晚上编写 Linux 代码。可以通过 nexus@tatoosh.com 与他联系。

加载 Disqus 评论