如何使用Python编写Appindicators?

我想尝试开发一些简单的指示器,如数字锁定/大写锁定和亮度等。我应该如何在Python中创建指示器?是否有任何教程可以引导我编写我的第一个应用程序指示器(像快速开发应用程序一样)?是否有像快速模板这样的简单解决方案可以帮助我入门?

特别是针对PyQt5、PyGI和Python3的应用程序指示器(也可以在Unity之外工作)。 - Mateo
2个回答

我认为@fossfreedom提到的使用Python、GIR和GTK3编写指示器,涵盖了如何为Unity创建指示器的内容。(先读这个)
我正在使用Ubuntu 14.04和Quickly 12.08.1。这是一个完整的工作示例,基于Quickly模板构建而成。
OP只想要一个指示器(而不是完整的GUI应用程序),所以让我们从ubuntu-cli Quickly模板开始:
快速创建ubuntu-cli indicator-demo
在这个模板中可能会出现未发布的错误修复(bug#1064110)的错误消息:
创建项目目录indicator-demo 创建bzr存储库并提交 启动您新创建的项目! Traceback (最近一次调用最先): ... OSError: [Errno 13] 权限被拒绝 ERROR:创建命令失败 中止
修复权限
cd indicator-demo/ chmod +x bin/indicator-demo
测试 $ quickly run 我已经启动,我的参数是:
有一个很好的PYGI示例来自Ubuntu Wiki:Application Indicators。它应该很容易集成。
打开进行编辑:
quickly edit
修改__init__.py,添加所需的模块导入:
from gi.repository import Gtk from gi.repository import AppIndicator3 as appindicator 在main()函数中,在以下代码之间: print _("I'm launched and my args are: %s") % (" ".join(args)) logging.debug(_('end of prog'))
添加:
ind = appindicator.Indicator.new_with_path ( _("Indicator demo for Quickly"), "indicator-demo-icon-normal", appindicator.IndicatorCategory.APPLICATION_STATUS, indicator_democonfig.get_data_path()) ind.set_status (appindicator.IndicatorStatus.ACTIVE) ind.set_attention_icon ("indicator-demo-icon-attention")
# 创建菜单 menu = Gtk.Menu()
# 创建一个项目 menu_items = Gtk.MenuItem(_("Quit")) menu.append(menu_items) # 这是您将菜单项与函数连接起来的地方: menu_items.connect("activate", Gtk.main_quit ) # 显示项目 menu_items.show()
ind.set_menu(menu)
Gtk.main()
将图标添加到新创建的数据文件夹:
mkdir data
我从已安装的软件包中复制了一些图标,只是为了做个例子:
cp /usr/share/icons/ubuntu-mono-dark/status/22/indicator-messages.svg data/indicator-demo-icon-normal.svg cp /usr/share/icons/ubuntu-mono-dark/status/22/indicator-messages-new.svg data/indicator-demo-icon-attention.svg
测试它:
quickly run
创建软件包并发布它:
quickly package quickly share --ppa your-ppa

注意事项:

好吧,我没有更新Debian软件包控制文件,但依赖项已经自动添加到生成的DEB中:
软件包:indicator-demo 版本:0.1 架构:all 维护者:UNKNOWN 安装大小:57 依赖项:python (>= 2.7),python (<< 2.8),python:any (>= 2.7.1-0ubuntu2),gir1.2-gtk-3.0,gir1.2-appindicator3-0.1 部分:python 优先级:extra 描述:UNKNOWN UNKNOWN
此外,之前在数据文件夹中添加的图标也已包含在软件包中。
我之前遇到过类似的情况,如如何将键盘修饰符状态小程序添加到Unity面板?。答案中包含了一个使用libappindicator的示例/原型键盘指示器(但是使用C编程语言)。 libappindicator缺少一个重要功能,使得将其他桌面指示器移植变得容易。图标只能从路径加载。请参阅Bug#812067 API所需功能:pixbuf图标设置支持。

参考资料:

相关问题:


这个链接将教你如何使用Python+Unity创建一个基本的新邮件指示器,该指示器可以与GMail配合使用。通过这个例子,你可以对小程序的基本结构有一个很好的了解,并且可以轻松地进行扩展(尽管是相对简单的例子)。 我们将逐个讲解最终的脚本部分。
这是另一个带有代码注释的Python程序,使用了Pygtk


请注意,第一个链接现在指向一个不存在的域名(conjurecode.com)。 - andrew.46