Ityক্যতে ভিউপোর্টস
আপনি যদি ইউনিটি ব্যবহার করছেন তবে বর্তমান ভিউপোর্টটি সরাসরি থেকে পুনরুদ্ধার করা যাবে না
wmctrl -d
যেহেতু ইউনিটির ভিউপোর্ট রয়েছে, যা সরাসরি দ্বারা সনাক্ত করা যায় না wmctrl -d
। আউটপুট শুধুমাত্র একটি কর্মক্ষেত্র প্রদর্শন করবে:
0 * DG: 5040x2100 VP: 1680,1050 WA: 59,24 1621x1026 N/A
- যেখানে আমার রেজোলিউশনটি 1680 x 1050 (থেকে
xrandr
)
- spanning কর্মক্ষেত্র (সমস্ত viewports) হল
5040x2100
। এটি 3x2 ভিউপোর্ট: 5040/1680 = 3 এবং 2100/1050 = 2।
- আমি বর্তমানে (ভিউপোর্ট-) পজিশনে
1680,1050
(x, y)
নীচের স্ক্রিপ্টটি এই তথ্য থেকে বর্তমান ভিউপোর্ট গণনা করে:
#!/usr/bin/env python3
import subprocess
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
def current():
# get the resolution (viewport size)
res = get_res()
# read wmctrl -d
vp_data = subprocess.check_output(
["wmctrl", "-d"]
).decode("utf-8").split()
# get the size of the spanning workspace (all viewports)
dt = [int(n) for n in vp_data[3].split("x")]
# calculate the number of columns
cols = int(dt[0]/res[0])
# calculate the number of rows
rows = int(dt[1]/res[1])
# get the current position in the spanning workspace
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
# current column (readable format)
curr_col = int(curr_vpdata[0]/res[0])
# current row (readable format)
curr_row = int(curr_vpdata[1]/res[1])
# calculate the current viewport
return curr_col+curr_row*cols+1
print(current())
ব্যবহার করা:
ইনস্টল করুন wmctrl
sudo apt install wmctrl
কমান্ড দিয়ে এটি চালান
python3 /path/to/get_viewport.py
এটি 1, 2, 3 বা বর্তমান ভিউপোর্ট যা-ই হোক না কেন আউটপুট দেয়। এটি স্বয়ংক্রিয়ভাবে সারি / কলামগুলি গণনা করে আপনার ভিউপোর্ট কনফিগারেশনটি অন্তর্ভুক্ত থাকতে পারে।
ব্যাখ্যা
এই পান্ডুলিপি
xrandr
সম্ভাব্য অতিরিক্ত মনিটর সহ এক ভিউপোর্ট (রেজোলিউশন) এর আকার পায় ।
- বিস্তৃত ওয়ার্কস্পেসে বর্তমান অবস্থান পায়
- আপনার ভিউপোর্ট সেটআপে কলাম / সারিগুলির সংখ্যা গ্যালকুলেট করে
- সে থেকে এটি বর্তমান ভিউপোর্ট গণনা করে