Çalışma alanına bağlı bir kronometre olarak kullanılabilecek bir program var mı? Her çalışma alanında her gün ne kadar zaman harcadığımı bilmek istiyorum.
Düzenleme: Unity kullanıyorum.
Çalışma alanına bağlı bir kronometre olarak kullanılabilecek bir program var mı? Her çalışma alanında her gün ne kadar zaman harcadığımı bilmek istiyorum.
Düzenleme: Unity kullanıyorum.
Yanıtlar:
Güzel soru!
Aşağıdaki komut dosyası, bir günlük dosyası oluşturur: ~/viewport_log.txt
ana dizininizde, geçerli oturumun görünüm alanı (çalışma alanı) kullanım süresi başına görünüm rapor eder.
Rapor iki saniyede bir güncellenir (hızlı bir şekilde):
workspace1 0:00:24
workspace2 0:00:05
workspace6 0:00:04
workspace8 0:00:05
biçiminde
hours:minutse:seconds
Gördüğünüz gibi sadece 1, 2, 6 ve 8 çalışma alanlarını kullandım.
Komut dosyası wmctrl -d
geçerli görünüm alanı verilerini almak için komutu kullanır , bu yüzden önce yüklemeniz gerekir:
sudo apt-get install wmctrl
Sonra:
workspace_log.py
Komut ile test çalıştırın:
python3 /path/to/workspace_log.py
Farklı çalışma alanlarında gezinin ve dosyayı ~/viewport_log.txt
görmek için dosyayı açın (alternatif olarak, cat ~/viewport_log.txt
günlük okuma saniyede bir güncellendiğinden, rahat okuma için bir terminalde çalıştırın ).
hepsi beklendiği gibi çalışıyorsa, komutu başlangıç uygulamalarınıza ekleyin. Komut dosyası çok erken başlatılırsa (masaüstü tamamen yüklenmeden önce) büyük olasılıkla çökeceğinden, başlangıç uygulaması olarak çalışmasını sağlamak için muhtemelen başlatma komutuna küçük bir mola eklemeniz gerekir, bu nedenle komut şu şekildedir:
/bin/bash -c "sleep 15&&python3 /path/to/workspace_log.py"
Başlangıç Uygulamalarına eklemek için: Çizgi> Başlangıç Uygulamaları> Ekle'yi seçin ve komutu ekleyin.
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
Komut dosyası iki anları arasında tam bir zaman süresi o anların kullanılan çalışma alanları (olduğu gibi 2 saniye doğrultusunda aralığı Icw hesaplar time.sleep(2)
) her iki anları çalışma alanları aynı ise, zaman karşılık gelen çalışma eklenir toplam kullanım süresi.
Her iki andaki çalışma alanları farklıysa, bir çalışma alanı anahtarı olduğu ve zamanın hiçbir çalışma alanının üretken zamanına eklenmediği açıktır; genel ~/viewport_log.txt
bakıştaki süre, çalışma alanı başına dönem başına iki saniyeye yuvarlanır.
Yukarıdaki betiği arka planda çalıştırarak, aşağıdaki betiği bir tuş kombinasyonunun altına koyarak çalışma alanı başına geçerli kullanım saatlerini görebilirsiniz:
#!/bin/bash
lines="$( cat ~/viewport_log.txt )"
zenity --info --title='Usage per Viewport' --text="$lines"
view_vplog.sh
Bunu çalıştır ilk komut arka planda çalışırken komutla,:
sh /path/to/view_vplog.sh
Kısayol tuşu kombinasyonu ile (test ettikten sonra) kullanıma sunun: şunu seçin: Sistem Ayarları> "Klavye"> "Kısayollar"> "Özel Kısayollar". "+" İşaretini tıklayın ve komutu istediğiniz tuş kombinasyonuna ekleyin.