Portland帮助Linux应用程序在桌面环境运行(4)

   而且情况应当只会随着时间而改善。如果当前实现像我期待的那样流行,那么厂商,包括发行打包商,都会有兴趣维护和更新Portland,尤其会使用特定于操作系统的方式来适应它们。同时,Portland团队保证不会修改编程接口。Intel的Tom Whipple准备的测试套件应当有助于保证这种稳定性。
  围绕Portland有几个公开的问题。打包标准这个问题仍然需要协商。Portland的设计者们很明智地对他们的架构设计进行最大程度地解耦;目前来说,打包问题已经被隔离,甚至还不知道最终的解决方案会是否是Portland、Linux Standard Base(LSB)或其他工作的一部分。目前,Portland仍只局限在编程访问典型窗口管理器的图标和其他组件。一旦发布了KDE 4,编程接口可能会扩展到包含图标命名和共享的MIME数据库规范。
  请记住,如果愿意,可以用称为DAPI的C绑定进行窗口管理器级别的进程间访问。尽管XdgUtils更加成熟,还可以从项目的CVS库中获得DAPI的早期发行版:
    cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/portland \
    co portland/dapi
  有效的DAPI编码可以是模块化的,也可以是面向事件的。面向事件的情况下,应用程序连接到DAPI,然后用select() 方法侦听活动。模块化调用的示例是清单2中打开资源的函数(对发行版文档中的函数稍微做了修改)。
  清单2. 打开URL的DAPI C代码示例
    /* Initialize with dapi_connectAndInit(). */
    static DapiConnection* my_dapi_connection;
    int openURL(const char *url)
    {
    /* DAPI wants to know about toplevel_widget so  
      it can properly handle focus, layering, ... */  
      if (dapi_OpenUrl_window(my_dapi_connection,                                 url,                
             XWINDOW_HANDLE(toplevel_widget)))     
        return 1;
    /* Handle failure here ... */
    }
  结束语
  如果应用程序,特别是应用程序的安装程序,直接处理桌面环境,那么Portland能提供一种实现相同功能的更好途径。
  只要对源代码做最少的修改,以及最少的许可影响或最少的编程困难,并且不会牺牲任何功能,就能够使用Portland,获得多于自己所能数倍的移植性。而且从此还能利用未来Portland具备的任何增强和扩展。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8b478b4b352342977dac9ce639ae42a8.html