From bce13c93064b0e9b4c40e1e8f4fd97c66c3102d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Fri, 19 Aug 2022 11:27:43 +0200 Subject: [PATCH] feat(i3status-rust): colour datetime depending on impending calendar events --- lib/i3status-rust.nix | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/lib/i3status-rust.nix b/lib/i3status-rust.nix index 649cf00..9b8f121 100644 --- a/lib/i3status-rust.nix +++ b/lib/i3status-rust.nix @@ -199,9 +199,35 @@ in { } {block = "load";} { - block = "time"; - interval = 1; - format = "%Y-%m-%d (%W %a) %H:%M"; + block = "custom"; + interval = 10; + json = true; + command = pkgs.writers.writeDash "time" '' + ${pkgs.jq}/bin/jq -n \ + --arg now "$(${pkgs.coreutils}/bin/date +'%Y-%m-%d (%W %a) %H:%M')" \ + --argjson nextEvent "$( + ${pkgs.khal}/bin/khal list --format "{start}" --day-format "" $(${pkgs.coreutils}/bin/date +'%Y-%m-%d %H:%M') 2>/dev/null \ + | ${pkgs.gnugrep}/bin/grep -E '[0-9]{2}:[0-9]{2}' \ + | ${pkgs.coreutils}/bin/head -1 \ + | ${pkgs.coreutils}/bin/date --date="$(cat)" +%s + )" \ + '($nextEvent - now) as $deltaT + | { + text: $now, + icon: "time", + state: ( + if $deltaT < (5 * 60) then + "Critical" + elif $deltaT < (15 * 60) then + "Warning" + elif $deltaT < (60 * 60) then + "Info" + else + "Idle" + end + ) + }' + ''; } ]; }