使用Portland改善Linux桌面移植性
清单 1 显示了一个典型的现实示例,给出了一个最终用户能够在其所选的电子邮件客户机中编写的电子邮件消息。Portland 定义了 xdg-email 命令,它管理这类任务中包含的所
有常见套路。调用这样的命令行会启动用户的电子邮件客户机,填充它的元素(例如列表、附件等),并把控制权转移给最终用户。应用程序需要这种帮助吗?如果需要,那么
Portland 正是为您准备的。
Portland 初探
去年,Portland 实用程序才开始面向公众,但是不要沮丧:这个项目正在不断地实现它的目标,即使是现有的版本,也非常有用。不过它仍然缺少详细的教程和其他的一些标准规
范。
要开始使用 Portland,请用匿名 CVS 获得源代码:
cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/portland \ co portland/xdg-utils
这样就下载了一组命令行工作 XdgUtils,还有初步测试计划、 测试套件的开头部分、基本的安装程序、HTML 化的手册和少量管理文件。文档和其他优化最后会包含在其中。
Portland 还集合了称为 桌面 API (DAPI)的 C 绑定。 下一节将会看到 DAPI。
XdgUtils 包含的工具能够完成下面的功能:
安装和卸载桌面图标、图标资源和菜单项 使用用户喜欢的编辑器或邮件用户代理编写电子邮件 查询和管理文件类型(.gif、.c 等)和它们的描述 使用用户选择的合适的应用程序打开文件或 URL(如 Windows® 的 start 命令行或 Mac OS X 的 open) 控制屏幕保护程序 使用一致和安全的方式增加程序权限 使用任何语言或开发环境的开发人员应当都能访问这些工具;可以使用编程方式调用它们,如同使用 shell 中的其他命令一样。例如,如果正在使用 Python,那么可以在 bash
代码编写的安装脚本中使用 XdgUtils 工具,也可以使用系统调用,就像下面这样:
os.system("xdg-open %s" % chosen_URL)
或者,也可以使用 Python 的任何其他函数更精细地控制外部进程。
乍看之下,Portland 的目标很普通。它只是用一致的方式包装了现有的功能 —— 图标的安装、屏幕保护程序的管理,所以开发人员不必为每个新的应用程序或要使用的桌面环境
重新创建所有基本内容。而且实现该目标的代价非常小: Portland 的开源许可使得使用 Portland 无需金钱上的开支,其简单性实现了只花费很少的时间就可下载、安装和使用
Portland。结论很明显:很小的投资就得到了确切而显著的回报。所以这是个很容易做出的选择。
光辉的前景
如果相信 Portland 从现在开始还会继续发展下去,那么就很容易做出选择了。对于初始发行版,多数工作放在了基于 Linux 的 Gnome 和 KDE,而且 Xfce 也得到了 Waldo
Bastian 所称的 “极大关注”,Waldo Bastian 是 Intel 公司 Linux 客户机架构师,一名主要的 Portland 贡献者。当 Portland 获得其首次成功应用之后,很自然会预测到它
会扩展到更多桌面环境,甚至扩展到其他操作系统,例如 Solaris 或 FreeBSD。它的命令行实现当然可以让它扩展到新领域。从开发经理的角度来看,我很高兴为 Portland 界面
编写代码。如果我的客户需要移植到 Portland 还不支持的桌面环境,对我们来说,实现一个正确的 Portland 扩展不会比把我们自己的代码应用到不支持的桌面环境上更难。
而且情况应当只会随着时间而改善。如果当前实现像我期待的那样流行,那么厂商,包括发行打包商,都会有兴趣维护和更新 Portland,尤其会使用特定于操作系统的方式来适应
它们。同时,Portland 团队保证不会修改编程接口。Intel 的 Tom Whipple 准备的测试套件应当有助于保证这种稳定性。
围绕 Portland 有几个公开的问题。打包标准这个问题仍然需要协商。Portland 的设计者们很明智地对他们的架构设计进行最大程度地解耦;目前来说,打包问题已经被隔离,甚 |