Red Hat Motif 2.1 for Linux

作者:John Kacur
Red Hat Motif 2.1 for Linux
  • 制造商:Red Hat Software

  • 电子邮件:info@redhat.com

  • 网址:https://#/

  • 价格:149 美元

  • 评论员:John Kacur

Motif 是由开放软件基金会 (OSF) 开发的窗口系统和环境。Motif Xm 库是一个软件层,与 Intrinsics 的 Xt 库和 X Window 系统的 Xlib 库一起使用。根据 Motif 用户界面规范,Motif 的实现方式是独立的,因此理论上可以在不同的窗口系统上实现 Motif GUI。PC 用户会立即认出 Motif GUI 与 Microsoft Windows 3.x 和 OS/2 GUI 的相似之处。

Motif 已成为 UNIX 世界的标准,并且是通用桌面环境 (CDE) 的基础。Motif 2.1 版本非常强调与 CDE 的兼容性。由于 CDE 基于 Motif 1.2,因此 Motif 2.0 中可用的一些功能和组件在 Motif 2.1 下不再受支持。这为程序员在为各种 UNIX 系统设计基于 Motif 的程序时提供了最少的移植性问题。

Motif 在 Linux 和自由软件世界中是一个不寻常的选择,因为它是商业许可软件。在撰写本文时(1999 年初),许可证费用约为 149 美元,并且您必须为您运行的每个 Motif 副本购买许可证。您不得将 Motif 库与您的软件一起重新分发,但您可以自由分发为系统上没有 Motif 副本的人创建的静态链接二进制文件。Netscape 浏览器是静态链接的 Motif 应用程序的一个示例。拥有 Motif 库的人可以动态编译他们的软件,从而创建更快、更小的二进制文件。

Linux 用户使用 Motif 最令人信服的理由是在他们的家用计算机上为商业 UNIX 系统创建程序的能力。然而,许多自由软件程序员更喜欢使用完全免费的工具包,例如 gtk+。另一种选择是 Lesstif,它是免费的 Motif 仿制品。Lesstif 仍然被认为是 alpha 版本软件,但如果您想自学一些 Motif 编程的基础知识,它是一个不错的起点。

我测试了 Red Hat Software 的 Motif 2.1。Red Hat 从 Metro Link 获得其 Motif 许可证,Metro Link 又从 OSF 获得许可证。虽然我对我的 Red Hat 产品非常满意,但我注意到新的 Motif 2.1.10 版本已经可用。这不是重大升级,而主要是错误修复。我向支持部门发送了一封电子邮件,询问升级的可能性。他们迅速而友善地告诉我,我可以从 Metro Link 以优惠的价格获得升级。由于这只是一个小升级,我认为即使是优惠的价格也不值得。Red Hat 确实告诉我,如果我想退回产品,他们会理解,但由于许可协议,他们没有任何升级安排。

包装内容

Red Hat Motif 包括 30 天的安装支持、共享和静态库、man 页面、UIL 编译器、MWM 窗口管理器、带有源代码的 Motif 演示程序、印刷用户手册以及 CD 上 PostScript 格式的大量其他文档。作为奖励,您将获得 KL Group 的 XRT Professional Developer's 小部件套件。此版本已完全获得许可,但如果您需要支持,则需要从 KL Group 单独购买。这些小部件包括 2-D 和 3-D 图形和小部件以及 XRT gear,其中包括选项卡、树形小部件和各种图标。

如果您直接从 Metro Link 购买 Motif,您可以获得名为 Motif Complete 的产品。Motif Complete 在一张 CD 上为您提供 Motif 1.2、2.0 和 2.1,以便您可以创建自定义安装。

入门指南

安装过程非常简单,并且有充分的文档记录。只需确保在启用 exec 选项的情况下挂载 CD,如 README 中所述。这允许程序直接从 CD 执行。对于不同的系统,该过程略有不同,具体取决于您的系统是 a.out 还是 ELF,以及您的系统是否可以使用 RPM。例如,如果您有 Slackware,则需要运行 instelf.sh 程序。对于 Red Hat,您可以使用 glint 或任何其他基于 RPM 的工具。

接下来,您必须编辑(或创建)一个 .Xclients 或 .xsession 文件以使用 MWM 作为您的窗口管理器。我选择了 .Xclients 方法,这允许您保留您的 .xinitrc 文件。这是一个示例 .Xclients 文件

nxterm -geometry 80x44+0+2 +ut &
nxterm -geometry 80x50+509+2 &
# Color for the display or root window
# doesn't need to be put in the background
xsetroot -solid CadetBlue
xscreensaver &
exec mwm

