dotfiles/desktop/.config/waybar/modules/khal.py
Marty Oehme 12d186d871
waybar: Improve events block icon rendering
Using the 'alt' json return field to set the icon and change the icon
within waybar itself instead of doing so manually in the script. This
makes us a little more flexible and puts all the 'what' is rendered that
is specific to waybar into waybar (keeping the 'how' it's rendered in
the style.css).
2024-07-25 22:15:12 +02:00

39 lines
1.1 KiB
Python
Executable file

#!/usr/bin/env python
# from https://gist.github.com/bjesus/178a9bd3453470d74803945dbbf9ed40
# List upcoming khal events in simple json container fit for waybar
#
# Hovering over the item displays all upcoming
# The icon changes if there are events today, and displays the
# closest upcoming one.
import datetime
import json
import subprocess
from html import escape
data = {}
today = datetime.date.today().strftime("%Y-%m-%d")
next_week = (datetime.date.today() + datetime.timedelta(days=10)).strftime("%Y-%m-%d")
output = subprocess.check_output("khal list now " + next_week, shell=True)
output = output.decode("utf-8")
lines = output.split("\n")
new_lines: list[str] = []
for line in lines:
clean_line = escape(line).split(" ::")[0]
if len(clean_line) and clean_line[0] not in ["0", "1", "2"]:
clean_line = "\n<b>" + clean_line + "</b>"
new_lines.append(clean_line)
output = "\n".join(new_lines).strip()
data["alt"] = "no-event"
data["tooltip"] = output
if today in output:
data["text"] = output.split("\n")[1]
data["alt"] = "event"
print(json.dumps(data))