स्क्रिप्ट, शटर का उपयोग करना
मुझे नहीं लगता कि यह मौजूद है, लेकिन कुछ भी, इसे बनाया जा सकता है।
यदि आप एक कुंजी संयोजन (नीचे स्पष्टीकरण आगे) के तहत नीचे स्क्रिप्ट उपलब्ध कराते हैं, तो एक विंडो पॉप अप होगी, जिससे आप अपने स्क्रीनशॉट को हाशिये पर बाईं, दाईं, ऊपर और नीचे , एक स्थान से अलग करके सेट कर सकते हैं:
परिणाम:
या:
परिणाम:
आदि।
मैंने डिफ़ॉल्ट को 30 px पर सेट किया है, लेकिन आप कोई भी डिफ़ॉल्ट मान (नीचे देखें) सेट कर सकते हैं।
कैसे इस्तेमाल करे
स्क्रिप्ट का उपयोग करता है Shutter
और wmctrl
। मान Shutter
लेना आपके सिस्टम पर पहले से है (जब से आपने इसका उल्लेख किया है), स्थापित करें wmctrl
:
sudo apt-get install wmctrl
NB यदि आप कुबंटू का उपयोग करते हैं , Zenity
तो डिफ़ॉल्ट रूप से इंस्टॉल नहीं किया जाता है:
sudo apt-get install zenity
नीचे दी गई स्क्रिप्ट को एक खाली फ़ाइल में कॉपी करें। यदि आप चाहते हैं कि आप स्क्रिप्ट की लाइन में "डिफ़ॉल्ट 'मर्ज को बदल सकते हैं:
`arg =`
इसे सहेजें custom_screenshot.py
।
कुंजी शॉर्टकट संयोजन में स्क्रिप्ट जोड़ें: चुनें: सिस्टम सेटिंग्स> "कीबोर्ड"> "शॉर्टकट"> "कस्टम शॉर्टकट"। "+" पर क्लिक करें और कमांड जोड़ें:
python3 /path/to/custom_screenshot.py
ध्यान दें
स्क्रिप्ट wmctrl
विंडो की स्थिति निर्धारित करने के लिए उपयोग करती है। हालांकि अलग-अलग विंडो मैनेजरों पर, wmctrl -lG
कमांड का आउटपुट विंडो के y- पोज़िशन में छोटे अंतर को दर्शाता है। ये अंतर deviation=
स्क्रिप्ट के इनलाइन में निर्धारित मूल्य से समाप्त हो जाते हैं । वर्तमान में निर्धारित मान (0) एकता और KDE के लिए उपयुक्त है।
स्क्रिप्ट का परीक्षण भी किया जाता है, और ठीक काम करता है Xfce
और Gnome
, लेकिन मूल्य को तब बदलना पड़ता है, जैसा कि स्क्रिप्ट के मुख्य भाग में बताया गया है।
लिपी
#!/usr/bin/env python3
import subprocess
import time
"""
On different window managers, the window geometry as output of wmctrl differs slightly.
The "deviation" should compensate these differences. Most likely appropriate (tested) settings:
Unity: 0, Gnome: -36, Xfce (Xubuntu): -26, KDE (Kubuntu): 0
"""
#---
deviation = 0
#---
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
try:
arg = get('zenity --entry --entry-text "30 30 30 30" --text "border left, right, top, bottom" --title "Screenshot margins"').strip().split()
except:
pass
else:
time.sleep(0.5)
# frontmost window pos
frontmost = [l.split()[4] for l in get("xprop -root").splitlines() if "ACTIVE_WINDOW(WINDOW)" in l][0].replace(",", "")
frontmost = frontmost[:2]+"0"+frontmost[2:]
f_data = [l.split() for l in get("wmctrl -lG").splitlines() if frontmost in l][0][2:6]
# extent
xt_data = get("xprop -id "+frontmost).split()
xt_i = xt_data.index("_NET_FRAME_EXTENTS(CARDINAL)")
xt = [int(n.replace(",", "")) for n in xt_data[xt_i+2:xt_i+6]]
# set data for screenshot command
x = str(int(f_data[0])-int(arg[0])-xt[0])
y = str(int(f_data[1])-int(arg[2])-xt[2]+deviation)
w = str(int(f_data[2])+int(arg[0])+int(arg[1])+xt[0]+xt[1])
h = str(int(f_data[3])+int(arg[3])+int(arg[2])+xt[2]+xt[3])
command = "shutter -s="+(",").join([x,y,w,h])+" -e"
subprocess.call(["/bin/bash", "-c", command])