这会启动两个 nxterm 窗口,将背景颜色设置为 CadetBlue,启动 xscreensaver 程序和 Motif 窗口管理器。请注意,您可以使用普通的 X Window System 程序来执行设置背景颜色等操作。您可以在 /usr/lib/X11/rgb.txt 文件中获取 xsetroot 的颜色名称列表。如果您从头开始创建 .Xclients 文件,请不要忘记使用 chmod +x 使其可执行。

接下来,自定义资源的两个位置是您主目录中的 .Xdefaults 文件和 .mwmrc 文件。.Xdefaults 文件很可能已经存在,只需要在其中附加一些行。.mwmrc 文件应按如下方式复制到您的主目录

cp /etc/X11/system.mwmrc ~/.mwmrc

请注意,《用户指南》中存在错误,并指出 system.mwmrc 文件位于 /usr/lib/X11/system.mwmrc 中。

现在您可以尽情自定义您的环境并创建菜单了。例如,我在我的 .Xdefaults 文件中附加了以下几行

Mwm*activeBackground: CadetBlue
Mwm*UseIconBox: true
Mwm*keyboardFocusPolicy: pointer

这些行的通用格式为 Mwm*resource: value。在我的文件中,我将 activeBackground(即具有焦点的窗口)定义为 CadetBlue,这与我在 .xinitrc 文件中设置的背景颜色相同。将 keyboardFocusPolicy 设置为 pointer 意味着将鼠标指针移动到另一个窗口会自动使该窗口获得焦点。将 keyboardFocusPolicy 设置为 explicit 将需要您显式单击鼠标按钮以使窗口获得焦点。

UseIconBox 默认值为 false,这意味着当您最小化窗口时,其图标会出现在根窗口中。将 UseIconBox 设置为 true 会创建一个 MWM 窗口来容纳图标。有关图标框的示例,请参见图 1。xterm 图标周围的深黑色线条表示 xterm 窗口具有焦点。Netscape 图标周围的边框表示它已图标化,而 nxterms、Mail 和 nedit 图标周围没有边框表示这些窗口未图标化。

Red Hat Motif 2.1 for Linux

图 1. 图标框

列表 1。

让我们看一下 .mwmrc 文件。列表 1 是我从 system.mwmrc 复制的修改后的 .mwmrc 文件的一部分。完整文件可以在存档文件 ftp://ftp.linuxjournal.com/pub/lj/listings/issue61/3218.tgz 中找到。如果您的项目包含空格,请确保将其用感叹号括起来。助记符和加速器是可选的。助记符是项目中应以下划线显示的字母之一。选择菜单后,键入助记符与单击项目相同。加速器是一系列击键,用于在不使用菜单的情况下完成该功能。功能包括标题、exec、分隔符和菜单。标题是菜单中的标题(参见图 2),分隔符在菜单中绘制一条线。您要启动的程序由 exec 启动。您可以指定程序的完整路径名,或者如果您的路径变量设置正确,则只需指定其名称即可。菜单是子级别菜单。例如,我创建了一个菜单项“games”,菜单名称为“Games Menu”。然后,在列表的后面,您将获得“Games Menu”的定义。在 Motif 中自定义您的环境既简单又有趣。

Red Hat Motif 2.1 for Linux

图 2. 我的根菜单

编译程序

最后但并非最不重要的一点是,您可以使用您的 Motif 库来编译动态链接的程序,这应该使二进制文件更小、更快。

我建议尝试的一个示例是 NEdit。这是一个不错的 WYSIWYG(所见即所得)编辑器,可从 ftp://ftp.fnal.gov/ 获得。如果您没有 Motif,您仍然可以使用此编辑器的静态链接版本,或者尝试使用 Lesstif 编译它。在我的系统上编译此程序给了我这种类型的错误

/usr/X11R6/lib/libXm.so: undefined reference to 'XpEndJob'
/usr/X11R6/lib/libXm.so: undefined reference to
XpSelectInput
/usr/X11R6/lib/libXm.so: undefined reference to
XpGetPdmStartParams

libXp 库包含在 XFree86-devel 中,因此必须修改 NEdit 附带的 Makefile 以包含 -lXp。您可以检查演示程序附带的 Makefile(参见图 3),以获取有关其他未正确链接的库的线索。

Red Hat Motif 2.1 for Linux

图 3. 演示程序中提供的 Motif 小部件

结论

Motif 对于普通 Linux 用户来说不是必需品,但它确实为您提供了干净的界面和 UNIX 环境的标准 GUI 模型。对于想要使用他们的 Linux 机器编写可以轻松移植到专有 UNIX 系统的软件的程序员来说,它尤其好。

列表

资源

Red Hat Motif 2.1 for Linux
John Kacur (jkacur@acm.org) 拥有美术学士学位。在乌克兰学习俄语两年,在德国教英语两年之后,John 回到加拿大攻读计算机科学专业的第二个学位。
加载 Disqus 评论