def main(): import argparse poll_time = 1.0 parser = argparse.ArgumentParser("A watcher for windows in X11") parser.add_argument("--testing", action="store_true") args = parser.parse_args() logging.basicConfig(level=logging.DEBUG if args.testing else logging.INFO) client = ActivityWatchClient("x11watcher", testing=args.testing) bucketname = "{}_{}".format(client.client_name, client.client_hostname) eventtype = "currentwindow" client.create_bucket(bucketname, eventtype) # get_only_active = True last_window = [] while True: try: # wids = xprop.get_window_ids() active_window_id = xprop.get_active_window_id() if active_window_id == "0x0": print("Failed to find active window, id found was 0x0") sleep(poll_time) continue # Always true, getting all windows currently not supported # if get_only_active: current_window = xprop.get_windows([active_window_id], active_window_id)[0] # else: # current_windows = get_windows(wids, active_window_id) """ if last_windows != current_windows: last_windows = current_windows print("Windows changed") client.send_event(Event(windows=last_windows, timestamp=datetime.now())) print(current_windows) """ if last_window != current_window: last_window = current_window print("Window changed") labels = ["title:" + current_window["name"]] labels.extend( ["class:" + cls for cls in set(current_window["class"])]) client.send_event( bucketname, Event(label=labels, timestamp=datetime.now(pytz.utc))) print(current_window) except Exception as e: logger.error( "Exception thrown while trying to get active window: {}". format(e)) traceback.print_exc(e) sleep(poll_time)
def main(): import argparse poll_time = 1.0 parser = argparse.ArgumentParser("A watcher for windows in X11") parser.add_argument("--testing", action="store_true") args = parser.parse_args() logging.basicConfig(level=logging.DEBUG if args.testing else logging.INFO) client = ActivityWatchClient("x11watcher", testing=args.testing) bucketname = "{}_{}".format(client.client_name, client.client_hostname) eventtype = "currentwindow" client.create_bucket(bucketname, eventtype) # get_only_active = True last_window = [] while True: try: # wids = xprop.get_window_ids() active_window_id = xprop.get_active_window_id() if active_window_id == "0x0": print("Failed to find active window, id found was 0x0") sleep(poll_time) continue # Always true, getting all windows currently not supported # if get_only_active: current_window = xprop.get_windows([active_window_id], active_window_id)[0] # else: # current_windows = get_windows(wids, active_window_id) """ if last_windows != current_windows: last_windows = current_windows print("Windows changed") client.send_event(Event(windows=last_windows, timestamp=datetime.now())) print(current_windows) """ if last_window != current_window: last_window = current_window print("Window changed") labels = ["title:" + current_window["name"]] labels.extend(["class:" + cls for cls in set(current_window["class"])]) client.send_event(bucketname, Event(label=labels, timestamp=datetime.now(pytz.utc))) print(current_window) except Exception as e: logger.error("Exception thrown while trying to get active window: {}".format(e)) traceback.print_exc(e) sleep(poll_time)
class ClientTest(unittest.TestCase): def setUp(self): self.client = ActivityWatchClient("unittest", testing=True) self.client.setup_bucket("test", "testevents") self.client.connect() def test_send_event(self): self.client.send_event("test", Event(timestamp=datetime.now(), label="test")) def test_send_events(self): self.client.send_events("test", [ Event(timestamp=datetime.now(), label="test"), Event(timestamp=datetime.now(), label="test2"), ])
def main(): import argparse parser = argparse.ArgumentParser( "A watcher for applications with activationPolicy=regular") parser.add_argument("--testing", action="store_true") args = parser.parse_args() logging.basicConfig(level=logging.DEBUG if args.testing else logging.INFO) client = ActivityWatchClient("macoswatcher", testing=args.testing) bucketname = "{}_{}".format(client.client_name, client.client_hostname) eventtype = "currentwindow" client.create_bucket(bucketname, eventtype) last_app = "" last_title = "" info = getInfo() print(info) active_app = getApp(info) active_title = getTitle(info) if (active_title == ""): logger.error( "Title of active window not found. Does the terminal have access to accessibility API? See README for how to give access!" ) while True: try: info = getInfo() active_app = getApp(info) active_title = getTitle(info) if (last_app != active_app or last_title != active_title): last_app = active_app last_title = active_title client.send_event( bucketname, Event(label=[active_app, active_title], timestamp=datetime.now(pytz.utc))) print(active_app + ", " + active_title) except Exception as e: logger.error( "Exception thrown while trying to get active applications {}". format(e)) sleep(0.5)