স্ক্রিপ্ট, শাটার ব্যবহার করে
আমি মনে করি না এটি বিদ্যমান, তবে যে কোনও কিছুর মতো এটি তৈরি করা যায়।
আপনি যদি নীচের স্ক্রিপ্টটি কোনও মূল সংমিশ্রণের অধীনে উপলব্ধ করেন (আরও নীচে ব্যাখ্যা), একটি উইন্ডো পপ আপ হবে, যা আপনাকে আপনার স্ক্রিনশটের মার্জিনগুলি বাম, ডান, উপরে এবং নীচে , একটি স্থান দ্বারা পৃথক করে সেট করতে দেয় :
ফলাফল:
বা:
ফলাফল:
প্রভৃতি
আমি ডিফল্টটি 30 পিক্সারে সেট করেছি তবে আপনি কোনও ডিফল্ট মান সেট করতে পারেন (নীচে দেখুন)।
কিভাবে ব্যবহার করে
স্ক্রিপ্ট ব্যবহার করে Shutter
এবং wmctrl
। ধরে Shutter
নেওয়া আপনার সিস্টেমে ইতিমধ্যে রয়েছে (যেহেতু আপনি এটি উল্লেখ করেছেন), ইনস্টল করুন wmctrl
:
sudo apt-get install wmctrl
বিশেষ দ্রষ্টব্য আপনি ব্যবহার করেন তাহলে কুবুন্টু , Zenity
ডিফল্টরূপে ইনস্টল করা নেই:
sudo apt-get install zenity
নীচের স্ক্রিপ্টটি একটি খালি ফাইলে অনুলিপি করুন। আপনি যদি চান তবে আপনি স্ক্রিপ্টের লাইনে "ডিফল্ট" মার্জ পরিবর্তন করতে পারেন:
`arg =`
এটি হিসাবে সংরক্ষণ করুন custom_screenshot.py
।
একটি কী শর্টকাট সংমিশ্রণে স্ক্রিপ্টটি যুক্ত করুন: চয়ন করুন: সিস্টেম সেটিংস> "কীবোর্ড"> "শর্টকাট"> "কাস্টম শর্টকাট"। "+" ক্লিক করুন এবং কমান্ডটি যুক্ত করুন:
python3 /path/to/custom_screenshot.py
বিঃদ্রঃ
স্ক্রিপ্টটি wmctrl
উইন্ডোর অবস্থান নির্ধারণ করতে ব্যবহার করে। বিভিন্ন উইন্ডো পরিচালকদের ক্ষেত্রে, wmctrl -lG
কমান্ডের আউটপুট উইন্ডোর y- অবস্থানের মধ্যে ছোট পার্থক্য দেখায়। এই পার্থক্যগুলি deviation=
স্ক্রিপ্ট -লাইনে সেট করা মান দ্বারা মুছে ফেলা হয় । বর্তমানে নির্ধারিত মান (0) ইউনিটি এবং কেডিএর জন্য উপযুক্ত।
স্ক্রিপ্ট এছাড়াও পরীক্ষা করা হয়, এবং কাজ করে জরিমানা 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])