Motif 1.2.3 Linux 运行时和开发系统
首先值得指出的是,在很大程度上,Motif 无论您从哪个供应商购买,它都是 Motif。 供应商从开放软件基金会 (OSF) 获得 Motif 源代码的许可,然后将其移植到他们想要的任何平台上,以便他们可以销售由此产生的库和可执行文件。 因此,产品的主要部分在不同供应商或不同平台之间不会有太大差异。 然而,供应商有机会让自己与众不同的地方在于用户手册和他们提供的安装程序。 在我看来,红杉公司在将 Motif 引入 Linux 平台方面做得非常出色。 我在本文中提出的任何抱怨实际上都是对 Motif 的抱怨,而不是对红杉公司所做工作的抱怨。
Motif 实际上是三件事。 首先,它是一组准则,定义了 X-Window 用户界面的外观和感觉。 对于未经训练的眼睛来说,Motif 看起来非常像 Microsoft Windows 或 OS/2 的 Presentation Manager。 当考虑到 Motif 的历史时,这应该不足为奇。 库提供的 Motif “shell” 程序给出了 Motif 的历史
1988 年 12 月 30 日,OSF 宣布用户环境组件产品将基于几项领先技术:数字设备公司的工具包技术(widgets)以及惠普/微软联合提交的惠普 3-D 外观和微软的 Presentation Manager 兼容行为(窗口管理器)。 混合产品 OSF/Motif 环境将为用户提供一种熟悉的方式来访问各种计算硬件平台(从个人计算机到大型机)上的计算机资源。
Motif 背后的驱动力是统一基于 Unix 的软件的图形用户界面外观和感觉,以便它可以与 Macintosh 或 Microsoft Windows 等其他标准竞争桌面市场。 通过拥有跨多个硬件平台通用的标准外观和感觉,用户将受益于不必重新学习如何与软件交互,而开发人员将受益于拥有一个可以针对其进行编程的标准。
这就引出了 Motif 的第二个组成部分。 Motif 是一组标准的 widgets,具有记录在案的接口,可以从一个平台移植到另一个平台。 可以肯定地说,如果一个平台支持 X-Window 开发,那么使其支持 Motif 不需要太多努力。 所需要的只是 Motif 库,或者在没有库的情况下,从 OSF 获得 Motif 的源代码许可,并稍加努力进行移植。
对于许多人来说,Motif 只是 X-Windows 的窗口管理器。 Motif 的第三个方面决定了窗口边框的绘制方式、窗口的调整大小、图标化和移动方式。 总的来说,它定义了用户和应用程序将如何与其窗口系统交互。
您为什么要 Linux 系统上运行 Motif? 有三个原因,这与上面讨论的 Motif 的三个方面相对应。 首先,您可能希望您构建的应用程序遵循 GUI 外观和感觉的标准,以便您的用户能够更快地感到舒适,并将受益于跨应用程序的一致性。 其次,您可能希望在您的 Linux 机器上开发软件,并希望将其移植到其他 X-Windows 平台。 如果您使用 Motif 工具包来构建代码,您将能够快速将用户界面移植到任何其他具有 Motif 库的平台。
值得指出的是,许多发行版附带的 TK 工具包可用于创建符合 Motif 标准的应用程序,尽管使用它进行编程与使用 Motif widgets 进行编程截然不同。 我不会在这问题上暴露我自己的偏见; 相反,我将您推荐给 Usenet comp.lang.tcl 和 comp.windows.x 新闻组中关于此主题的无休止的讨论。
您可能想要为您的 Linux 机器购买 Motif 的最后一个原因是运行 Motif 窗口管理器 (mwm)。 您或您的客户可能希望在您的 Linux 机器上拥有与您在其他机器上享受的完全相同的外观和感觉。 虽然 fvwm 可以非常接近地模拟 Motif 外观,但它并不完全相同。 mwm 窗口管理器似乎非常稳定,并使您的 Linux 机器具有完全相同的 Motif 外观。 请注意,我并不是要贬低 fvwm; 事实上,我更喜欢它而不是 mwm,因为我喜欢它的虚拟桌面和低内存使用率。
红杉 Motif 消耗哪些系统资源? 手册指出 /usr 下需要 12MB 的可用磁盘空间,/tmp 中需要 3MB。 结果表明,/tmp 目录中需要 3.6MB 的空间,而 /usr 目录中仅使用了 9.9MB 的空间。
需要比 0.99pl13 更新的 Linux 内核,并且必须以标准方式(在 /usr/X386 下)安装 XFree86 2.0。 文档描述了如何检查这一点(实际上安装脚本也会检查它)。 我的 Slackware 1.1.1 在正确的位置。
红杉还建议使用 12MB 的 RAM 来进行开发(即,编译和链接 Motif 程序)。 我只有 8MB,并且我能够在编译时没有比平时更多的交换的情况下完成它。 8MB 是可用的,但当然 12MB 更好。
红杉在他们的安装说明方面做得非常出色。 他们非常清楚地说明了该怎么做。 Motif 以三个 3.5 英寸软盘的形式提供。 您首先使用 cpio 将这些复制到 /tmp 中,然后运行安装脚本。 我有一个小小的抱怨是 cpio 告诉您加载“磁带”,这可能会让一些人感到困惑,但这是 cpio 的问题,当然不是红杉或 Motif 的问题。 安装脚本验证您是否安装了 X386,如果没有安装,则不会继续。 这很好。
我大约在 10 分钟内完成了安装。 该脚本创建了所有必要的链接,并将所有可执行文件和库放在了正确的位置。 我实际上不需要进行更多设置或操作即可运行或开发 motif 程序。
我的 “fvwm” 根菜单上有一个 “启动 MWM” 选项,所以我尝试了一下。 宾果; 就这样,我就在运行 mwm 了! 为了使 mwm 成为我的默认窗口管理器,我只需要编辑我的 .xinitrc 并将最后一行中的最后一个 fvwm 替换为 mwm。
文档没有描述这一点,尽管任何高级到想要使用 Motif 的人都可能能够弄清楚。 这是产品可以改进的一个小地方。
更需要说明的主要领域是窗口管理器的自定义。 我在配置 mwm 时遇到了很多麻烦。 我以为我只需要将他们提供的示例 mwmrc 文件复制到 ~/.mwmrc 中,做一些更改,然后就可以开始了。 好吧,一个小时后,我终于弄清楚了(在登录朋友的机器查看他的 .mwmrc 之后)。
事实证明,要激活您自己的窗口管理器菜单,您必须有一组名为 “DefaultButtonBindings” 的 “按钮绑定”,将按钮绑定到菜单。 现在示例 mwmrc 文件在任何地方都没有名为 “DefaultButtonBindings” 的按钮绑定集。 相反,它有 “MyExplicitButtonBindings”。 所以无论我做什么,我都无法获取我自己的菜单按钮。 最后,我通读了足够多的手册,最终理解了,将 “ExplicitButtonBindings” 更改为 “DefaultButtonBindings”,我就开始工作了。 这不是 Linux 产品的故障,而更普遍的是 Motif 文档的问题。 大多数情况下,用户只是从他们认识的其他人那里复制 .mwmrc。 然而,对于经常在隔离环境中工作的 Linux 用户来说,提供更易于使用的示例 .mwmrc 或关于设置 .mwmrc 的更好文档可能是一个不错的主意。
您可能想要更改的另一个常见事项是键盘焦点策略。 这决定了您选择要输入的窗口的方式。 我更喜欢 “焦点跟随鼠标”,这意味着我所需要做的就是将指针放入窗口中,然后就可以开始输入。 默认的 Motif 行为是 “单击以聚焦”,其中窗口保持焦点,直到您单击另一个窗口。 您还可以设置是否希望具有焦点的窗口自动提升到堆栈顶部。 您在 .Xdefaults 文件中更改的两个 X 资源是
Mwm*keyboardFocusPolicy: pointer Mwm*focusAutoRaise: false
这是我喜欢的行为类型,即焦点跟随鼠标,并且它不会自动提升具有焦点的窗口。 如果您喜欢 Microsoft windows 的行为,请在您的 .Xdefaults 文件中选择相反的设置(keyboardFocusPolicy 为 “explicit”,focusAutoRaise 为 “true”),输入
xrdb < .Xdefaults
更新设置,最后重启 mwm 以应用更改。
红杉 Motif 附带 UIL(Motif 的用户界面语言)、静态和共享 Motif 库、完整的在线 Motif 手册页、许多带有源代码的演示程序以及 OSF/Motif 用户指南。
如果您想分发 Motif 程序,您需要通过更改 makefile 中 Motif 库的定义以包含静态 (.a) 库来静态链接。 您不得分发共享 Motif 库。 这使得可执行文件更大; 对于我编写的一个程序,使用共享库时可执行文件为 130KB,静态链接时为 1.2MB。 如果您要运行大量 Motif 程序,最好拥有共享库,并且可执行文件不要静态链接。 可以分发与共享 Motif 库链接的可执行文件,但只有拥有共享 Motif 库副本的人才能运行您的二进制文件。
所有演示程序都可以在我的 8MB 系统上顺利编译。 我相信可以使用 8MB 进行开发,但当然,如果您有更多内存,事情会运行得更快,因为交换会少得多。
我发现 mwm 在我的系统上运行良好。
我检查了它的内存使用情况,发现它使用了 1460KB 的内存(根据 TOP),而 fvwm 仅使用了 296KB。 显然,如果您试图节省内存,fvwm 是更好的选择。 如前所述,没有虚拟 mwm,因此如果您喜欢拥有大于屏幕的桌面,您会想要坚持使用 fvwm。 然而,在坚固、一致、清晰的外观和感觉方面,mwm 略胜一筹。
top 中的 fvwm
PID USER PRI NI SIZE RES SHRD STAT %CPU %MEM TIME COMMAND 67 dal 2 0 160 296 296 S 0.8 4.1 0:25 fvwm
top 中的 mwm
980 dal 3 0 344 1460 608 S 1.7 20.3 0:01 mwm
Dale A. Lutz 的联系方式 (dale@wimsey.com)