自定义 XDM 登录屏幕
“什么是 XDM 屏幕?这是更神秘的 Linux 极客术语吗?” 嗯,是的,但我会尽量让它容易理解,这样你也可以更像 Linux 极客一样说话。如果您正在运行 X Window 系统,并且您的系统设置为直接启动到 X 并显示要求您输入登录名和密码的框,那么您已经在运行 XDM。如果您正在使用 shell 提示符下的 startx 命令运行 X,那么您现在没有运行 XDM,但很快就会运行。
XDM 除了与 xlogin 框相关的功能外,还有其他功能。只有当您在多个屏幕或机器上运行 X 时,这些其他功能才有用。如果您有兴趣,请阅读 xdm 手册页。在本文中,我将重点介绍基本的修饰性更改,例如背景图像、等待登录时要显示的程序、登录框中使用的颜色和字体以及登录框的大小和位置。
我将假设您已正确设置并运行 X。如果您没有运行 X,请查阅您的 Linux 发行版随附的文档。
如果您已经启动并运行了 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 屏幕之间切换。要进入文本模式控制台,请按 <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 来查看这些选项的列表。
借助一个简单的 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 文件,其中间步骤用“#”字符注释掉。
现在我们想使用 /usr/lib/X11/xdm/Xresources 文件自定义 xlogin 框。此文件也用于配置其他 XDM 组件,例如选择器,但我们在这里不讨论这些其他选项,请参阅 XDM 手册页以了解它们。
我们可以移动 xlogin 框,调整其大小,更改其颜色、字体以及它显示的内容。我已将我的移动到右下角,并使其尽可能小,以便它不会覆盖背景图像。
XDM xlogin 组件使用 X 资源来指定这些设置。它们都存储在 Xresources 文件中,并在每次 XDM 重新启动时由 XDM 读取。从 XDM 手册页中获取的可用选项列表显示在“Xresources 选项”中。我将介绍每个选项并解释其用途。
我忽略了一些更高级的 xlogin 资源,其中一些资源可能会出现在 Xresources 文件中。可以安全地忽略它们,安装 X 时设置的默认值应该可以正常工作。如果您想尝试使用它们,XDM 手册页包含每个选项的完整描述。
.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*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 组件关联的四个提示中的每一个指定显示的文本。 .greeting 可以设置为 CLIENTHOST,并将显示其运行所在系统的完整主机名。 .namePrompt 值显示用于询问用户名, .passwdPrompt 询问密码, .fail 在登录不成功时显示。例如
xlogin*greeting: Welcome! xlogin*namePrompt: Name:\040 xlogin*passwdPrompt: Password: xlogin*fail: !WRONG!
X 发行版通常包含 xclock 程序,该程序可以显示一个漂亮的模拟时钟。通过在您的 Xsetup 文件中插入以下行,将其添加到您的 XDM 屏幕
xclock -hl white -hd white -bg black -fg white\ -geometry 100x100+0+0 &
这将在屏幕的左上角显示一个中等大小的模拟时钟。即使在用户登录后,时钟也可能会继续运行。
好了,这就是 XDM 的基本自定义的全部内容。有很多东西可以尝试,希望我已经为您提供了一个良好的框架,以便开始尝试。没有两个用户具有相同的品味,因此可能需要一些时间才能最终获得您想要的外观和感觉。
Brian Lane 和他的妻子 Denise 与他们的四台电脑住在华盛顿州奥拉拉。他白天开发嵌入式软件,晚上编写 Linux 代码。可以通过 nexus@tatoosh.com 与他联系。