मुझे वास्तव में हॉट कॉर्नर्स पसंद हैं। :-)
क्या नीचे दिखाए गए अनुसार गर्म कोने पर कस्टम कमांड चलाना किसी तरह संभव है?
मुझे वास्तव में हॉट कॉर्नर्स पसंद हैं। :-)
क्या नीचे दिखाए गए अनुसार गर्म कोने पर कस्टम कमांड चलाना किसी तरह संभव है?
जवाबों:
CompizConfig Settings Manager (CCSM) स्थापित करें। टर्मिनल में चलाएं:
sudo apt-get install compizconfig-settings-manager
CCSM खोलें।
किसी एक स्लॉट में अपना इच्छित कमांड डालें। उदाहरण के लिए:
"एज बाइंडिंग" टैब पर जाएं
"कोई नहीं" पर क्लिक करें और अपना वांछित हॉट कॉर्नर (या किनारे) सेट करें, जो आपके द्वारा सेट किए गए कमांड से मेल खाती है
अपने माउस को कोने में ले जाएँ
अब आपकी आज्ञा चलती है!
14.04 को काम करने की पुष्टि की।
यदि आप एकता का उपयोग कर रहे हैं और ccsm स्थापित किया है, तो wjandrea का उत्तर निश्चित रूप से आपका उत्तर है। यदि नहीं , या अन्य डिस्ट्रोस पर उपयोग करने के लिए, एक हल्के वजन विकल्प उपयोगी हो सकता है।
नीचे दी गई स्क्रिप्ट के साथ, आप किसी भी कमांड को सेट कर सकते हैं , जो आपके प्रत्येक हॉटकोकर्स के लिए विशिष्ट है।
एक उदाहरण के रूप में, मैंने निम्नलिखित सेटअप बनाया:
बेशक आप कमांड को बाहरी स्क्रिप्ट चलाने के लिए भी कर सकते हैं।
इसके अलावा, आप लाइन में गर्म कोने का आकार निर्धारित कर सकते हैं :
cornersize = 10
बस मान (पिक्सेल) बदलें। स्क्रिप्ट आपके आदेशों को ट्रिगर करने के लिए (वर्ग) क्षेत्र निर्धारित करती है:
#!/usr/bin/env python3
import subprocess
import time
cornersize = 20
commands = [
None,
"gedit",
None,
"gnome-terminal",
]
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def get_pos():
return [int(s.split(":")[1]) for s in get(["xdotool", "getmouselocation"]).split()[:2]]
scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
res = [int(n) for n in scrdata[resindex].split("+")[0].split("x")]
match1 = None
while True:
time.sleep(1)
xy = get_pos()
x = xy[0]; y = xy[1]
test = [
[x < cornersize, y < cornersize],
[x > res[0]-cornersize, y < cornersize],
[x < cornersize, y > res[1]-cornersize],
[x > res[0]-cornersize, y > res[1]-cornersize],
]
match2 = [i for i, p in enumerate(test) if all(p)]
if match2 != match1:
if match2:
cmd = commands[match2[0]]
if cmd:
subprocess.Popen(["/bin/bash", "-c", cmd])
match1 = match2
स्क्रिप्ट की जरूरत है xdotool
sudo apt install xdotool
hotcorners2.py
स्क्रिप्ट के प्रमुख में, अपने आदेश सेट करें (उद्धरण उद्धरण)
commands = [
None,
"gedit",
None,
"gnome-terminal",
]
(बाद में ऊपर बाएँ / righ, नीचे बाएँ / दाएँ)
टेस्ट- स्क्रिप्ट चलाएँ:
python3 /path/to/hotcorners2.py
यदि सभी ठीक काम करते हैं, तो स्टार्टअप एप्लिकेशन में जोड़ें: डैश> स्टार्टअप एप्लिकेशन> जोड़ें। कमांड जोड़ें:
/bin/bash -c "sleep 5 && python3 /path/to/hotcorners2.py"
यदि हम थोड़ा अधिक उन्नत कंप्यूटिंग का उपयोग करते हैं, तो हम कमांड्स को ट्रिगर करने के लिए एक वर्ग क्षेत्र के बजाय एक त्रिज्या का उपयोग कर सकते हैं (अच्छे पुराने @ पाइथागोरस के लिए धन्यवाद):
छोटे अंतर, लेकिन सिर्फ मनोरंजन के लिए:
#!/usr/bin/env python3
import subprocess
import math
import time
# set distance (hotcorner sensitivity)
radius = 20
# top-left, top-right, bottom-left, bottom-right
commands = [
None,
"gedit",
None,
"gnome-terminal",
]
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def get_pos():
return [int(s.split(":")[1]) for s in get(["xdotool", "getmouselocation"]).split()[:2]]
# get the resolution
scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
res = [int(n) for n in scrdata[resindex].split("+")[0].split("x")]
# list the corners, could be more elegant no doubt
corners = [[0, 0], [res[0], 0], [0, res[1]], [res[0], res[1]]]
match1 = None
while True:
time.sleep(1)
pos = get_pos()
# get the current difference from the mousepointer to each of the corner (radius)
diff = [int(math.sqrt(sum([(c[i]-pos[i])**2 for i, n in enumerate(res)])))\
for c in corners]
# see if any of the corners is "approached" within the radius
match2 = [diff.index(n) for n in diff if n < radius]
# if so, and the corresponding command is not set to None, run it.
if all([match2 != match1, match2]):
cmd = commands[match2[0]]
if cmd:
subprocess.Popen(["/bin/bash", "-c", cmd])
match1 = match2
बहुत अधिक समान है। स्क्रिप्ट के मुख्य भाग में, अपने कमांड्स और त्रिज्या को ट्रिगर करने के लिए सेट करें।
wjandrea का जवाब किसी ऐसे व्यक्ति के लिए सबसे उपयुक्त उत्तर है जो डिफ़ॉल्ट Ubuntu या Ubuntu Kylin का उपयोग करता है (या उनके प्रदर्शन प्रबंधक के रूप में compiz है), इस प्रकार यह मेरा उत्थान और सम्मान प्राप्त करता है। नीचे दिया गया उत्तर, एकता पर भी इस्तेमाल किया जा सकता है, लेकिन शायद थोड़ा बेमानी होगा। हालाँकि, डेस्कटॉप वातावरण में, जो संकलित नहीं है, एक नीचे दिए गए संकेतक का उपयोग कर सकता है। मैंने इसे लुबंटू 16.04 वीएम में संक्षेप में परीक्षण किया है, इसलिए मुझे पता है कि यह वहां काम करता है, और इसे काइलिन 14.04 के साथ भी संगत किया। GNOME और MATE डेस्कटॉप के लिए, आपको किसी भी संकेतक का उपयोग करने के लिए पहले सक्षम किए गए AppIndicators के लिए समर्थन की आवश्यकता होगी।
मैंने लागू किया है indicator-edger
जो स्क्रीन के 4 किनारों के साथ कहीं भी माउस की स्थिति के आधार पर उपयोगकर्ता-परिभाषित कमांड को ट्रिगर करने की अनुमति देता है। मूल संस्करण एक दिन के भीतर किया गया था, लगभग 7 घंटे में, इस प्रकार यह काफी न्यूनतर है लेकिन काम करता है।
संकेतक को ~/.edger-commands.json
फ़ाइल के माध्यम से नियंत्रित किया जाता है, जाहिर है json
प्रारूप में। यह उपयोगकर्ता द्वारा मैन्युअल रूप से लिखा जा सकता है, या संकेतक के DEFINE COMMANDS
विकल्प के माध्यम से सेट किया जा सकता है । सक्षम / अक्षम ट्रिगर विकल्प को उपयोगकर्ता की सुविधा के लिए फाइल करने के लिए स्वचालित रूप से याद और लिखा जाता है। नमूना विन्यास फाइल इस तरह होगी:
{
"right": "gnome-terminal",
"top": "firefox",
"left": "",
"bottom": "gnome-screenshot",
"enabled": true
}
"left"
फ़ाइल में प्रविष्टि पर ध्यान दें । यह किनारा परेशान है, लेकिन json
सिंटैक्स के कारण इसे वहां एक खाली स्ट्रिंग की आवश्यकता है, अर्थात उद्धरण ""
।
एक बार जब संकेतक यह पता लगा लेता है कि उपयोगकर्ता ने माउस को किसी भी किनारे (~ 3 पिक्सेल मार्जिन) के साथ रखा है, तो संकेतक एक बुलबुला सूचना भेजेगा और उपयुक्त कमांड (यदि परिभाषित हो) चलाएगा। ट्रिगर को सक्रिय नहीं करेगा, जब तक कि उपयोगकर्ता माउस को किनारे से दूर नहीं ले जाता।
जैसा कि आप ऊपर दिए गए स्क्रीनशॉट से देख सकते हैं, संकेतक में कमांड-लाइन में डीबगिंग आउटपुट भी है। यदि आपको कोई कीड़े मिलते हैं, तो इसे टर्मिनल से चलाने के लिए स्वतंत्र महसूस करें, पता करें कि क्या त्रुटि हुई है, और परियोजना के गिटहब के मुद्दों पृष्ठ पर उचित बग रिपोर्ट प्रस्तुत करें ।
वर्तमान में कोनों (केवल किनारों) के लिए कोई समर्थन नहीं है और इसे एक-मॉनिटर सेटअप के लिए बनाया गया था (जाहिर है, कोई निर्माण के 7 घंटे के भीतर सभी ठिकानों को कवर नहीं कर सकता है), लेकिन वे सुविधाएँ भविष्य में अंततः उपलब्ध हो सकती हैं।
स्रोत कोड प्रोजेक्ट GitHub पेज पर या लॉन्चपैड के माध्यम से उपलब्ध है । स्थापना टर्मिनल में निम्नलिखित आदेशों के माध्यम से की जाती है:
sudo add-apt-repository ppa:1047481448-2/sergkolo
sudo apt-get update
sudo apt-get install indicator-edger