-
Notifications
You must be signed in to change notification settings - Fork 11
/
get_windows.py
executable file
·67 lines (60 loc) · 2.55 KB
/
get_windows.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import os
import time
from afk import get_afk_status
# get title name of app that user working on
def active_window_title():
active_window_title = os.popen('''xprop -id $(xdotool getwindowfocus) WM_NAME''').read()[19:-2]
a = active_window_title.find('"')
active_window_title = active_window_title[a+1:]
if "XGetWindowProperty[_NET_ACTIVE_WINDOW] failed" in active_window_title:
active_window_title = ""
if "\n" in active_window_title:
active_window_title = "Unknown"
return active_window_title
# get classname of app that user working on
def active_window():
actv_id = os.popen("xdotool getwindowfocus").read()[:-1]
if len(actv_id) == 4:
active_window = ""
else:
active_window = os.popen("xprop -id $(xdotool getwindowfocus) | grep CLASS ").read()
if active_window != "":
active_window = active_window[19:-1].replace('''"''', "").split(", ")[1]
if "XGetWindowProperty[_NET_ACTIVE_WINDOW] failed" in active_window:
active_window = ""
if "\n" in active_window:
active_window = "Unknown"
# check whether user is using nvim or vim
active_window = active_window.capitalize()
aw_title = active_window_title()
terminals = ["Kitty", "Alacritty", "Terminator", "Tilda", "Guake", "Yakuake", "Roxterm", "Eterm", "Rxvt", "Xterm", "Tilix", "Lxterminal", "Konsole", "St", "Gnome-terminal", "Xfce4-terminal", "Terminology", "Extraterm"]
if active_window in terminals:
try:
if "nvim" in aw_title:
active_window = "NeoVim"
elif "vim" in aw_title:
active_window = "Vim"
except TypeError:
None
return active_window
# returns true if user has move to next app which is not the same as previous
def is_window_changed(a, afk, timeout):
result = False
while not(result):
time.sleep(0.5)
b = active_window()
if a != b :
result = True
elif get_afk_status(afk, timeout):
result = True
else:
result = False
return result
### what to do after window get change I've to append one line in csv data file in following format
### opened-time closed-time time-spent window_class_name window_title_name
### and whenever the user puts particular command it will make report till the time for that day and shows that report in terminal
if __name__ == "__main__":
while True:
time.sleep(1)
print(active_window_title())
print(os.popen('''xdotool getwindowfocus getwindowname''').read())