加入收藏 | 设为首页 | 会员中心 | 我要投稿 西双版纳站长网 (https://www.0691zz.com.cn/)- 数据计算、IT业界、服务器、教程、云日志!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

在Linux上为你的任务创建一个自定义的系统托盘指示器

发布时间:2019-07-06 18:23:19 所属栏目:Windows 来源:M.hanny Sabbagh
导读:系统托盘图标如今仍是一个很神奇的功能。只需要右击图标,然后选择想要的动作,你就可以大幅简化你的生活并且减少日常行为中的大量无用的点击。 一说到有用的系统托盘图标,我们很容易就想到 Skype、Dropbox 和 VLC: 然而系统托盘图标实际上要更有用得多
副标题[/!--empirenews.page--]

/uploads/allimg/c190705/156231T4b9540-125Q.png

系统托盘图标如今仍是一个很神奇的功能。只需要右击图标,然后选择想要的动作,你就可以大幅简化你的生活并且减少日常行为中的大量无用的点击。

一说到有用的系统托盘图标,我们很容易就想到 Skype、Dropbox 和 VLC:

然而系统托盘图标实际上要更有用得多;你可以根据自己的需求创建自己的系统托盘图标。本指导将会教你通过简单的几个步骤来实现这一目的。

前置条件

我们将要用 Python 来实现一个自定义的系统托盘指示器。Python 可能已经默安装在所有主流的 Linux 发行版中了,因此你只需要确定一下它已经被安装好了(此处使用版本为 2.7)。另外,我们还需要安装好 gir1.2-appindicator3 包。该库能够让我们很容易就能创建系统图标指示器。

在 Ubuntu/Mint/Debian 上安装:

  1. sudo apt-get install gir1.2-appindicator3

在 Fedora 上安装:

  1. sudo dnf install libappindicator-gtk3

对于其他发行版,只需要搜索包含 “appindicator” 的包就行了。

在 GNOME Shell 3.26 开始,系统托盘图标被删除了。你需要安装 这个扩展(或者其他扩展)来为桌面启用该功能。否则你无法看到我们创建的指示器。

基础代码

下面是该指示器的基础代码:

  1. #!/usr/bin/python
  2. import os
  3. from gi.repository import Gtk as gtk, AppIndicator3 as appindicator
  4. def main():
  5. indicator = appindicator.Indicator.new("customtray", "semi-starred-symbolic", appindicator.IndicatorCategory.APPLICATION_STATUS)
  6. indicator.set_status(appindicator.IndicatorStatus.ACTIVE)
  7. indicator.set_menu(menu())
  8. gtk.main()
  9. def menu():
  10. menu = gtk.Menu()
  11. command_one = gtk.MenuItem('My Notes')
  12. command_one.connect('activate', note)
  13. menu.append(command_one)
  14. exittray = gtk.MenuItem('Exit Tray')
  15. exittray.connect('activate', quit)
  16. menu.append(exittray)
  17. menu.show_all()
  18. return menu
  19. def note(_):
  20. os.system("gedit $HOME/Documents/notes.txt")
  21. def quit(_):
  22. gtk.main_quit()
  23. if __name__ == "__main__":
  24. main()

我们待会会解释一下代码是怎么工作的。但是现在,让我们将该文本保存为 tray.py,然后使用 Python 运行之:

  1. python tray.py

我们会看到指示器运行起来了,如下图所示:

Create a Custom System Tray Indicator For Your Tasks on Linux

Create a Custom System Tray Indicator For Your Tasks on Linux

现在,让我们解释一下这个魔法的原理:

  • 前三行代码仅仅用来指明 Python 的路径并且导入需要的库。
  • def main() :此为指示器的主函数。该函数的代码用来初始化并创建指示器。
  • indicator = appindicator.Indicator.new("customtray","semi-starred-symbolic",appindicator.IndicatorCategory.APPLICATION_STATUS) :这里我们指明创建一个名为 customtray 的新指示器。这是指示器的唯一名称,这样系统就不会与其他运行中的指示器搞混了。同时我们使用名为 semi-starred-symbolic 的图标作为指示器的默认图标。你可以将之改成任何其他值;比如 firefox (如果你希望该指示器使用 FireFox 的图标),或任何其他你想用的图标名。最后与 APPLICATION_STATUS 相关的部分是指明指示器类别/范围的常规代码。
  • indicator.set_status(appindicator.IndicatorStatus.ACTIVE):这一行激活指示器。
  • indicator.set_menu(menu()):这里说的是我们想使用 menu() 函数(我们会在后面定义) 来为我们的指示器创建菜单项。这很重要,可以让你右击指示器后看到一个可以实施行为的列表。
  • gtk.main():运行 GTK 主循环。
  • menu() 中我们定义了想要指示器提供的行为或项目。command_one = gtk.MenuItem('My Notes') 仅仅使用文本 “My notes” 来初始化第一个菜单项,接下来 command_one.connect('activate',note) 将菜单的 activate 信号与后面定义的 note() 函数相连接;换句话说,我们告诉我们的系统:“当该菜单项被点击,运行 note() 函数”。最后,menu.append(command_one) 将菜单项添加到列表中。
  • exittray 相关的行是为了创建一个退出的菜单项,以便让你在想要的时候关闭指示器。
  • menu.show_all() 以及 return menu 只是返回菜单项给指示器的常规代码。
  • note(_) 下面是点击 “My Notes” 菜单项时需要执行的代码。这里只是 os.system("gedit $HOME/Documents/notes.txt") 这一句话;os.system 函数允许你在 Python 中运行 shell 命令,因此这里我们写了一行命令来使用 gedit 打开家目录下 Documents 目录中名为 notes.txt 的文件。例如,这个可以称为你今后的日常笔记程序了!

添加你所需要的任务

(编辑:西双版纳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读