นี่คือ Python launcher จากคำตอบนี้และการวิจัยเพิ่มเติมในอินเทอร์เน็ตซึ่งใช้งานได้ดีใน Ubuntu 16.04:
#!/usr/bin/env python3
import signal
import gi
import os
import subprocess
import sys
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3, GObject
import time
from threading import Thread
# Execute the script
script = os.path.basename(sys.argv[1])
subprocess.Popen(sys.argv[1:])
script_name = script.rsplit('/', 1)[-1]
class Indicator():
    def __init__(self):
        self.app = 'Script indicator'
        iconpath = "/usr/share/unity/icons/launcher_bfb.png"
        self.indicator = AppIndicator3.Indicator.new(
            self.app, iconpath,
            AppIndicator3.IndicatorCategory.OTHER)
        self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)
        self.indicator.set_menu(self.create_menu())
        self.indicator.set_label("Script Indicator", self.app)
        # the thread:
        self.update = Thread(target=self.show_seconds)
        # daemonize the thread to make the indicator stopable
        self.update.setDaemon(True)
        self.update.start()
    def create_menu(self):
        menu = Gtk.Menu()
        # menu item 1
        item_quit = Gtk.MenuItem('Quit')
        item_quit.connect('activate', self.stop)
        menu.append(item_quit)
        menu.show_all()
        return menu
    def show_seconds(self):
        global script_name
        t = 0
        process = subprocess.call(['pgrep', script_name], stdout=subprocess.PIPE)
        while (process == 0):
            t += 1
            GObject.idle_add(
                self.indicator.set_label,
                script_name + ' ' + str(t) + 's', self.app,
                priority=GObject.PRIORITY_DEFAULT
                )
            time.sleep(1)
            process = subprocess.call(['pgrep', script_name], stdout=subprocess.PIPE)
        subprocess.call(['notify-send', script_name + ' ended in ' + str(t) + 's'])
        time.sleep(10)
        Gtk.main_quit()
    def stop(self, source):
        global script_name
        subprocess.call(['pkill', script_name], stdout=subprocess.PIPE)
        Gtk.main_quit()
Indicator()
# this is where we call GObject.threads_init()
GObject.threads_init()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()
- หากคุณเห็นวิธีปรับปรุงสคริปต์โปรดอย่าลังเลที่จะแก้ไขคำตอบ ฉันไม่ได้มีประสบการณ์กับ Python มากนัก
 
สร้างไฟล์เรียกทำงานและวางบรรทัดด้านบนเป็นเนื้อหา script-indicator.pyสมมติว่าไฟล์จะถูกเรียกว่า ขึ้นอยู่กับความต้องการและลักษณะของสคริปต์ของคุณคุณสามารถใช้ตัวเรียกใช้งานนี้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
./script-indicator.py /path/to/script.sh
./script-indicator.py /path/to/script.sh &
./script-indicator.py /path/to/script.sh > out.log &
./script-indicator.py /path/to/script.sh > /dev/null &
- ในกรณีที่
script.shเป็นหนึ่งที่คุณต้องการที่จะแสดงให้เห็น 
สกรีนช็อตที่ทำเมื่อscript.shสิ้นสุด:

- คลิกที่ภาพเพื่อดูตัวอย่างการเคลื่อนไหว
 
หรือคุณสามารถวางสคริปต์/usr/local/binเพื่อให้สามารถเข้าถึงได้ในฐานะระบบคำสั่งเชลล์ คุณสามารถดาวน์โหลดได้จากนี้อุทิศ GitHub กระทู้:
sudo wget -qO /usr/local/bin/script-indicator https://gist.githubusercontent.com/pa4080/4e498881035e2b5062278b8c52252dc1/raw/c828e1becc8fdf49bf9237c32b6524b016948fe8/script-indicator.py
sudo chmod +x /usr/local/bin/script-indicator
ฉันทดสอบด้วยไวยากรณ์ต่อไปนี้:
script-indicator /path/to/script.sh
script-indicator /path/to/script.sh &
script-indicator /path/to/script.sh > output.log
script-indicator /path/to/script.sh > output.log &
script-indicator /path/to/script.sh > /dev/null
script-indicator /path/to/script.sh > /dev/null &
nohup script-indicator /path/to/script.sh >/dev/null 2>&1 &
# etc...