如何制作一个指示器来运行各种命令?

如何制作一个指示器来运行各种命令?

我该如何为 Unity 上的面板制作指示器?我想要一个显示菜单的按钮,当您单击菜单项时,它们会运行命令。

我该怎么做呢?

答案1

一个运行各种命令的指示器

以下答案是这个。 从此问题与那个完全不同,决定在那里指定答案,以灵活的方式解决这个问题,从文本文件中读取(菜单)名称和命令。

在此处输入图片描述

解决方案

是一个指示器,从名为的文件中读取行commands,其中姓名命令定义,每行一组。名称(如菜单中所示)和命令以 分隔||。例如:

Gedit || gedit 
Go Home || nautilus $HOME

剧本

#!/usr/bin/env python3
import subprocess
import os
import signal
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3

currpath = os.path.dirname(os.path.realpath(__file__))

class Indicator():
    def __init__(self):
        self.app = 'update_setting'
        iconpath = currpath+"/icon.png"
        self.indicator = AppIndicator3.Indicator.new(
            self.app, iconpath,
            AppIndicator3.IndicatorCategory.SYSTEM_SERVICES)
        self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)       
        self.indicator.set_menu(self.create_menu())

    def getscripts(self):
        cmd_data = [l for l in open(
            os.path.join(currpath, "commands")
            ).read().splitlines()]
        cmd_data = [l.split("||") for l in cmd_data]  
        for cmd in cmd_data:
            menuitem = Gtk.MenuItem(cmd[0].strip())
            menuitem.connect("activate", self.run_script, cmd[1].strip())
            self.menu.append(menuitem)

    def create_menu(self):
        self.menu = Gtk.Menu()
        self.getscripts()
        # quit
        item_quit = Gtk.MenuItem('Quit')
        sep = Gtk.SeparatorMenuItem()
        self.menu.append(sep)
        item_quit.connect('activate', self.stop)
        self.menu.append(item_quit)
        self.menu.show_all()
        return self.menu

    def run_script(self, widget, script):
        subprocess.Popen(["/bin/bash", "-c", script])

    def stop(self, source):
        Gtk.main_quit()

Indicator()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()

如何使用

  1. 将上述脚本复制到一个空文件中,另存为run_commands.py
  2. 复制下面的图标并将其保存为(完全相同icon.png同一个文件夹按照脚本。

    在此处输入图片描述

  3. 创建一个文本文件,在同一个文件夹中,(确切地)命名为:(commands无扩展)。
  4. 使用您的命令及其名称填充文件,例如:

    Gedit || gedit 
    Go Home || nautilus $HOME
    

    名称可以包含空格,命令可以包含参数。

  5. 通过以下命令运行指标:

    python3 /path/to/run_commands.py
    

相关内容