উইন্ডো এবং অ্যাপ্লিকেশন ব্যবহার ট্র্যাক করে কোন সফ্টওয়্যার আছে?


10

এমন কোনও সফ্টওয়্যার রয়েছে যা আমার ক্রিয়াকলাপের সময় রাখে এবং একটি প্রতিবেদন দেয়? ফোকাস উইন্ডো এবং উইন্ডো শিরোনাম উপর ভিত্তি করে। রিপোর্ট কেবল নির্দিষ্ট উইন্ডো এবং এর শিরোনামের জন্য ব্যয় করা সময় দেখায়:

Application   Title                             Time
Firefox       Ask Ubuntu - Mozilla Firefox      5:58

1
সফ্টওয়্যার সেন্টারে একটি সময় ট্র্যাকার রয়েছে যা কেবল এটি করে
মেটেও

1
এটি সহজলভ্য প্রোগ্রামগুলির সাথে খুব সহজেই করা যায় - এটির উদ্দেশ্যে উদ্দেশ্য নির্ধারণ না করে, আমি এর আগে একটি প্রকল্পে নিজের সময় রেকর্ড করার জন্য এই জাতীয় প্রোগ্রাম ব্যবহার করেছি। এটি অবশ্যই "খুবই বিস্তৃত" বিষয়শ্রেণীতে অন্তর্ভুক্ত নয়
মাতিও

যেভাবেই হোক না কেন, কেন এই প্রশ্নটি ভারীভাবে হ্রাস করা যায় তা আমি পাই না। এটি একটি সাধারণ এবং স্পষ্ট প্রশ্ন। আমি সাইটের কোনও জায়গায় "কেবল জিজ্ঞাসিত প্রশ্ন জিজ্ঞাসা করি না উত্তর এর উত্তর জানে না"।
জ্যাকব ভিলিজম

হাই আম্বি। আমার উত্তর পোস্ট। আপনি যদি পরিচালনা করেন তবে আমাকে জানান!
জ্যাকব ভিলিজম

হ্যাঁ আমার বিবরণটি সঠিক ছিল না - আমি ছাড়া আমি কারও কাছেই গুপ্তচরবৃত্তি করতে চাই না। আমি আমার সময় নষ্ট করেছিলাম তার একটি পরিসংখ্যান চাই। আমি 'টাইম ট্র্যাকিং ওভারভিউ' এবং 'জিটাইমলগ টাইম ট্র্যাকার' যাচাই করেছি কিন্তু সেখানে আপনাকে ম্যানুয়ালি সবকিছু প্রবেশ করতে হবে - যা আমি করতে চাই না। জ্যাকব ভিলিজ, আপনাকে ধন্যবাদ, আমি ঠিক তাই খুঁজছিলাম কেবল তা ছাড়া আমি ভেবেছিলাম জিইউআইয়ের সাথে এর মতো একটি সফ্টওয়্যার রয়েছে
অম্বি

উত্তর:


8

সম্পাদনা: বাছাই করা প্রতিবেদন সহ স্ক্রিপ্টের একটি সংস্করণ এখানে পাওয়া যাবে


এর জন্য স্ক্রিপ্ট লিখতে সর্বদা মজা!

নীচের স্ক্রিপ্টটি এমন একটি আউটপুট (প্রতিবেদন) তৈরি করবে:

------------------------------------------------------------
nautilus
0:00:05 (3%)
------------------------------------------------------------
   0:00:05 (3%)     .usagelogs
------------------------------------------------------------
firefox
0:01:10 (36%)
------------------------------------------------------------
   0:00:05 (3%)     The Asker or the Answerer? - Ask Ubuntu Meta - Mozilla Firefox
   0:00:15 (8%)     scripts - Is there software which time- tracks window & application usage? - Ask Ubuntu - Mozilla Firefox
   0:00:10 (5%)     Ask Ubuntu - Mozilla Firefox
   0:00:15 (8%)     Why is a one line non-understandable answer used as review audit? - Ask Ubuntu Meta - Mozilla Firefox
   0:00:20 (10%)    bash - How to detect the number of opened terminals by the user - Ask Ubuntu - Mozilla Firefox
   0:00:05 (3%)     BlueGriffon - Mozilla Firefox
