我是一个linux(主要是ubuntu)用户,对系统的工作方式有一个合理的理解(虽然我当然不是一个linux大师!)。在过去,我已经在python / GTK中开发了小型跨平台桌面应用程序,并将它作为自包含文件树交付给客户端,因此唯一的依赖项是Python本身和GTK。
现在我想为ubuntu开发一个小applet ,我想在GPL 2或3下发布。
特别是这些新步骤我知道我必须学习以实现我的目标(它很可能 还有一些我不知道的,不过!):
当然,官方文档将是我的第一个知识来源,但是 - 根据我在another topic收到的非常有用的答案来判断 - 我决定转向SO社区收集其他建议例如:
这些问题并非详尽无遗:如果您觉得我遗漏了一般情况中的某些内容,我们非常欢迎您指出正确的方向!
PS:我是否应该在解释我的最终目标时失败,请看一下project hamster:我想要实现的用户界面类似(意思是:applet应该显示状态并点击它应该打开应用程序本身,您可以从中配置applet并执行各种操作。)答案 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-applet,hamster(嘿),以及你记得有特色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的具体问题。