diff --git a/users/simon/modules/sway/waybar.css b/users/simon/modules/sway/waybar.css index 1c37e13..16a8e19 100644 --- a/users/simon/modules/sway/waybar.css +++ b/users/simon/modules/sway/waybar.css @@ -166,3 +166,8 @@ window#waybar { animation-iteration-count: infinite; animation-direction: alternate; } + +#custom-calendar.active { + background-color: @base3@; + color: @base00@; +} diff --git a/users/simon/modules/sway/waybar.nix b/users/simon/modules/sway/waybar.nix index 8e0e249..39f535e 100644 --- a/users/simon/modules/sway/waybar.nix +++ b/users/simon/modules/sway/waybar.nix @@ -49,6 +49,7 @@ in "temperature" "battery" "clock" + "custom/calendar" ]; "sway/workspaces" = { @@ -223,6 +224,41 @@ in format-alt = "{:%Y-%m-%d (%a)}"; tooltip-format = "{:%Y %B}\n{calendar}"; }; + "custom/calendar" = { + interval = 300; + exec = pkgs.writeScript "calendar" '' + #!${pkgs.python3}/bin/python3 + import json + import subprocess + + + def khal(args): + completed = subprocess.run(["${pkgs.khal}/bin/khal"] + args, capture_output=True) + assert completed.returncode == 0 + return completed.stdout.decode("utf-8") + + + events_today = khal(["list", "today", "today", "-df", ""]).rstrip().split("\n") + events_2d = khal(["list", "today", "tomorrow", "-df", "{name}, {date}"]).rstrip() + + if len(events_today) == 0: + text = " " + else: + text = f"{len(events_today)}  " + + print( + json.dumps( + { + "class": "active" if len(events_today) > 0 else "", + "text": text, + "tooltip": events_2d, + } + ) + ) + ''; + return-type = "json"; + format = "{}"; + }; }; xdg.configFile."waybar/style.css".source = pkgs.substituteAll ({ src = ./waybar.css;