Marty Oehme
12d186d871
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).
39 lines
1.1 KiB
Python
Executable file
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))
|