Pencerenin ve uygulama kullanımının zamanını izleyen yazılımlar var mı?


10

Faaliyetlerimin zamanını tutan ve rapor veren bir yazılım var mı? Odaklanan pencere ve pencere başlığına göre. Rapor, yalnızca belirli bir pencere ve başlığı için harcanan zamanı gösterir:

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

1
Yazılım merkezinde sadece bunu yapan bir zaman izleyici var
Mateo

1
Bu, kullanılabilir programlarla son derece kolay bir şekilde yapılabilir - buna güdü atamayalım, daha önce bir projeye kendi zamanımı kaydetmek için böyle bir program kullandım. Bu kesinlikle "çok geniş" kategorisinde değil
Mateo

Herhangi bir şekilde, bu sorunun neden aşırı derecede aşağılandığını anlamıyorum. Bu normal ve açık bir soru. Sitenin herhangi bir yerinde "yalnızca soruyu kimsenin cevabı bilmediğini sor" sorusunu görmedim.
Jacob Vlijm

Merhaba Ambi. Cevabımı gönderdim. Eğer yönetirseniz lütfen bana bildirin!
Jacob Vlijm

Evet benim açıklamam doğru olmayabilir - benden başka kimseye casusluk yapmak istemiyorum. Sadece zamanımı boşa harcadığım bir istatistik istiyorum. 'Zaman izlemeye genel bakış' ve 'GTimeLog Time Tracker' seçeneklerini kontrol ettim ancak orada her şeyi manuel olarak girmeniz gerekiyor - yapmak istemiyorum. Jacob Vlijm, teşekkür ederim, GUI ile böyle bir yazılım olduğunu düşündüm dışında tam olarak aradığım şey
ortam

Yanıtlar:


8

DÜZENLEME: senaryonun bir versiyonu sıralanmış raporlarla bulunabilir burada


Bunun için bir senaryo yazmak her zaman eğlenceli!

Aşağıdaki komut dosyası aşağıdaki gibi bir çıktı (rapor) üretecektir:

------------------------------------------------------------
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
============================================================


.. dakikada bir güncellenir.

notlar

  • Rapor muhtemelen "Bilinmeyen" kategorisi altındaki pencereleri rapor edecektir. Bu, pencerelerin pid 0( pencereler, bir IDE tkintergibi Idlepencereler Python) olduğu durumdur . Ancak pencere başlıkları ve kullanımları doğru bir şekilde rapor edilecektir.

  • Şifre girişli kilit ekranında bir "nux giriş penceresi" bildirilir.

  • Yüzdeler yuvarlatılmış yüzdelerdir, bu da bazen uygulamanın yüzdesi ile pencere yüzdesinin toplamı arasında küçük farklılıklara yol açabilir .

    Bir örnek: Bir uygulama kullanılan iki pencere, kullanılan her sahipse 0,7%toplam zamanın, hem pencereleri bildirir 1%(her 0.7-> yuvarlanarak 1ederken,) uygulamanın kullanım raporları 1%( 1.4-> yuvarlanır 1)

    Bu farklılıkların resmin tamamında tamamen alakasız olduğunu söylemeye gerek yoktur.

Senaryo

#!/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

Nasıl kurulur

  1. Komut dosyasının xdotoolpencerenin bilgilerini alması gerekir

    sudo apt-get install xdotool
  2. Komut dosyasını boş bir dosyaya kopyalayın, window_logs.py

  3. Komut dosyasını test edin: komutla komutu (terminalden) tartın:

    python3 /path/to/window_logs.py

    Bir dakika sonra, komut dosyası ilk sonuçları içeren bir günlük dosyası oluşturur ~/.usagelogs. Dosya, oluşturulma tarihi ve saati ile zaman damgalıdır. Dosya dakikada bir kez güncellenir.

    Dosyanın altında, en son düzenlemenin hem başlangıç ​​zamanını hem de zaman damgasını görebilirsiniz. Bu şekilde dosyanın zaman diliminin ne olduğunu her zaman görebilirsiniz.

    Komut dosyası yeniden başlatılırsa, yeni (başlangıç) zaman damgalı yeni bir dosya oluşturulur.

  4. Tümü iyi çalışıyorsa Başlangıç ​​Uygulamaları'na ekleyin: Çizgi> Başlangıç ​​Uygulamaları> Ekle. Komutu ekleyin:

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

Diğer notlar

  • ~/.uselogsvarsayılan olarak gizli bir dizindir. Görünür hale getirmek için (in nautilus) Ctrl+ düğmesine basın H.
  • Olduğu gibi, komut dosyası pencerenin etkinliğini 5 saniyede yuvarlar, 5 saniyeden daha azının pencereyi gerçekten kullanmadığını varsayar. Değeri değiştirmek isterseniz, satırdaki komut dosyasının başına ayarlayın:

    # -- set update/round time (seconds)
    period = 5
    # -- 
    
  • Senaryo son derece "meyve suyu az" dır. Ayrıca, pencere başına zaman güncellemeleri betiğin içinde yapıldığından, günlük dosyasındaki satır sayısı kullanılan pencerelerin gerçek sayısıyla sınırlıdır.

    Yine de, korumak için çok fazla satır (= pencere kayıtları) birikmesini önlemek için örneğin bir hafta boyunca komut dosyası çalıştırmak olmaz.


1
Tam olarak ne aradığını dışında bir GUI de iyidir ama kendim yapabilirim. Teşekkür ederim.
ort

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.