From 28db7c76e26c312918959384e02e433f8858de49 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Wed, 8 Apr 2026 13:24:01 +0900 Subject: * MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Automated-commit-by: dots Signed-off-by: Robert Günzler --- .config/timewarrior/extensions/waybar | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 .config/timewarrior/extensions/waybar (limited to '.config/timewarrior/extensions/waybar') diff --git a/.config/timewarrior/extensions/waybar b/.config/timewarrior/extensions/waybar new file mode 100755 index 0000000..45e3f03 --- /dev/null +++ b/.config/timewarrior/extensions/waybar @@ -0,0 +1,52 @@ +#!/bin/env python3 + +import fileinput, json +from datetime import datetime, timezone, timedelta + +ICO="󰔚" +CLS="timew" +ALT="timew" + +def main() -> None: + # only read actual json + input = [] + for line in fileinput.input(encoding='utf-8'): + if len(input) != 0: + input.append(line) + + if line == "[\n": + input = [line] + + pass + + # parse json + input = json.loads("".join(input)) + + # filter for active trackers + input = list(filter(lambda x: not "end" in x, list(input))) + + # exit early if no tracker is running + if len(input) == 0: + output = {} + else: + # pick first + input = input[0] + # parse start + startt = datetime.fromisoformat(input['start']) + # get now + nowt = datetime.now(timezone.utc); + # round away microseconds + nowt = nowt.replace(microsecond=0) + # calc diff + diff = nowt - startt.astimezone(timezone.utc) + # make output + output = { + 'text': f"{ICO} {diff} {",".join(input['tags'])}", + 'class': CLS, + 'alt': ALT, + } + + print(json.dumps(output), end='') + +if __name__ == "__main__": + main() -- cgit 1.4.1