नहीं सचमुच आप के लिए क्या कहा, लेकिन कम से कम एक (प्रभावी रूप से) तुलनीय समाधान एक शॉर्टकट कुंजी के अंतर्गत नीचे स्क्रिप्ट डाल करने के लिए किया जाएगा।
यह क्या करता है
जब शॉर्टकट कुंजी का उपयोग किया जाता है:
फिर:
- यदि उपयोगकर्ता दबाता है Enter, तो सिस्टम बंद हो जाता है
- यदि उपयोगकर्ता कुछ नहीं करता है, तो सिस्टम 30 सेकंड (या आपके द्वारा सेट किए जाने की किसी अन्य अवधि) की प्रतीक्षा करता है और नीचे बन्द हो जाता है।
- यदि उपयोगकर्ता 30 सेकंड के दौरान माउस को स्थानांतरित करता है, तो प्रक्रिया बंद कर दी जाती है
लिपी
#!/usr/bin/env python3
import subprocess
import time
#--- set the location of the close button x, y
q_loc = [1050, 525]
#--- set the time to wait before shutdown
countdown = 30
subprocess.Popen(["gnome-session-quit", "--power-off"])
# for slower systems, set a longer break, on faster systems, can be shorter:
time.sleep(0.4)
subprocess.Popen(["xdotool", "mousemove", str(q_loc[0]), str(q_loc[1])])
coords1 = q_loc
t = 0
while True:
time.sleep(1)
cmd = "xdotool", "getmouselocation"
currloc = subprocess.check_output(cmd).decode("utf-8").split()[:2]
coords2 = [int(n.split(":")[1]) for n in currloc]
if coords2 != coords1:
break
else:
if t >= countdown:
subprocess.Popen(["xdotool", "key", "KP_Enter"])
break
t += 1
कैसे इस्तेमाल करे
मुझे पूरा यकीन है कि आप इसका उपयोग करना जानते हैं, लेकिन यहाँ हम हैबिट कारणों से जाते हैं:
स्क्रिप्ट का उपयोग करता है xdotool
sudo apt-get install xdotool
स्क्रिप्ट को एक खाली फ़ाइल में कॉपी करें, इसे इस रूप में सहेजें run_close.py
हेड सेक्शन में, क्लोज-विंडो में शट-डाउन बटन का स्क्रीन स्थान सेट करें (मेरा पहला अनुमान सही था):
#--- set the location of the close button x, y
q_loc = [1050, 525]
और बिना बंद किए जाने से पहले प्रतीक्षा करने का समय:
#--- set the time to wait before shutdown
countdown = 30
इसे कमांड द्वारा टेस्ट करें:
python3 /path/to/run_close.py
विकल्प के सभी के साथ इसका परीक्षण करें: Enterतत्काल शटडाउन के लिए दबाव , बंद शटडाउन और माउस द्वारा प्रक्रिया को तोड़ दें
यदि सभी ठीक काम करते हैं, तो इसे शॉर्टकट कुंजी में जोड़ें: चुनें: सिस्टम सेटिंग्स> "कीबोर्ड"> "शॉर्टकट"> "कस्टम शॉर्टकट"। "+" पर क्लिक करें और कमांड जोड़ें:
python3 /path/to/run_close.py
संपादित करें
स्क्रिप्ट के एक संस्करण के नीचे जिसे किसी भी अतिरिक्त सेटिंग की आवश्यकता नहीं है। यह बटन के निर्देशांक की गणना करता है, चाहे स्क्रीन का रिज़ॉल्यूशन कोई भी हो।
सेटअप बहुत अधिक समान है, लेकिन [3.]
छोड़ दिया जा सकता है।
#!/usr/bin/env python3
import subprocess
import time
#--- set the time to wait before shutdown
countdown = 30
def get_qloc():
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
scrs = [s.split("+") for s in xr if all([s.count("x") == 1, s.count("+") == 2])]
center = [int(int(s)/2) for s in [scr[0] for scr in scrs if scr[1] == "0"][0].split("x")]
return [center[0] + 250, center[1]]
q_loc = get_qloc()
subprocess.Popen(["gnome-session-quit", "--power-off"])
# for slower systems, set a longer break, on faster systems, can be shorter:
time.sleep(0.4)
subprocess.Popen(["xdotool", "mousemove", str(q_loc[0]), str(q_loc[1])])
coords1 = q_loc
t = 0
while True:
time.sleep(1)
cmd = "xdotool", "getmouselocation"
currloc = subprocess.check_output(cmd).decode("utf-8").split()[:2]
coords2 = [int(n.split(":")[1]) for n in currloc]
if coords2 != coords1:
break
else:
if t >= countdown:
subprocess.Popen(["xdotool", "key", "KP_Enter"])
break
t += 1
व्याख्या
सिस्टम को बंद करने के लिए सत्र प्रबंधक विंडो का आकार हमेशा स्क्रीन के रिज़ॉल्यूशन से स्वतंत्र और एक निश्चित (निरपेक्ष) आकार का होता है। इसलिए स्क्रीन के केंद्र के सापेक्ष स्थिति एक स्थिर कारक है।
इसके बाद हमें केवल स्क्रीन के रिज़ॉल्यूशन को पढ़ना है और वहां से बटन की स्थिति की गणना करना है।
लागू फ़ंक्शन ( get_qloc()
) बाईं स्क्रीन के रिज़ॉल्यूशन की गणना करता है , क्योंकि वह वह है जहां संवाद दिखाई देगा।
ध्यान दें
समय, लाइन time.sleep(0.4)
में सेट अपेक्षाकृत धीमी प्रणालियों के लिए सेट किया गया है, यह सुनिश्चित करने के लिए कि शट डाउन विंडो दिखाई देने के बाद माउस को स्थानांतरित कर दिया जाए। तेज सिस्टम पर, यह धीमा हो सकता है, धीमी प्रणालियों (जैसे संभवतः एक वीएम) पर इसे लंबे समय तक सेट करने की आवश्यकता हो सकती है।