------------------------------------------------------------
gedit
0:02:00 (62%)
------------------------------------------------------------
   0:02:00 (62%)    2016_06_04_10_33_29.txt (~/.usagelogs) - gedit

============================================================
started: 2016-06-04 10:33:29    updated: 2016-06-04 10:36:46
============================================================


.. যা প্রতি মিনিটে একবার আপডেট করা হয়।

মন্তব্য

  • প্রতিবেদনটি সম্ভবত উইন্ডোজটি বিভাগের অধীনে রিপোর্ট করবে: "অজানা"। উইন্ডোতে pid 0( tkinterউইন্ডোজ যেমন Idleউইন্ডোজ, একটি Pythonআইডিই) থাকে এমন ক্ষেত্রে এটি ঘটে । তাদের উইন্ডো শিরোনাম এবং ব্যবহার তবে সঠিকভাবে প্রতিবেদন করা হবে।

  • পাসওয়ার্ড ইনপুট সহ লক স্ক্রিনটি "nux ইনপুট উইন্ডো" হিসাবে প্রতিবেদন করা হয়েছে।

  • শতকরা হয় বৃত্তাকার শতকরা, যা মাঝে মাঝে মধ্যে ছোটখাট পার্থক্য হতে পারে অ্যাপ্লিকেশানের শতাংশ এবং তার উইন্ডোর শতাংশ সমষ্টি।

    একটি উদাহরণ: যদি কোনও অ্যাপ্লিকেশনটিতে দুটি 0,7%সময় ব্যবহৃত উইন্ডোজ থাকে, প্রতিটি মোট সময়ের জন্য ব্যবহৃত হয়, উভয় উইন্ডো1% প্রতিটি ( 0.7-> বৃত্তাকার 1) প্রতিবেদন করবে , যখন অ্যাপ্লিকেশনটির ব্যবহারের রিপোর্টগুলি 1%( 1.4-> গোলাকার 1)

    পুরো ছবিতে এই পার্থক্যগুলি সম্পূর্ণ অপ্রাসঙ্গিক তা বলার দরকার নেই।

এই পান্ডুলিপি

#!/usr/bin/env python3
import subprocess
import time
import os

# -- set update/round time (seconds)
period = 5
# -- 
# don change anything below
home = os.environ["HOME"]
logdir = home+"/.usagelogs"

def currtime(tformat=None):
    return time.strftime("%Y_%m_%d_%H_%M_%S") if tformat == "file"\
           else time.strftime("%Y-%m-%d %H:%M:%S")

try:
    os.mkdir(logdir)
except FileExistsError:
    pass

# path to your logfile
log = logdir+"/"+currtime("file")+".txt"; startt = currtime()

def get(command):
    try:
        return subprocess.check_output(command).decode("utf-8").strip()
    except subprocess.CalledProcessError:
        pass

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)

def summarize():
    with open(log, "wt" ) as report:
        totaltime = sum([it[2] for it in winlist])
        report.write("")
        for app in applist:
            wins = [r for r in winlist if r[0] == app]
            apptime = sum([it[2] for it in winlist if it[0] == app])
            appperc = round(100*apptime/totaltime)
            report.write(("-"*60)+"\n"+app+"\n"+time_format(apptime)+\
                         " ("+str(appperc)+"%)\n"+("-"*60)+"\n")
            for w in wins:
                wperc = str(round(100*w[2]/totaltime))
                report.write("   "+time_format(w[2])+" ("+\
                             wperc+"%)"+(6-len(wperc))*" "+w[1]+"\n")
        report.write("\n"+"="*60+"\nstarted: "+startt+"\t"+\
                     "updated: "+currtime()+"\n"+"="*60)

