# pylint: disable=C0111,R0903 """ Module for ActivityWatch (https://activitywatch.net/) Displays the amount of time the system was used actively """ import sqlite3 import os import core.module import core.widget class Module(core.module.Module): def __init__(self, config, theme): super().__init__(config, theme, core.widget.Widget(self.output)) self.__uptime = "" def output(self, _): return "{}".format(self.__uptime) def update(self): database_loc = self.parameter('database', '~/.local/share/activitywatch/aw-server/peewee-sqlite.v2.db') home = os.path.expanduser('~') database = sqlite3.connect(database_loc.replace('~', home)) cursor = database.cursor() cursor.execute('SELECT key, id FROM bucketmodel') bucket_id = 1 for tuple in cursor.fetchall(): if 'aw-watcher-afk' in tuple[1]: bucket_id = tuple[0] cursor.execute(f'SELECT duration, datastr FROM eventmodel WHERE bucket_id = {bucket_id} ' + 'AND strftime(\'%Y,%m,%d\', timestamp) = strftime(\'%Y,%m,%d\', \'now\')') duration = 0 for tuple in cursor.fetchall(): if '{"status": "not-afk"}' in tuple[1]: duration += tuple[0] hours = '%.0f' % (duration // 3600) minutes = '%.0f' % ((duration % 3600) // 60) seconds = '%.0f' % (duration % 60) formatting = self.parameter('format', 'HHh, MMmin') self.__uptime = formatting.replace('HH', hours).replace('MM', minutes).replace('SS', seconds) # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4