;; horologion — the liturgical day for eww ;; ;; Include this from your own eww.yuck: ;; ;; (include "horologion/horologion.yuck") ;; ;; and put (horologion) in a window, or (horologion-bar) in a bar. Set a ;; jurisdiction by editing the two defpoll commands below; leaving them as ;; they are follows whatever `typikon --set-default` wrote. (defpoll typikon-day :interval "30m" :initial "{}" `typikon --json`) (defpoll typikon-week :interval "30m" :initial "{\"days\":[]}" `typikon --json --days 7`) ;; ── the one-line version, for a bar (defwidget horologion-bar [] (box :class "horologion-bar" :space-evenly false :spacing 6 (label :class "glyph" :text {typikon-day.emoji ?: ""}) (label :class "title" :limit-width 42 :text {typikon-day.title ?: "typikon?"}))) ;; ── the full panel (defwidget horologion [] (box :class "horologion" :orientation "v" :space-evenly false :spacing 8 (box :class "head" :space-evenly false :spacing 11 (label :class "glyph-big" :text {typikon-day.emoji ?: ""}) (box :orientation "v" :space-evenly false :halign "start" :hexpand true (label :class {typikon-day.feast != "" ? "title feast" : "title"} :halign "start" :wrap true :lines 2 :text {typikon-day.title ?: "typikon is not on PATH"}) (label :class {typikon-day.obligation == "obligatory" ? "sub obligatory" : "sub"} :halign "start" :text "${typikon-day.weekday ?: ""}${ typikon-day.season != "" ? " · " : ""}${ typikon-day.season ?: ""}${ typikon-day.obligation == "obligatory" ? " · obligatory" : ""}") (label :class "cycle" :halign "start" :visible {(typikon-day.cycle ?: "") != ""} :text {typikon-day.cycle ?: ""}))) (label :class "fast" :halign "start" :text "${typikon-day.fastLabel ?: ""}${ (typikon-day.reason ?: "") != "" ? " — " : ""}${typikon-day.reason ?: ""}") (box :class "rule") ;; the rest of the week (box :orientation "v" :space-evenly false :spacing 2 (for d in {typikon-week.days ?: []} (box :space-evenly false :spacing 9 (label :class "glyph" :text {d.emoji}) (label :class "weekday" :width 34 :xalign 0 :text {d.weekday}) (label :class {d.feast != "" ? "day feast" : "day"} :hexpand true :xalign 0 :limit-width 40 :text {d.title})))) (box :class "rule") (box :space-evenly false (label :class "pascha" :hexpand true :xalign 0 :text "Pascha ${typikon-day.pascha ?: ""}") (label :class "pascha" :text {typikon-day.churchDate ?: ""}))))