क्या कोई सॉफ्टवेयर है जो विंडो और एप्लिकेशन उपयोग को ट्रैक करता है?


10

क्या कोई सॉफ़्टवेयर है जो मेरी गतिविधियों का समय रखता है और एक रिपोर्ट देता है? फ़ोकस किए गए विंडो और विंडो शीर्षक के आधार पर। रिपोर्ट में केवल विशिष्ट विंडो और उसके शीर्षक के लिए बिताया गया समय दिखाया जाएगा:

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

1
सॉफ्टवेयर सेंटर में एक टाइम ट्रैकर है जो सिर्फ यही करता है
मेटो

1
यह avaible कार्यक्रमों के साथ बहुत आसानी से किया जा सकता है - इससे मकसद को निर्दिष्ट करने की अनुमति नहीं है, मैंने इस तरह के कार्यक्रम का उपयोग किसी परियोजना पर अपना समय रिकॉर्ड करने से पहले किया है। यह निश्चित रूप से "बहुत व्यापक" श्रेणी में नहीं है
Mateo

किसी भी तरह से, मुझे नहीं लगता कि यह सवाल क्यों भारी पड़ रहा है। यह एक सामान्य और स्पष्ट प्रश्न है। मैंने "साइट पर कहीं भी चेतावनी देते हुए" केवल एक प्रश्न पूछें जवाब किसी को नहीं पता है।
जैकब व्लिजम

हाय अम्बी। मेरा जवाब पोस्ट किया। कृपया मुझे बताएं कि क्या आप प्रबंधन करते हैं!
याकूब उलम

हां मेरा वर्णन सही नहीं हो सकता है - मैं अपने अलावा किसी की जासूसी नहीं करना चाहता। मैं चाहता हूं कि मेरे पास जो कुछ भी है, उसमें मेरा समय बर्बाद हो जाए। मैंने 'टाइम ट्रैकिंग ओवरव्यू' और 'GTimeLog टाइम ट्रैकर' की जाँच की है, लेकिन वहाँ आपको मैन्युअल रूप से सब कुछ दर्ज करने की आवश्यकता है - जो मैं नहीं करना चाहता। याकूब Vlijm, धन्यवाद, यह वही है जो मैं देख रहा था सिवाय इसके कि मुझे लगा कि GUI के साथ एक सॉफ्टवेयर है
ambi

जवाबों:


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आईडीई) होती है। हालाँकि उनके विंडो का शीर्षक और उपयोग सही ढंग से बताया जाएगा।

  • पासवर्ड इनपुट वाली लॉक स्क्रीन को "नक्स इनपुट विंडो" बताया गया है।

  • प्रतिशत गोल हैं , जो कभी-कभी आवेदन के बीच मामूली अंतर पैदा कर सकता है प्रतिशत और इसकी खिड़की के प्रतिशत के ।

    एक उदाहरण: यदि किसी एप्लिकेशन में दो विंडो का उपयोग किया जाता है, तो प्रत्येक का उपयोग 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डिफ़ॉल्ट रूप से एक छिपी हुई निर्देशिका है। इसे दिखाई देने के लिए (in nautilus) Ctrl+ दबाएँ H
  • जैसा कि यह है, स्क्रिप्ट 5 सेकंड में खिड़की की सक्रियता को गोल करती है, कम मानती है तो 5 सेकंड वास्तव में खिड़की का उपयोग नहीं कर रही है। यदि आप मान बदलना चाहते हैं, तो इसे लाइन में स्क्रिप्ट के प्रमुख में सेट करें:

    # -- set update/round time (seconds)
    period = 5
    # -- 
  • स्क्रिप्ट बेहद "लो ऑन जूस" है। इसके अलावा, चूंकि समय- प्रति विंडो अद्यतन स्क्रिप्ट के अंदर किया जाता है, लॉग फाइल में लाइनों की संख्या उपयोग की गई खिड़कियों की वास्तविक संख्या तक सीमित है।

    फिर भी, मैं उदाहरण के लिए एक पंक्ति में हफ्तों तक स्क्रिप्ट नहीं चलाऊंगा, बनाए रखने के लिए बहुत सी लाइनें (= विंडो रिकॉर्ड) संचय को रोकने के लिए।


1
वास्तव में मैं क्या देख रहा था सिवाय इसके कि जीयूआई होना अच्छा है लेकिन मैं इसे स्वयं कर सकता हूं। धन्यवाद।
अम्बी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.