আমি কীভাবে অনুকূলিতকরণের মার্জিন সহ উইন্ডো থেকে স্ক্রিনশট নিতে পারি


17

আমার এমন একটি সরঞ্জাম প্রয়োজন যা নিম্নলিখিতগুলি করতে পারে: একটি উইন্ডো নির্বাচন করা, নীচের চিত্রের মতো একটি এক্স প্যাডিং সহ সেই উইন্ডোটির একটি স্ক্রিনশট তৈরি করবে :

সুতরাং, বেশিরভাগ ক্ষেত্রে x টি y এর সাথে সমান হবে তবে কখনও কখনও আমার বিভিন্ন দূরত্বের প্রয়োজন হয়।

কীভাবে এমন স্ক্রিনশট তৈরি করবেন, স্বয়ংক্রিয়ভাবে? আমি শাটারের সাহায্যে চেষ্টা করেছি, কিন্তু আমি সেখানে কোনও সেটিং খুঁজে পাইনি। তবে এটি প্লাগইন সমর্থন করে। সুতরাং একটি প্লাগইন এইভাবে উইন্ডো ক্রপ করতে পারে।


আমি কী জিজ্ঞাসা করতে পারি যে আপনি সেই মকআপটি তৈরি করতে কোন সরঞ্জামটি ব্যবহার করেছিলেন? দেখতে বেশ সুন্দর
শেঠ

1
@ শেঠ ইনকস্কেপ নিয়ম! আমি বিশেষজ্ঞ নই, তবে আমি আমার প্রকল্পগুলির জন্য এই জাতীয় জিনিস তৈরির মতো করি। এটি চোখের জন্য ভাল দেখাচ্ছে। :-) এখানে পিএনজি সংস্করণ , এবং করা SVG একএই ভান্ডারটিতে ইনকস্কেপ দিয়ে তৈরি অন্যান্য স্টাফ রয়েছে।
আয়নিক বিজাউ

উত্তর:


19

স্ক্রিপ্ট, শাটার ব্যবহার করে

আমি মনে করি না এটি বিদ্যমান, তবে যে কোনও কিছুর মতো এটি তৈরি করা যায়।

আপনি যদি নীচের স্ক্রিপ্টটি কোনও মূল সংমিশ্রণের অধীনে উপলব্ধ করেন (আরও নীচে ব্যাখ্যা), একটি উইন্ডো পপ আপ হবে, যা আপনাকে আপনার স্ক্রিনশটের মার্জিনগুলি বাম, ডান, উপরে এবং নীচে , একটি স্থান দ্বারা পৃথক করে সেট করতে দেয় :

এখানে চিত্র বর্ণনা লিখুন

ফলাফল:

এখানে চিত্র বর্ণনা লিখুন

বা:

এখানে চিত্র বর্ণনা লিখুন

ফলাফল:

এখানে চিত্র বর্ণনা লিখুন

প্রভৃতি

আমি ডিফল্টটি 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])

3
আমি মনে করি না এটি বিদ্যমান - এখন এটি বিদ্যমান! আপনাকে অনেক ধন্যবাদ!
আয়নিক বিজাউ

1
@ আয়নিকবিজাউ আপনার স্বাগত! প্রশ্নের জন্য ধন্যবাদ, এটি করতে মজা লাগছিল। আমি ডিফল্ট সেটিং ব্যাখ্যায় একটি ছোট সংশোধন করেছি।
জ্যাকব Vlijm

1
@ আয়নিকবিজাউ জ্যামিতিতে একটি বাগ খুঁজে পেয়েছেন (এবং স্থির করেছেন)।
জ্যাকব Vlijm

2
সুন্দর, সুন্দর, সুন্দর! আমি যখন আমার ASUS নোটবুকের বিশেষ বোতাম টিপছি তখন আমি এটিকে চালিত কমন্ড হিসাবে সেট করি। :-)
আয়নিক বিজাউ

2

আপনি ব্যবহারকারী-সংজ্ঞায়িত মাত্রাগুলি সহ একটি নির্দিষ্ট অঞ্চলের স্ক্রিন-শট নিতে শিফট এবং প্রটিএসসিআর বোতামগুলির সংমিশ্রণটিও ব্যবহার করতে পারেন ।

স্ক্রিন-শটের জন্য অঞ্চলটি চয়ন করতে কেবল সংমিশ্রণটি টিপুন এবং পরিবর্তিত কার্সারটি (এটি একটি প্লাস চিহ্নের অনুরূপ হয়ে যায়) ব্যবহার করুন।


সাধারণত, আমি এই মার্জিনগুলি ঠিকঠাক করতে আমার হাতকে নিয়ন্ত্রণ করতে পারি না। :-) তবে এই শর্টকাটের জন্য +1, আমি এটি জানতাম না।
আয়নিক বিজাউ

2

আপনি scrotকমান্ড লাইন স্ক্রিন ক্যাপচার ইউটিলিটি সহ স্ক্রিনশট নিতে পারেন:

scrot -s  

অথবা

scrot -ub -d 5  

দ্বিতীয় কমান্ডটি নির্বাচিত উইন্ডোর চারপাশে একটি সীমানা রাখে, যা উইন্ডোর আকারের সাথে সম্পর্কিত একটি দুর্দান্ত প্রস্থ রয়েছে। -d 5বিকল্প বিলম্বের জন্য দাঁড়িয়ে আপনি উইন্ডো নির্বাচন করতে স্ক্রিনশট হতে 5 সেকন্ড বিলম্ব দেয়।

এটি দিয়ে ইনস্টল করুন:

sudo apt-get install scrot

তথ্যসূত্র: উবুন্টু ম্যানুয়াল - স্ক্রোট

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.