ওয়ার্কস্পেস স্টপওয়াচ?


13

এমন কোনও প্রোগ্রাম রয়েছে যা ওয়ার্কস্পেস-নির্ভর স্টপওয়াচ হিসাবে কাজ করতে পারে? আমি প্রতিদিন প্রতিটি কর্মক্ষেত্রে কতটা সময় ব্যয় করেছি তা জানতে চাই।

সম্পাদনা: আমি ityক্য ব্যবহার করছি।


আপনি কি ityক্য ব্যবহার করছেন?
জ্যাকব ভিলিজ

আপনি কোন ডেস্কটপ ম্যানেজার ব্যবহার করছেন?
ডেভিড ফোস্টার 12

1
হ্যাঁ, আমি ityক্য ব্যবহার করছি।
গাজোরপাজর্প

উত্তর:


11

সুন্দর প্রশ্ন!

নীচের স্ক্রিপ্টটি একটি লগফিল তৈরি করে: ~/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

তারপর:

  1. নীচের স্ক্রিপ্টটি একটি খালি ফাইলে অনুলিপি করুন, এটি সংরক্ষণ করুন workspace_log.py
  2. কমান্ড দ্বারা এটি পরীক্ষা করুন:

    python3 /path/to/workspace_log.py

    বিভিন্ন কর্মক্ষেত্রগুলিতে নেভিগেট করুন এবং ~/viewport_log.txtফলাফলটি দেখতে ফাইলটি খুলুন (বিকল্পভাবে, cat ~/viewport_log.txtসুবিধাজনক পাঠের জন্য টার্মিনালে চালান , যেহেতু লগ প্রতি সেকেন্ডে একবার আপডেট হয়)।

  3. যদি সমস্ত প্রত্যাশিত হিসাবে কাজ করে তবে আপনার প্রারম্ভিক অ্যাপ্লিকেশনগুলিতে কমান্ডটি যুক্ত করুন। যেহেতু স্ক্রিপ্টটি খুব তাড়াতাড়ি শুরু হয়ে গেলে (ডেস্কটপ পুরোপুরি লোড হওয়ার আগে) সম্ভবত এটি ক্রাশ হবে, সুতরাং এটি সম্ভবত একটি স্টার্টআপ অ্যাপ্লিকেশন হিসাবে কাজ করার জন্য আপনাকে স্টার্টআপ কমান্ডটিতে একটি ছোট ব্রেক যোগ করতে হবে, সুতরাং আদেশটি হ'ল:

    /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"
  1. একটি ফাঁকা ফাইলে স্ক্রিপ্টটি অনুলিপি করুন, এটি সংরক্ষণ করুন view_vplog.sh
  2. প্রথম স্ক্রিপ্টটি ব্যাকগ্রাউন্ডে চলার সময় কমান্ডটি দিয়ে চালান :

    sh /path/to/view_vplog.sh
  3. একটি শর্টকাট কী সংমিশ্রণটি দিয়ে এটিকে (পরীক্ষার পরে) উপলব্ধ করুন: চয়ন করুন: সিস্টেম সেটিংস> "কীবোর্ড"> "শর্টকাট"> "কাস্টম শর্টকাট" " "+" ক্লিক করুন এবং আপনার পছন্দের মূল সংমিশ্রণে কমান্ডটি যুক্ত করুন।

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


1
@ এব্যাব আপনাকে ধন্যবাদ! আমি এই জাতীয় প্রশ্ন পছন্দ করি :)
জ্যাকব ভিলিজ ২m

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