XBanner:让 XDM 更具吸引力
XBanner 的发明和设计从一开始就只有一个目的——美化 XDM 通常生成的登录屏幕。这种美化是通过以非常大的字体绘制一段文本,然后在文本和/或屏幕背景上渲染一些图形效果来实现的。
图 1 显示了 XDM “开箱即用”的普通登录屏幕。使用普通 XDM 的 Linux,具有类似甚至相同的登录屏幕。像 HP 和 DEC 这样的商业公司,提供定制的 XDM,可以生成带有公司徽标、背景等美观的登录屏幕。图 2 显示了我的家用系统在我打开它时如何迎接我。使用 XBanner,任何系统都可以像我的系统一样特别,只需您付出最少的工作。
XBanner 中可用的文本图形渲染效果包括许多有趣的东西。在本文中,我将介绍其中几个
StandOut:这种效果与适当的颜色选择相结合,使文本看起来像 Motif 或 MS Windows 按钮。Motif 在按钮的左侧和顶部添加了几个像素,颜色比按钮浅,在按钮的右侧和底部添加了较深的阴影,以创建 3D 效果。StandOut 在整个文本上使用了类似的技术。每个字母和符号都显得是三维的,就像 Motif 按钮一样。字母的粗细可以选择。
Backlight:这种效果在文本周围绘制 1 像素粗的线条,使其具有多个轮廓。如果您为文本选择深色前景,然后让 XBanner 为轮廓生成颜色渐变,从靠近字母的亮色到与屏幕背景相同的颜色,文本看起来就像是从背面被照亮一样。
FatText:通过适当的参数选择,这种效果使您的文本看起来是粗体的而不是扁平的。某些颜色组合实际上可以使文本看起来具有圆形边缘而不是尖锐边缘。此外,FatText 颜色渐变可以被指示使用两种以上的颜色来获得其他有趣的结果。
FgPlasma:XBanner 绘制一个等离子云场,从中切割出一个选定文本形状的模板,并将其放置在屏幕上。在图 2 中,标题 “Good Guys Free!” 是 FgPlasma 渲染效果的一个例子。
FgGrad:这在文本本身上绘制颜色渐变。字母 “I” 不会是带有衬线的普通垂直条,而是会被条纹成不同的颜色。
绘制文本只是 XBanner 设计要做的两个主要工作中的第一个;它还可以渲染漂亮的背景。除了简单的填充式背景外,XBanner 还可以使用许多不同的图案在背景上生成颜色渐变。以下是一些示例
Fan:这种效果绘制一个漂亮的扇形,以屏幕底线的中间为中心。选定的颜色渐变决定了扇形的颜色。有关扇形效果的示例,请参见图 2 的背景。
TopDown / LeftRight:这些效果创建从屏幕一侧到另一侧的颜色渐变。
BgPix:XBanner 能够在绘制选定文本之前,用像素图(.XPM 文件)平铺整个屏幕。
Plasma:等离子云填充整个屏幕。选择白色和深天蓝色等颜色会产生美妙的天空般图像,带有逼真的白色云朵。
Ripples:这种背景样式具有池塘中涟漪的外观。这种背景样式是颜色循环(如下所述)的结果,产生美丽的效果。
几乎任何涉及 XBanner 中的颜色渐变的对象都可以进行颜色循环,从而产生运动感。如果您循环 Fan 背景样式的颜色,则整个扇形看起来会沿一个方向旋转。FgGrad 效果的颜色渐变也可以循环,从而使文本具有运动感。循环等离子云效果也是一个好主意。您可以循环背景等离子、前景等离子,甚至两者都循环!我将颜色循环用于我的家用系统登录屏幕,如图 2 所示。不幸的是,颜色循环不适用于硬拷贝。
Ripples 背景样式是专门为颜色循环设计的。涟漪的波前以不同的速度移动,产生更逼真的外观。
XBanner 的另一个巧妙功能是能够在文本的角落绘制星星,从而创建 “闪烁” 效果,该效果在随机位置以随机间隔出现。您还可以在屏幕上放置像素图或一组像素图,在任何文本或效果下划线,并选择许多其他选项。
在使用 Linux 上的 X 一段时间后,我意识到我总是启动 X,并且我通常在登录后不久就启动它。因此,我决定运行 XDM,它在 X 中已经为我提供了一个登录框。XDM 安装和运行开箱即用,没有任何问题,没有任何麻烦。
仅仅几天后,我发现我讨厌它的外观。XDM 的默认设置是一个单调、乏味的灰色屏幕,只有一个简单的文本框,没有其他任何东西。与某些商业版本的 Unix 相比,它绝对缺乏。由于我也想让 Linux 看起来很酷,所以我决定编写 XBanner。
XBanner 主要为 Linux 编写,但它不是 Linux 特定的。它可以在任何支持 X11 release 4 及更高版本的环境中编译和运行。我已经在 Linux、Ultrix、Digital Unix、Solaris、SGI IRIX、AIX 甚至 VMS 上测试过 XBanner。
我收到一份报告,称 XBanner 无法与 X Inside 的 Accelerated X 服务器一起使用。我曾两次尝试联系 X Inside 咨询这个问题。我完全被忽略了——真可惜。
XBanner 主页由加州州立大学富勒顿分校物理系赞助,可以在以下网址找到
http://physics.fullerton.edu/XBanner/
FTP 位置是
ftp://physics.fullerton.edu/pub/Linux/XBanner/<\n> ftp://sunsite.unc.edu/pub/Linux/X11/xutils/ftp://vvtp.tn.tudelft.nl/pub/XBanner/
我预计在发布时会有新的镜像可用。在撰写本文时,最新版本是 XBanner1.3.tar.gz。
大多数 Linux 发行版(Debian、Slackware 等)都包含一个软件包,用于设置 XDM 及其配置文件。如果您的发行版不包含 XDM,可以在 sunsite.unc.edu 上找到它,它是 Internet 上 Linux 软件的 “家”——ftp://sunsite.unc.edu/pub/Linux/X11/xutils/xdm.tar.gz。
编译和安装很容易。XDM 附带一个 Imakefile。如果您的系统正确安装了 X11,请在 XDM 源代码目录中键入 xmkmf -a,然后键入 make。如果您遇到问题,请查阅 FAQ。设置 X11 环境和使用 imake 超出了本文的范围。
安装完成后,创建一个目录 /usr/lib/X11/xdm/ 并将 XDM 源代码树中 config/ 目录中的文件复制到其中。请注意,/usr/lib/X11/ 在 Linux 上应与 /usr/X11R6/lib/ 同义。
XDM 读取文件 /usr/lib/X11/xdm/xdm-config(有关默认内容,请参见列表 1),并从中提取其余配置文件的位置。几乎所有 XDM 配置文件都在 xdm-config 中定义。
列表 1. xdm-config 请注意,带有 _0 后缀的文件指的是 :0——本地显示器。XDM 运行 Xsetup_0 以初始化显示器,然后弹出其登录框并要求用户输入用户名和密码。当用户完成输入此信息后,XDM 会检查密码数据库。如果用户通过身份验证,XDM 会运行一些内容,包括 Xsession 脚本,该脚本设置用户的环境并加载窗口管理器。
这两个文件 Xsession 和 Xsetup_0 是添加行以运行 XBanner 和 Freetemp 的文件。本文稍后将更完整地讨论这一点。
下载 XBanner 源代码存档后,使用以下命令解压缩它
gzip -dc XBanner1.3.tar.gz | tar xvf-
将目录更改为 XBanner1.3/ 并输入 make。在 Linux 系统上,这应该可以顺利进行。编译完成后,您将拥有四个可执行文件
xbanner - 主要 XBanner 程序
freetemp - 用于释放 XBanner 占用的 X11 资源的实用程序
xb_check - 检查资源文件的有效性
random_effect - 使用随机资源文件执行 xbanner 二进制文件
键入 make install 会将可执行文件安装到目录 /usr/local/bin/X11/(不包括 random_effect 实用程序),并设置适当的权限。您可以通过编辑 Makefile 来更改目标目录。
如果您的系统没有 XPM 库,编译器可能会抱怨找不到 libXpm.a 或 -lXpm。在这种情况下,请编辑 Makefile;它包含有关禁用 XPM 支持的说明。
现在,要设置一个好的默认资源文件,请转到 XBanner1.3/ 目录并发出命令
cp samples/XBanner.ad \ /usr/lib/X11/app-defaults/XBanner
接下来,通过在 XDM 的 Xsetup_0 脚本中添加一行来告诉 XDM 运行 XBanner。此脚本在登录框弹出之前运行。添加此行将确保每次 XDM 要显示登录框时都运行 XBanner。Xsetup_0 脚本很简单。只需在文件底部添加如下一行
/usr/local/bin/X11/xbanner -file \ /usr/local/etc/login_screen.res
其中 login_screen.res(参见列表 2)包含生成所需屏幕布局的资源。
列表 2. login_screen.res 在 XBanner 绘制其图形后,一些服务器端资源(颜色表条目)仍然分配,以确保在 XBanner 之后运行的程序无法更改颜色,从而使 XBanner 的图形看起来一团糟。freetemp 实用程序是告诉 X 服务器释放颜色表条目的程序。此外,应该注意的是,XBanner 的一些更精细的功能,例如颜色循环和闪烁的星星,是通过保持一个进程运行来完成的,该进程必须在登录前停止。freetemp 实用程序完成了停止持久进程和释放颜色表条目的所有工作。
运行 freetemp 的最佳位置是在 Xsession 文件中。此文件为 每个 登录用户运行。将 freetemp 行尽可能靠近文件顶部放置,并确保它不在 if 语句或可能阻止其运行的其他脚本元素的上下文中。作为一项安全措施,您可以在 Xsetup_0 脚本中调用 xbanner 之前添加对 freetemp 的调用。此调用仅作为一项预防措施;万一上一个用户注销时发生意外情况,它可以挽救您。
最简单的入门方法是查看安装中包含的许多示例。我已经包含了我可以想到的所有内容的示例:颜色循环、多行、闪烁的星星、不同的背景、像素图等。samples/Demo/ 目录中的文件用作模板。只需选择一个并开始修改它。尝试各种选项,直到找到您满意的外观。
XBanner 文档由两个主要文件和一些补充文件组成。文件 XBanner_Users_Guide.html 除其他外,还包含一个从头开始构建资源文件的实践结构化指南。按照步骤操作,每次单击都会将您带到相关资源和可用可能性。
文件 Resource_Reference.html 包含 XBanner 识别的所有资源的完整参考。每个资源都给出了其类名、对该资源作用的广泛解释、它接受的值以及命令行等效项。该文件还包含对 XBanner 使用的不同 类型 资源以及一些想法的描述。
这应该是创建资源文件所需的一切。当然,您可以给我发送电子邮件以获取建议和想法。XBanner 的许多功能都是根据此类问题实现的。
为了正确运行演示——实际上为了使用 XBanner——您必须具有可缩放字体。这些字体可以缩放到任何大小而不会损失质量。XFree86 附带一个可缩放字体包,XBanner 文档包含一个关于查找可缩放字体并安装它们的特殊章节。您根本不需要 XDM 即可看到演示。
建议您在运行演示之前关闭所有应用程序,以允许 XBanner 为演示分配必要的颜色。此外,查看演示的最佳方法是使用空屏幕,屏幕上只有一个小的 xterm 终端,位于屏幕底部附近,从中运行演示。
编译后,转到 samples/Demo/ 目录并输入 ./Demo 或 ./Demo.bash(如果您的系统没有 csh)。
Amit Margalit 在以色列的 Digital 公司从事 X11/Motif 编程支持工作。他早在 Linux 0.99.12 的美好时代就开始使用 Linux,并抓住一切机会宣传迁移到 Linux。您可以通过 amitm@doronx.iso.dec.com 和 amitm@netvision.net.il 与他联系。