如何用 python 编写 Appindicators?

如何用 python 编写 Appindicators?

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

答案1

我认为使用 Python、GIR 和 GTK3 编写指标正如@fossfreedom 所提到的,介绍了如何为 Unity 创建指标。(先读一下)

我使用的是 Ubuntu 14.04,Quickly 12.08.1。这是从 Quickly 模板构建的完整工作示例的演示。

  1. OP 只想要指示器(而不是完整的 GUI 应用程序),所以让我们从 ubuntu-cli 快速模板开始:

    quickly create ubuntu-cli indicator-demo
    

    它可能会引发未发布的错误修复的错误消息(错误#1064110) 在此模板中:

    Creating project directory indicator-demo
    Creating bzr repository and committing
    Launching your newly created project!
    Traceback (most recent call last):
    ...
    OSError: [Errno 13] Permission denied
    ERROR: create command failed
    Aborting
    

    修复权限

    cd indicator-demo/
    chmod +x bin/indicator-demo
    

    测试

    $ quickly run
    I'm launched and my args are:
    
  2. 有一个不错的皮吉例子来自Ubuntu Wiki:应用程序指示器. 整合起来应该很容易。

    打开进行编辑:

    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")
      
      # create a menu
      menu = Gtk.Menu()
      
      # create one item 
      menu_items = Gtk.MenuItem(_("Quit"))
      menu.append(menu_items)    
      # this is where you would connect your menu item up with a function:
      menu_items.connect("activate", Gtk.main_quit )    
      # show the item
      menu_items.show()
      
      ind.set_menu(menu)
      
      Gtk.main()
      
  3. 为新创建的数据文件夹添加图标:

    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
    
  4. 测试一下:

    quickly run
    
  5. 创建包并发布:

    quickly package
    quickly share --ppa your-ppa
    

笔记:

  1. 好吧,我没有更新 debian 软件包控制文件,但是依赖项已自动添加到生成的 DEB 中:

    Package: indicator-demo
    Version: 0.1
    Architecture: all
    Maintainer: UNKNOWN <UNKNOWN>
    Installed-Size: 57
    Depends: python (>= 2.7), python (<< 2.8), python:any (>= 2.7.1-0ubuntu2), gir1.2-gtk-3.0, gir1.2-appindicator3-0.1
    Section: python
    Priority: extra
    Description: UNKNOWN
     UNKNOWN
    

    此外,数据文件夹中先前添加的图标也包含在包中。

  2. 我以前也遇到过类似的情况,如何向 Unity 面板添加键盘修饰状态小程序?。答案包含一个使用 libappindicator 的示例/原型键盘指示器(但使用 c 编程语言)。

    libappindicator 缺少一个重要功能,该功能使移植其他桌面指示器变得容易。图标只能从路径加载。参见 Bug #812067 所需 API:pixbuf 图标设置支持

参考:

相关问题:

答案2

link 将教您如何在 python+unity 中创建一个基本的新邮件指示器,该指示器可与 GMail 配合使用。这将为您提供小程序基本结构的坚实基础,同时提供一个您可以轻松扩展的真实(尽管简单)示例。它将逐一介绍最终脚本。
是另一个带有代码注释的 Python 程序,使用 Pygtk

相关内容