mirror of
https://git.pumpin.online/funkpower/menologion.git
synced 2026-10-22 18:57:14 +00:00
82 lines
2.9 KiB
Plaintext
82 lines
2.9 KiB
Plaintext
;; 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 ?: ""}))))
|