5

我是一个 linux(主要是 ubuntu)用户,对系统的工作原理有合理的理解(尽管我当然不是linux 专家!)。过去,我在 python/GTK 中开发了小型跨平台桌面应用程序,并将它们作为独立的文件树交付给客户端,因此唯一的依赖项是 Python 本身和 GTK。

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

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

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

当然,官方文档将是我的第一个知识来源,但是 - 基于我在 SO 上收到的关于另一个主题的非常有用的答案的判断- 我决定求助于 SO 社区以收集其他建议,例如:

  1. 除了我之前概述的步骤之外,是否还有其他步骤,我必须学习才能实施我的项目?
  2. 根据您自己的经验,您是否会建议我提前学习这些步骤(因为这些知识会影响我编写核心功能的方式),或者您是否会将与 gnome / d-bus 和打包的集成视为“更高的封装级别" 之后可以添加到核心功能之上(注意:D-bus 将首先用于推送数据。输入数据将通过 web 服务检索)?
  3. 你会建议我将我的应用程序分成两个包(后端和前端)还是将它放在一个包中?
  4. 你知道有什么有用的资源可以建议我看一下,以学习我必须学习的任何东西吗?
  5. 您是否知道我应该注意的任何常见的“初学者错误”?

但是,这些问题并不详尽:如果您觉得我在总体情况中遗漏了一些东西,我们非常欢迎您指出我正确的方向!

PS:如果我无法解释我的最终目标,请看一下项目仓鼠:我想要实现的用户界面类似(意思是:小程序应该显示状态并单击它应该打开应用程序本身,您可以从中配置小程序并执行各种操作)。

4

4 回答 4

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.
于 2009-12-02T15:13:44.783 回答
3

如您所知,您的第一个也是最好的朋友将是别人编写的代码——复制、粘贴、剖析、理解。幸运的是,有一些项目可以实现您想要实现的目标。我可以推荐管道的代码作为如何以干净的方式做事的主要参考。我认为他们在 dbus 上也有东西。其他需要关注的可能是deskbar-applet仓鼠(呵呵)和任何其他你记得有功能X的应用程序。有时它可能需要一些C代码解密(比如小程序按钮位——我建议你最好接受它来自仓鼠,因为我正忙着把事情弄清楚)

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

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

我建议从小处着手——看看你能不能得到一个窗口。然后在上面放一个按钮。您不必第一次就“正确”地做。第一次会没事的,如果有什么工作的话。

至于分离 - 在你到达那里之前我不会打扰它。分成两部分并有一个核心,以后应该不会太难。但这一切都取决于您的优先事项。

最后一件事 - 结交了解该领域的朋友也有帮助。结交新朋友的一种方法是参加其他项目,呵呵。

于 2009-12-02T15:48:53.217 回答
1

这里已经有一些非常好的建议,但是让我建议您开发您的小程序,与其说是“为 Ubuntu”开发,不如说是“为 Gnome”开发。为 Fedora 和 Arch Linux 软件包等发行版制作 RPM 软件包并不需要太多额外的努力,仅举两个例子。但是有一个主要缺点——为了与 Debian stable 保持兼容,您必须坚持使用古老版本的 GTK 和 GLib,或者至少使任何取决于新版本的功能可选。这很痛苦,但显然 Debian 稳定用户很欣赏它。

我还建议尽早在某个地方建立一个源代码管理系统。你可能不担心你的磁盘崩溃,但有时它可以为你省去很多麻烦,只是为了能够恢复你自上次提交以来所做的一切。

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

于 2009-12-03T17:45:55.093 回答
1

两年前当我问这个问题时,Ubuntu 和 Gnome 比现在更接近。目前(2011 年底)gnome 采用了 gnome-shell,而 Canonical 决定开发自己的 UI(统一)......

导致分裂的部分紧张局势特别涉及 libappindicator,这使得我提出这个问题的方式(可能还有部分答案)过时了。

此外,现在有关于堆栈交换的AskUbuntu,这可能是一个更好的论坛来询问特定于 ubuntu 的问题。

于 2011-11-09T01:38:59.940 回答