t = 0; applist = []; winlist = []
while True:
    time.sleep(period)
    frpid = get(["xdotool", "getactivewindow", "getwindowpid"])
    frname = get(["xdotool", "getactivewindow", "getwindowname"])
    app = get(["ps", "-p", frpid, "-o", "comm="]) if frpid != None else "Unknown"
    # fix a few names
    if "gnome-terminal" in app:
        app = "gnome-terminal"
    elif app == "soffice.bin":
        app = "libreoffice"
    # add app to list
    if not app in applist:
        applist.append(app)
    checklist = [item[1] for item in winlist]
    if not frname in checklist:
        winlist.append([app, frname, 1*period])
    else:
        winlist[checklist.index(frname)][
            2] = winlist[checklist.index(frname)][2]+1*period
    if t == 60/period:
        summarize()
        t = 0
    else:
        t += 1

কিভাবে বসাব

  1. স্ক্রিপ্টটির xdotoolউইন্ডোর তথ্য নেওয়া দরকার

    sudo apt-get install xdotool
  2. একটি ফাঁকা ফাইলে স্ক্রিপ্টটি অনুলিপি করুন, এটি সংরক্ষণ করুন window_logs.py

  3. স্ক্রিপ্টটি পরীক্ষা করুন: স্ক্রিপ্টটি কমান্ড দ্বারা টার্মিনাল করুন (টার্মিনাল থেকে):

    python3 /path/to/window_logs.py

    এক মিনিটের পরে, স্ক্রিপ্টটি প্রথম ফলাফলের সাথে একটি লগ ফাইল তৈরি করে ~/.usagelogs। ফাইলটি সময় তৈরির তারিখ এবং সময় সহ স্ট্যাম্পড। ফাইলটি প্রতি মিনিটে একবার আপডেট হয়।

    ফাইলের নীচে আপনি সর্বশেষ সম্পাদনার সময় এবং সময় স্ট্যাম্প উভয়ই দেখতে পাবেন। এই ভাবে আপনি সর্বদা ফাইলের সময়কাল কী তা দেখতে পাবেন।

    যদি স্ক্রিপ্টটি পুনরায় চালু হয়, তবে নতুন (শুরু) টাইম স্ট্যাম্প সহ একটি নতুন ফাইল তৈরি করা হবে।

  4. যদি সমস্ত ঠিকঠাক কাজ করে তবে স্টার্টআপ অ্যাপ্লিকেশনগুলিতে যুক্ত করুন: ড্যাশ> স্টার্টআপ অ্যাপ্লিকেশন> অ্যাড করুন। কমান্ড যুক্ত করুন:

    /bin/bash -c "sleep 15 && python3 /path/to/window_logs.py"

আরও নোট

  • ~/.uselogsডিফল্টরূপে একটি লুকানো ডিরেক্টরি। এটি দৃশ্যমান করতে + টিপুন (ইন nautilus) ।CtrlH
  • যেমনটি হ'ল, স্ক্রিপ্টটি 5 সেকেন্ডে উইন্ডোটির তত্পরতাটিকে বৃত্তাকার করে, 5 সেকেন্ডের কম মনে করে উইন্ডোটি সত্যই উইন্ডোটি ব্যবহার করছে না। আপনি যদি মানটি পরিবর্তন করতে চান তবে লাইনে স্ক্রিপ্টের মাথায় সেট করুন:

    # -- set update/round time (seconds)
    period = 5
    # -- 
  • স্ক্রিপ্টটি অত্যন্ত "রস কম"। তদতিরিক্ত, যেহেতু উইন্ডো প্রতি সময় আপডেটগুলি স্ক্রিপ্টের ভিতরে করা হয়, লগ ফাইলে লাইনের সংখ্যা ব্যবহৃত উইন্ডোগুলির আসল সংখ্যার মধ্যে সীমাবদ্ধ।

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


1
ঠিক আমি যা খুঁজছিলাম কেবল তা ছাড়া জিইউআই রাখা ভাল তবে আমি নিজেই এটি করতে পারি। ধন্যবাদ.
অম্বি

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