इस उत्तर और इंटरनेट पर एक अतिरिक्त शोध के आधार पर यहां पाइथन लॉन्चर है, जो उबंटू 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()
- यदि आपको स्क्रिप्ट में सुधार करने का कोई तरीका दिखाई देता है, तो कृपया उत्तर को संपादित करने में संकोच न करें। मुझे पायथन के साथ ज्यादा अनुभव नहीं है।
निष्पादन योग्य फ़ाइल बनाएं और उपरोक्त पंक्तियों को उसकी सामग्री के रूप में रखें। मान लें कि फ़ाइल कहा जाता है 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 Gist से डाउनलोड कर सकते हैं :
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...