diff options
author | 2022-07-09 00:11:48 +0530 | |
---|---|---|
committer | 2022-07-09 00:11:48 +0530 | |
commit | f0e484878af5b86b723de6af5f506f8b18e66ddc (patch) | |
tree | 0e688955119acf9598a85fdcba77ce21c104b327 /src/Watcher/get_windows.py | |
parent | 255487a34700d6790a2771a177c16991caaca72f (diff) | |
parent | ac79bbea7b113613bf160512064b8e2478181db9 (diff) | |
download | shopno-os-log-sync-f0e484878af5b86b723de6af5f506f8b18e66ddc.tar.gz shopno-os-log-sync-f0e484878af5b86b723de6af5f506f8b18e66ddc.zip |
Update 1.2 | AFK feature | New algorithm to update log file at each second
Diffstat (limited to 'src/Watcher/get_windows.py')
-rwxr-xr-x | src/Watcher/get_windows.py | 66 |
1 files changed, 38 insertions, 28 deletions
diff --git a/src/Watcher/get_windows.py b/src/Watcher/get_windows.py index 6e7b3f2..393c7ff 100755 --- a/src/Watcher/get_windows.py +++ b/src/Watcher/get_windows.py @@ -1,45 +1,55 @@ import os import time +from ewmh import EWMH -# get classname of app that user working on -def active_window(): - # above command gives error on ubuntu cause of xdotool version is too old there while on arch it works -# active_window = os.popen("xdotool getwindowfocus getwindowclassname").read() - active_window_id = os.popen("xdotool getactivewindow").read()[:-1] - active_window = os.popen("xprop -id "+ str(active_window_id) +" | grep CLASS").read()[18::].split(",")[1].replace('''"''', "") - return active_window +class window: + def __init__(self, class_name, title_name): + self.class_name = class_name + self.title_name = title_name # get title name of app that user working on def active_window_title(): - active_window_title = os.popen("xdotool getwindowfocus getwindowname").read() - active_window_title = active_window_title[0:-1] + try: + win = EWMH().getActiveWindow() + active_window_title = win.get_wm_name() + except AttributeError: + active_window_title = "unknown" + active_window_title = active_window_title.capitalize() return active_window_title -# get list of opened apps in background as well as in foreground -def opened_windows_list(): - raw_data = os.popen('''wmctrl -lx | awk '{print $3}' ''').read() - raw_data_ls = raw_data.split('\n') - windows_list = [] - for x in raw_data_ls: - last = x.rfind(".") - windows_list.append(x[last+1::]) - windows_list.remove('') - windows_list = list(set(windows_list)) - return windows_list +# get classname of app that user working on +def active_window(): + try: + win = EWMH().getActiveWindow() + active_window = win.get_wm_class()[1] + except AttributeError: + active_window = "unknown" + + if len(active_window) > 20: + active_window = "unknown" + elif "\n" in active_window: + active_window = "unknown" + active_window = active_window.capitalize() + + # check whether user is using nvim or vim + 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: + if "Nvim" in aw_title: + active_window = "NeoVim" + elif "Vim" in aw_title: + active_window = "Vim" + return active_window # returns true if user has move to next app which is not the same as previous def is_window_changed(a): result = False - while not(result): - time.sleep(1) - b = active_window() - if a != b : - result = True - else: - result = False + time.sleep(0.1) + b = active_window() + if a != b : + result = True 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 |