नीचे दी गई स्क्रिप्ट "कुछ भी नहीं" और "सस्पेंड" के बीच क्लोज़-लिड एक्शन को टॉगल करेगी :
#!/usr/bin/env python3
import subprocess
key = ["org.gnome.settings-daemon.plugins.power",
"lid-close-ac-action", "lid-close-battery-action"]
currstate = subprocess.check_output(["gsettings", "get",
key[0], key[1]]).decode("utf-8").strip()
if currstate == "'suspend'":
command = "'nothing'"
subprocess.Popen(["notify-send", "Lid closes with no action"])
else:
command = "'suspend'"
subprocess.Popen(["notify-send", "Suspend will be activated when lid closes"])
for k in [key[1], key[2]]:
subprocess.Popen(["gsettings", "set", key[0], k, command])
... और सूचित करें कि वर्तमान में सेट की गई स्थिति क्या है:
कैसे इस्तेमाल करे
सीधे शब्दों में:
व्याख्या
क्लोज़-लिड एक्शन सेटिंग की वर्तमान स्थिति को कमांड द्वारा पुनः प्राप्त किया जा सकता है
gsettings get org.gnome.settings-daemon.plugins.power lid-close-ac-action
(शक्ति पर), और
gsettings get org.gnome.settings-daemon.plugins.power lid-close-battery-action
(बैटरी पर)
स्क्रिप्ट वर्तमान स्थिति को पढ़ता है, और कमांड के साथ विपरीत ('सस्पेंड' / 'कुछ नहीं') सेट करता है:
gsettings get org.gnome.settings-daemon.plugins.power lid-close-ac-action '<action>'
वैकल्पिक रूप से (अतिरिक्त)
वैकल्पिक रूप से / अतिरिक्त रूप से, आप एक संकेतक के रूप में एक संकेतक चला सकते हैं यह दिखाने के लिए कि ढक्कन की वर्तमान स्थिति क्या है- सेटिंग। यह दिखाएगा:
... पैनल में, यदि सस्पेंड को ढक्कन बंद करने से रोका जाएगा, तो यह एक ग्रे दिखाएगा यदि नहीं।
लिपी
#!/usr/bin/env python3
import subprocess
import os
import time
import signal
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3, GObject
from threading import Thread
key = ["org.gnome.settings-daemon.plugins.power",
"lid-close-ac-action", "lid-close-battery-action"]
currpath = os.path.dirname(os.path.realpath(__file__))
def runs():
# The test True/False
return subprocess.check_output([
"gsettings", "get", key[0], key[1]
]).decode("utf-8").strip() == "'suspend'"
class Indicator():
def __init__(self):
self.app = 'show_proc'
iconpath = currpath+"/nocolor.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.update = Thread(target=self.check_runs)
# daemonize the thread to make the indicator stopable
self.update.setDaemon(True)
self.update.start()
def check_runs(self):
# the function (thread), checking for the process to run
runs1 = None
while True:
time.sleep(1)
runs2 = runs()
# if there is a change in state, update the icon
if runs1 != runs2:
if runs2:
# set the icon to show
GObject.idle_add(
self.indicator.set_icon,
currpath+"/nocolor.png",
priority=GObject.PRIORITY_DEFAULT
)
else:
# set the icon to hide
GObject.idle_add(
self.indicator.set_icon,
currpath+"/green.png",
priority=GObject.PRIORITY_DEFAULT
)
runs1 = runs2
def create_menu(self):
menu = Gtk.Menu()
# quit
item_quit = Gtk.MenuItem('Quit')
item_quit.connect('activate', self.stop)
menu.append(item_quit)
menu.show_all()
return menu
def stop(self, source):
Gtk.main_quit()
Indicator()
GObject.threads_init()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()
कैसे इस्तेमाल करे
- एक खाली फ़ाइल में ऊपर की स्क्रिप्ट को कॉपी करें, इसे सहेजें
show_state.py
नीचे दिए गए दोनों आइकन कॉपी करें (राइट क्लिक करें -> के रूप में सहेजें), और उन्हें एक और उसी निर्देशिका में सहेजें , और बिल्कुल नीचे दिए गए नामshow_proc.py
green.png
nocolor.png
अब परीक्षण- show_state.py
कमांड द्वारा चलाएं :
python3 /path/to/show_state.py
और इस उत्तर के पहले भाग को सेट करने वाले शॉर्टकट को दबाकर वर्तमान स्थिति को बदल दें।
यदि सभी ठीक काम करते हैं, तो निम्न स्टार्टअप अनुप्रयोगों में जोड़ें:
/bin/bash -c "sleep 15 && python3 /path/to/show_state.py"
ध्यान दें
डिटेक्टर- ऊपर संकेतक इस उत्तर का एक संपादित संस्करण है । बस फ़ंक्शन में परीक्षण को बदलकर runs()
(और वैकल्पिक रूप से पैनल आइकन के अनुसार), आप इसका उपयोग किसी भी चीज़ की स्थिति को दिखाने के लिए कर सकते हैं जो कि True
या है False
।