我认为@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图标设置支持。
参考资料:
相关问题: