นาฬิกาจับเวลาพื้นที่ทำงาน?


13

มีโปรแกรมที่สามารถใช้เป็นนาฬิกาจับเวลาที่ขึ้นอยู่กับพื้นที่ทำงานหรือไม่? ฉันอยากรู้ว่าฉันใช้เวลาเท่าไหร่ในแต่ละพื้นที่ทำงานทุกวัน

แก้ไข:ฉันใช้ความสามัคคี


คุณกำลังใช้ความสามัคคีหรือไม่?
Jacob Vlijm

คุณใช้ตัวจัดการเดสก์ท็อปตัวใดอยู่
David Foerster

1
ใช่ฉันกำลังใช้ความสามัคคี
Gazorpazorp

คำตอบ:


11

เป็นคำถามที่ดี!

สคริปต์ด้านล่างสร้าง logfile: ~/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"

    ในการเพิ่มไปยังแอปพลิเคชันเริ่มต้น: Dash> แอปพลิเคชันเริ่มต้น> เพิ่มและเพิ่มคำสั่ง

บท

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
@AB ขอบคุณฉันเช่นชนิดของคำถามนี้ :)!
จาค็อบ Vlijm

ว้าว! โหวตขึ้นและจะถูกติดตั้งในวันพรุ่งนี้! (เหนื่อยเกินกว่าที่จะทำตอนนี้)
Fabby
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.