怎么在Linux系统中创建一个自定义的系统托盘指示器

2022年 10月 17日 发表评论

新春采购季点击领腾讯云8888元代金券阿里云史上最大力度降价,最高降55%:点击了解续费贵、升级贵,选配置高、长期的产品;腾讯云老用户享新人优惠方法:用Q登录、1人可注册3个新账号帕鲁火热:点击一键部署阿里云帕鲁服务器点击一键部署腾讯云帕鲁服务器

如何在Linux系统中创建自定义系统托盘指示器?很多新手对此不是很清楚。为了帮助您解决这个问题,本站将在下面向您详细解释。有这方面需求的人可以借鉴一下,希望你能有所收获。

安装在Ubuntu/Mint/Debian上:

sudo apt-get install gir 1.2-appindicator 3

安装在软呢帽上:

sudo dnf安装libappindicator-gtk3

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

在GNOME Shell 3.26的开始,系统托盘图标被删除。您需要安装此扩展(或其他扩展),以便为您的桌面启用此功能。否则,您将看不到我们创建的指示器。

基础代码

以下是该指示器的基本代码:

#!/usr/bin/python

importos

fromgi . Respostoryimportgtkasgtk,AppIndicator3asappindicator

defmain():

indicator=appindicator。Indicator.new('customtray ','分号-符号',appindicator。指示类别类别。应用程序_状态)

indicator . set _ status(app indicator。指示器状态。激活)

indicator.set_menu(menu())

gtk.main()

defmenu():

menu=gtk。菜单()

command_one=gtk。菜单项(“我的笔记”)

command_one.connect('activate ',注意)

menu.append(command_one)

exittray=gtk。菜单项(“退出光线”)

exittray.connect('激活',退出)

menu.append(exittray)

menu.show_all()

返回菜单

defnote(_):

OS . system(' gedit $ HOME/Documents/notes . txt ')

defquit(_):

gtk.main_quit()

if__name__=='__main__':

Main()我们稍后会解释代码是如何工作的。但是现在,让我们将文本保存为tray.py并用Python运行它:

python托盘. py

我们将看到指示器正在运行,如下图所示:

怎么在Linux系统中创建一个自定义的系统托盘指示器

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

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

前三行代码仅用于指示Python的路径和导入所需的库。

Def main():这是指标的主要功能。该函数的代码用于初始化和创建指示器。

indicator=app indicator . indicator . new(' customtray ','分号-符号',app indicator . indicator category . application _ status):这里我们指示创建一个名为custom tray的新指示器。这是指标的唯一名称,这样系统在运行中就不会与其他指标混淆。同时,我们使用名为半星符号的图标作为指示器的默认图标。您可以将其更改为任何其他值;例如,firefox(如果您希望指示器使用FireFox图标),或者您希望使用的任何其他图标名称。与应用状态相关的最后一部分是指示指标类别/范围的通用代码。指示器。set _ status (appindicator。指示器状态。激活):这条线激活指示器。

Indicator.set_menu(menu()):这里我们想使用menu()函数(我们将在后面定义)为我们的指示器创建菜单项。这非常重要,这样您就可以右键单击该指示器,并看到可以实现的行为列表。

GTk.main():运行gt

K 主循环。

在 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 的文件。例如,这个可以称为你今后的日常笔记程序了!

添加你所需要的任务

你只需要修改代码中的两块地方:

menu()

所以,比如说你想要创建一个新菜单项,在点击后,会使用 VLC 播放硬盘中某个特定的视频/音频文件?要做到这一点,只需要在第 17 行处添加下面三行内容:

command_two=gtk.MenuItem('Playvideo/audio')  command_two.connect('activate',play)  menu.append(command_two)

然后在第 30 行添加下面内容:

defplay(_):  os.system("vlc/home/<username>/Videos/somevideo.mp4")

将/home//Videos/somevideo.mp4` 替换成你想要播放的视频/音频文件路径。现在保存该文件然后再次运行该指示器:

python tray.py

你将会看到:

怎么在Linux系统中创建一个自定义的系统托盘指示器

Create a Custom System Tray Indicator For Your Tasks on Linux

而且当你点击新创建的菜单项时,VLC 会开始播放!

要创建其他项目/任务,只需要重复上面步骤即可。但是要小心,需要用其他命令来替换 command_two ,比如 command_three ,这样在变量之间才不会产生冲突。然后定义新函数,就像 play(_) 函数那样。

可能性是无穷的;比如我用这种方法来从网上获取数据(使用 urllib2 库)并显示出来。我也用它来在后台使用 mpg123 命令播放 mp3 文件,而且我还定义了另一个菜单项来 killall mpg123 以随时停止播放音频。比如 Steam 上的 CS:GO 退出很费时间(窗口并不会自动关闭),因此,作为一个变通的方法,我只是最小化窗口然后点击某个自建的菜单项,它会执行 killall -9 csgo_linux64 命令。

你可以使用这个指示器来做任何事情:升级系统包、运行其他脚本——字面上的任何事情。

自动启动

我们希望系统托盘指示器能在系统启动后自动启动,而不用每次都手工运行。要做到这一点,只需要在自启动应用程序中添加下面命令即可(但是你需要将 tray.py 的路径替换成你自己的路径):

nohup python/home/<username>/tray.py&

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: