এমন কোনও প্রোগ্রাম রয়েছে যা ওয়ার্কস্পেস-নির্ভর স্টপওয়াচ হিসাবে কাজ করতে পারে? আমি প্রতিদিন প্রতিটি কর্মক্ষেত্রে কতটা সময় ব্যয় করেছি তা জানতে চাই।
সম্পাদনা: আমি ityক্য ব্যবহার করছি।
এমন কোনও প্রোগ্রাম রয়েছে যা ওয়ার্কস্পেস-নির্ভর স্টপওয়াচ হিসাবে কাজ করতে পারে? আমি প্রতিদিন প্রতিটি কর্মক্ষেত্রে কতটা সময় ব্যয় করেছি তা জানতে চাই।
সম্পাদনা: আমি ityক্য ব্যবহার করছি।
উত্তর:
সুন্দর প্রশ্ন!
নীচের স্ক্রিপ্টটি একটি লগফিল তৈরি করে: ~/viewport_log.txt
আপনার হোম ডিরেক্টরিতে, যেখানে এটি প্রতি ভিপোর্টে বর্তমান সেশনের ভিউপোর্ট (ওয়ার্কস্পেস) ব্যবহারের সময়কে রিপোর্ট করে।
প্রতি প্রতি সেকেন্ডে একবার প্রতিবেদনটি আপডেট করা হয় (দেখে দ্রুত)
workspace1 0:00:24
workspace2 0:00:05
workspace6 0:00:04
workspace8 0:00:05
বিন্যাসে
hours:minutse:seconds
আপনি দেখতে পাচ্ছেন, আমি কেবল ওয়ার্কস্পেস 1, 2, 6 এবং 8 ব্যবহার করেছি।
স্ক্রিপ্টটি wmctrl -d
বর্তমান ভিউপোর্ট ডেটা পেতে কমান্ডটি ব্যবহার করে , তাই আপনাকে প্রথমে এটি ইনস্টল করতে হবে:
sudo apt-get install wmctrl
তারপর:
workspace_log.py
কমান্ড দ্বারা এটি পরীক্ষা করুন:
python3 /path/to/workspace_log.py
বিভিন্ন কর্মক্ষেত্রগুলিতে নেভিগেট করুন এবং ~/viewport_log.txt
ফলাফলটি দেখতে ফাইলটি খুলুন (বিকল্পভাবে, cat ~/viewport_log.txt
সুবিধাজনক পাঠের জন্য টার্মিনালে চালান , যেহেতু লগ প্রতি সেকেন্ডে একবার আপডেট হয়)।
যদি সমস্ত প্রত্যাশিত হিসাবে কাজ করে তবে আপনার প্রারম্ভিক অ্যাপ্লিকেশনগুলিতে কমান্ডটি যুক্ত করুন। যেহেতু স্ক্রিপ্টটি খুব তাড়াতাড়ি শুরু হয়ে গেলে (ডেস্কটপ পুরোপুরি লোড হওয়ার আগে) সম্ভবত এটি ক্রাশ হবে, সুতরাং এটি সম্ভবত একটি স্টার্টআপ অ্যাপ্লিকেশন হিসাবে কাজ করার জন্য আপনাকে স্টার্টআপ কমান্ডটিতে একটি ছোট ব্রেক যোগ করতে হবে, সুতরাং আদেশটি হ'ল:
/bin/bash -c "sleep 15&&python3 /path/to/workspace_log.py"
এটি স্টার্টআপ অ্যাপ্লিকেশনগুলিতে যুক্ত করতে: ড্যাশ> স্টার্টআপ অ্যাপ্লিকেশনগুলি> যুক্ত করুন এবং কমান্ডটি যুক্ত করুন।
import subprocess
import os
import time
# define / clear log file
home = os.environ["HOME"]
logfile = home+"/"+"viewport_log.txt"
open(logfile, "wt").write("")
vplist = []
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 get_dt():
# get the current viewport
res = get_res()
vp_data = subprocess.check_output(["wmctrl", "-d"]).decode("utf-8").split()
dt = [int(n) for n in vp_data[3].split("x")]
cols = int(dt[0]/res[0])
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
curr_col = int(curr_vpdata[0]/res[0])+1; curr_row = int(curr_vpdata[1]/res[1])
return str(curr_col+curr_row*cols)
def time_format(s):
# convert time format from seconds to h:m:s
m, s = divmod(s, 60)
h, m = divmod(m, 60)
return "%d:%02d:%02d" % (h, m, s)
current_time1 = float(time.time())
curr_dt1 = get_dt()
while True:
time.sleep(2)
curr_dt2 = get_dt()
if curr_dt2 == curr_dt1:
current_time2 = float(time.time())
span = current_time2-current_time1
vp = "workspace "+curr_dt1+" . "*10
vplist.sort(key=lambda x: x[0])
if not vp in [v[0] for v in vplist]:
vplist.append([vp, span])
else:
index = vplist.index([vplist[i] for i in range(len(vplist)) if vplist[i][0] == vp][0])
vplist[index][1] = float(vplist[index][1])+span
with open(logfile, "wt") as out:
for item in vplist:
out.write(item[0]+" "+time_format(item[1])+"\n")
current_time1 = current_time2
curr_dt1 = curr_dt2
স্ক্রিপ্টটি দুটি মুহুর্তের ব্যবহৃত ওয়ার্কস্পেসের দুই মুহুর্তের মধ্যে সঠিক সময়ের ব্যবধান গণনা করে (2 সেকেন্ড যেমন হয়, রেখার ব্যবধানে time.sleep(2)
) যদি উভয় মুহুর্তের কর্মক্ষেত্র একই হয়, সময়টি সংশ্লিষ্ট ওয়ার্কস্পেসের 'মোটের সাথে যুক্ত করা হয় ব্যবহারের সময়
যদি উভয় মুহুর্তের কর্মক্ষেত্রগুলি পৃথক হয়, তবে এটি স্পষ্ট যে ওয়ার্কস্পেসের স্যুইচ ছিল এবং সময়টি কোনও ওয়ার্কস্পেসের উত্পাদনশীল সময় যুক্ত করা হয় না; ওভারভিউতে সময় ~/viewport_log.txt
তাই কর্মক্ষেত্র প্রতি সময়ের প্রতি দুই সেকেন্ডে বৃত্তাকার হয়।
পটভূমিতে উপরের স্ক্রিপ্টটি চালানো, আপনি নীচের স্ক্রিপ্টটিকে একটি মূল সংমিশ্রণের নীচে রেখে ওয়ার্কস্পেসে বর্তমান ব্যবহারের সময় (গুলি) দেখতে পারবেন:
#!/bin/bash
lines="$( cat ~/viewport_log.txt )"
zenity --info --title='Usage per Viewport' --text="$lines"
view_vplog.sh
প্রথম স্ক্রিপ্টটি ব্যাকগ্রাউন্ডে চলার সময় কমান্ডটি দিয়ে চালান :
sh /path/to/view_vplog.sh
একটি শর্টকাট কী সংমিশ্রণটি দিয়ে এটিকে (পরীক্ষার পরে) উপলব্ধ করুন: চয়ন করুন: সিস্টেম সেটিংস> "কীবোর্ড"> "শর্টকাট"> "কাস্টম শর্টকাট" " "+" ক্লিক করুন এবং আপনার পছন্দের মূল সংমিশ্রণে কমান্ডটি যুক্ত করুন।