寻找有关如何为Gnome / Ubuntu开发applet的建议

时间:2009-12-02 10:51:14

标签: python linux ubuntu gnome dbus

我是一个linux(主要是ubuntu)用户,对系统的工作方式有一个合理的理解(虽然我当然不是一个linux大师!)。在过去,我已经在python / GTK中开发了小型跨平台桌面应用程序,并将它作为自包含文件树交付给客户端,因此唯一的依赖项是Python本身和GTK。

现在我想为ubuntu开发一个小applet ,我想在GPL 2或3下发布。

特别是这些新步骤我知道我必须学习以实现我的目标(它很可能 还有一些我不知道的,不过!):

  • 与gnome集成:我希望我的应用程序可以在任务栏中作为applet使用。
  • 使用D-bus:特别是我希望我的applet为ubuntu使用新的osd通知框架,但与其他applet的通信也是第二次迭代的一个可能功能。
  • 打包:我想在应用程序达到alpha阶段后立即设置公共PPA,但我也想在官方回购中使用现有包中的依赖项,而不是包含图书馆再次出现在我自己的包里。

当然,官方文档将是我的第一个知识来源,但是 - 根据我在another topic收到的非常有用的答案来判断 - 我决定转向SO社区收集其他建议例如:

  1. 我之前概述的那些步骤还有其他步骤,我必须学习以便能够实施我的项目吗?
  2. 根据您自己的经验,您是否建议我提前了解这些步骤(因为这些知识将影响我对核心功能的编码方式),或者您是否会考虑与gnome / d-bus集成并将其打包为“更高的封装级别“可以在之后添加到核心功能之上(注意:D-bus最初将用于推送数据。输入数据将通过Web服务检索)?
  3. 您是否建议我将我的应用程序分为两个包(后端和前端)或将它们放在一个包中?
  4. 你知道有什么有用的资源可以建议我去研究,了解我必须做的任何事情吗?
  5. 您是否知道我应该注意的任何常见的“初学者错误”?
  6. 这些问题并非详尽无遗:如果您觉得我遗漏了一般情况中的某些内容,我们非常欢迎您指出正确的方向!

    PS:我是否应该在解释我的最终目标时失败,请看一下project hamster:我想要实现的用户界面类似(意思是:applet应该显示状态并点击它应该打开应用程序本身,您可以从中配置applet并执行各种操作。)

4 个答案:

答案 0 :(得分:3)

好吧,你列出了python,所以你需要在你的武器库中拥有pynotify。它包装了DBus,并为您提供了操作osd通知系统的直接api。

>>> import pynotify
>>> pynotify.init("Lil' Applet")
True
>>> note = pynotify.Notification(
...            pynotify.get_app_name(), 
...            "Lil' Applet wants you to know something's up.", 
...            "/usr/share/icons/Human/48x48/status/dialog-information.png")
>>> note.show()
True

这会显示如下所示的通知:

[    ] **Lil' Applet**
[ICON]
[    ] Lil' Applet wants you to know something's up.

答案 1 :(得分:3)

如您所知,您的第一个也是最好的朋友将是其他人编写的代码 - 复制,粘贴,剖析,理解。 幸运的是,有一些项目可以实现您的目标。 我可以推荐conduit's代码作为如何以干净的方式做事的主要参考。我认为他们也有dbus的东西。其他人要关注的是,deskbar-applethamster(嘿),以及你记得有特色X的任何其他应用程序。有时它可能需要一些C代码解密(如小程序按钮位 - 我建议你最好从仓鼠那里拿走它,因为我有一些重要的时间直接得到这个东西)

然后“devhelp”应用程序将提供很大帮助 - 它允许您快速轻松地阅读和搜索手册页。确保您还有要使用的所有模块的-doc软件包。 对于用户界面,我强烈建议使用glade,因为这样可以让您以后更轻松地更改界面。你不能使用glade - 添加和对齐框,并在代码框中添加小部件。 肯定会有一些怪癖和事情,你将学到很多困难。不过应该太难了!

包装,特别是自动工具将会有点挣扎,但你会做对的。对于如何做debians(以及从那里到PPA),你可以挖掘仓鼠的存储库历史。曾经有一个“debian”文件夹。

我建议从小处开始 - 看看你能不能开窗。然后在上面放一个按钮。 你不必第一次“正确”做到这一点。如果有什么东西可以的话,第一次就可以了。

至于分离 - 直到你到达那里我才会烦恼。分成两部分并有一个核心,以后不应该太难。但这一切都取决于你的优先事项。

最后一件事 - 让知道该领域的朋友也有帮助。获得新朋友的一种方法是参加其他项目,呵呵。

答案 2 :(得分:1)

这里已经提出了一些非常好的建议,但是我建议你开发你的applet而不是“Ubuntu”和“Gnome”。另外,为Fedora和Arch Linux软件包这样的发行版制作RPM软件包并不需要花费太多额外的精力。但是有一个主要的缺点 - 为了与Debian stable保持兼容,你必须坚持使用GTK和GLib的古老版本,或者至少根据更新的版本选择任何功能。这很痛苦,但显然Debian稳定的用户很欣赏它。

我还建议尽早在某处设置源代码管理系统。您可能不会担心磁盘崩溃,但有时为了能够恢复自上次提交以来所做的所有事情,它可以为您节省很多麻烦。

Here是官方Gnome Panel Applet库文档的链接。我不知道它是否有Python绑定。

答案 3 :(得分:1)

两年前,当我提出这个问题时,Ubuntu和Gnome彼此之间的关系比现在更接近。目前(2011年底)gnome采用了gnome-shell,而Canonical决定开发自己的UI(unity)......

导致分裂的部分紧张specifically involved libappindicator,这使得我提出这个问题的方式(可能是答案的一部分)已经过时了。

此外,现在在堆栈交换上有AskUbuntu,这可能是一个更好的论坛,可以询问有关ubuntu的具体问题。