diff --git a/bin/waybar_khal.py b/bin/waybar_khal.py
index ce45b77..c5c4b04 100755
--- a/bin/waybar_khal.py
+++ b/bin/waybar_khal.py
@@ -1,16 +1,14 @@
#!/usr/bin/env python
import subprocess
-import datetime
+from datetime import date, datetime, timedelta
import json
from html import escape
-data = {}
-
-today = datetime.date.today().strftime("%Y-%m-%d")
+today = date.today().strftime("%Y-%m-%d")
days = [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "Today",
"Tomorrow" ]
-next_week = (datetime.date.today() + datetime.timedelta(days=10)).strftime("%Y-%m-%d")
+next_week = (date.today() + timedelta(days=10)).strftime("%Y-%m-%d")
title = subprocess.check_output("khal list --format \"{title}\" now "+next_week,
shell=True).decode("UTF-8").split("\n")
@@ -19,33 +17,48 @@ start = subprocess.check_output("khal list --format \"{start}\" now "+next_week,
end = subprocess.check_output("khal list --format \"{end}\" now "+next_week,
shell=True).decode("UTF-8").split("\n")
-lines = ""
+text = ""
+alt = "idle"
+event = "-"
for i in range(len(title)):
t = escape(title[i])
s = escape(start[i])
e = escape(end[i])
line = ""
+ ## header
if len(t) and t.split(",")[0] in days:
line = f"\n{t}"
+ ## event
else:
- ss = s.split(" ")
- es = e.split(" ")
- if len(es) == 1 or len(ss) == 1:
+ t_start = s.split(" ")
+ t_end = e.split(" ")
+ ## all day
+ if len(t_start) == 1 or len(t_end) == 1:
line = f"{t}"
+ ## start - end
else:
- line = f"{ss[1]} - {es[1]}: {t}"
+ ts_start = datetime.timestamp(datetime.strptime(s, '%Y-%m-%d %H:%M'))
+ ts_end = datetime.timestamp(datetime.strptime(e, '%Y-%m-%d %H:%M'))
+ ts_now = datetime.timestamp(datetime.now())
+ ## today
+ if t_start[0] == today:
+ ## upcoming or ongoing
+ if ts_now < ts_end:
+ ## ongoing
+ if ts_start < ts_now:
+ if ts_start < ts_now and ts_now < ts_end:
+ event = f"{t}"
+ alt = "now"
+ ## upcoming
+ elif event == "-":
+ event = f"{t}"
+ alt = "today"
+ line = f"{t_start[1]} - {t_end[1]}: {t}"
+ text += f"\n{line}"
- lines += f"{line}\n"
-
-if today in lines:
- event = lines.split('\n')[2]
- if len(event) > 30:
- event = f"{event[0:30]}…"
- data["text"] = f"{event}"
- data["alt"] = "event"
-else:
- data["text"] = "-"
- data["alt"] = "idle"
-data["tooltip"] = lines
+data = {}
+data["text"] = event
+data["alt"] = alt
+data["tooltip"] = text
print(json.dumps(data))
diff --git a/waybar.d/config b/waybar.d/config
index 4855bae..433f7c5 100644
--- a/waybar.d/config
+++ b/waybar.d/config
@@ -47,7 +47,8 @@
"return-type": "json",
"interval": 300,
"format-icons": {
- "event": " ",
+ "now": " ",
+ "today": " ",
"idle": " "
},
"escape": false,