কিভাবে এটা কাজ করে
নীচের স্ক্রিপ্টটি মাউস পয়েন্টারের দুটি অবস্থানের মধ্যে একটি অঞ্চলের আকার পরিমাপ করে।
এটি অনুসরণ হিসাবে কাজ করে:
মাউস পয়েন্টারটিকে প্রথম অবস্থানে রাখুন (ক্লিক না করে)
আপনার পছন্দের মূল সংমিশ্রণটি টিপুন (নীচে আরও দেখুন)
দ্বিতীয় অবস্থানে মাউস রাখুন (আবার ক্লিক না করে)
আপনার কী সংমিশ্রণটি আবার টিপুন। একটি বিজ্ঞপ্তি আপনাকে এলাকার সঠিক আকার (পিক্স) বলবে।
বিকল্প
আপনি কীভাবে আপনাকে অবহিত করতে চান তা চয়ন করতে পারেন (একটি লাইনের একটিকে সংকুচিত করে); হয় একটি বিজ্ঞপ্তি দ্বারা:
বা একটি জেনিটির তথ্য উইন্ডো:
(উদাহরণগুলি বিভিন্ন অঞ্চল থেকে প্রাপ্ত)
ব্যবহারবিধি
স্ক্রিপ্টটি ব্যবহার করে xdotool
:
sudo apt-get install xdotool
নীচের স্ক্রিপ্টটি খালি ফাইলে অনুলিপি করুন, যে কোনও একটি লাইনকে:
command = ['notify-send', 'Area size', str(w)+' x '+str(h)]
( notify-send
বিকল্প দ্বারা অবহিত করা )
বা:
command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]
জন্য Zenity
বিকল্প।
এতে স্ক্রিপ্টটি সংরক্ষণ করুন ~/bin
(আপনাকে সম্ভবত ডিরেক্টরি তৈরি করতে হবে) measure_area
(কোনও এক্সটেনশন নয়) হিসাবে এবং এটিকে এক্সিকিউটেবল করে তুলুন ।
স্ক্রিপ্টটি চালানোর জন্য আপনার পছন্দের একটি মূল সংমিশ্রণ যুক্ত করুন: চয়ন করুন: সিস্টেম সেটিংস> "কীবোর্ড"> "শর্টকাটস"> "কাস্টম শর্টকাট"। "+" ক্লিক করুন এবং কমান্ডটি যুক্ত করুন:
measure_area
নোট
- আপনাকে প্রথমে / লগ আউট করতে হবে
- আপনি প্রথম / দ্বিতীয় অবস্থান হিসাবে যা গ্রহণ করেন তাতে কোনও তাত্পর্য হয় না; স্ক্রিপ্ট পরম মান পরিমাপ করে ।
এই পান্ডুলিপি
#!/usr/bin/env python3
import subprocess
import os
import math
home = os.environ["HOME"]
area = home+"/"+".measure_area.txt"
def get_pos():
pos_data = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8")
return [m[2:] for m in pos_data.split()[:2]]
def confirm():
get = subprocess.check_output(["xrandr", "--verbose"]).decode("utf-8").split()
for s in [get[i-1] for i in range(len(get)) if get[i] == "connected"]:
br_data = float(get[get.index("Brightness:")+1])
brightness = lambda br: ["xrandr", "--output", s, "--brightness", br]
flash = ["sleep", "0.1"]
for cmd in [brightness(str(br_data-0.1)), flash, brightness(str(br_data))]:
subprocess.call(cmd)
if not os.path.exists(area):
with open(area, "wt") as measure:
measure.write(str(get_pos()))
confirm()
else:
second = get_pos()
with open(area) as first_m:
try:
first = eval(first_m.read())
w = int(math.fabs(int(second[0]) - int(first[0])))
h = int(math.fabs(int(second[1]) - int(first[1])))
#--- uncomment either one of the lines below:
# command = ['notify-send', 'Area size', str(w)+' x '+str(h)]
command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]
#---
confirm()
except SyntaxError:
text = "Please try again, there was an error in the data"
command = ['zenity', '--info', '--title', 'Please try again', '--text', text]
subprocess.Popen(command)
os.remove(area)
ব্যাখ্যা
স্ক্রিপ্টটি যখন প্রথমবার বলা হয়, তখন xdotool
কমান্ডটি সহ এটি মাউসের বর্তমান অবস্থানটি অর্জন করে :
xdotool getmouselocation
এরপরে .measure_area.txt
এটি দ্বিতীয় কলের জন্য অপেক্ষা করে অবস্থানটিকে (অদৃশ্য) ফাইলে সংরক্ষণ করে ।
দ্বিতীয় কলে, এটি ফাইলটি পড়ে, এটিকে সরিয়ে দেয় এবং সঞ্চিত x/y
স্থানাঙ্কগুলি সর্বশেষতমগুলির সাথে তুলনা করে এবং তাদের মধ্যবর্তী ক্ষেত্রের আকার গণনা করে।
সম্পাদন করা
স্ক্রিপ্টটি বেশ কয়েকটি উন্নতির সাথে আপডেট করেছে:
- অনুকূলিত
subprocess.Popen()
/ subprocess.check_output()
আদেশগুলি (@ মুরু, @ ট্রেনগোটকে ধন্যবাদ)
- প্রথম-ডেটা ফাইলের সাথে কিছু ভুল হওয়ার ক্ষেত্রে একটি মেরামতের প্রক্রিয়া যুক্ত করা হয়েছে (উদাহরণস্বরূপ যদি ব্যবহারকারী প্রথমে
xdotool
ইনস্টল না করে স্ক্রিপ্টটি চালানোর চেষ্টা করে )
- প্রথম সমন্বয়কারীগুলির জন্য কী সংমিশ্রণটি টিপলে একটি ছোট কনফার্মিং স্ক্রিন ডিমে ফ্ল্যাশ যুক্ত করা হয়েছে। এটা তোলে ব্যবহারকারী দিতে একটি বিট আরো ব্যবহারকারী বান্ধব বলে মনে হয় কিছু কর্মের নিশ্চিতকরণ ধরনের।