# menologion Desktop front ends for [`typikon`](https://git.pumpin.online/funkpower/typikon). The Orthodox liturgical day on your desktop, in Hyprland (Quickshell), waybar or eww. Everything is computed locally by `typikon`, so none of this touches the network, and the widget re-reads only when the date rolls over. The answer changes at midnight and at no other moment. ![The widget during the Nativity Fast](docs/nativity-fast.png) ## Install `typikon` first, since all three front ends shell out to it: ```console $ pipx install git+https://git.pumpin.online/funkpower/typikon $ typikon --set-default rocor # or antiochian, oca, greece, ... ``` Then: ```console $ git clone https://git.pumpin.online/funkpower/menologion $ cd menologion && ./bin/menologion-install ``` That links rather than copies, so `git pull` updates what you are running. Pass `quickshell`, `waybar`, `eww` or `bin` to do just one. ## Quickshell A desktop widget for Hyprland and anything else Quickshell runs on. ```console $ quickshell -p ~/.config/quickshell/menologion/shell.qml ``` It sits on the background layer, so it behaves like part of the wallpaper: always under your windows, never stealing a click. To drop it into a shell you already have, link this directory in beside your own and import it by path: ```qml import "menologion/modules" Menologion {} ``` The imports inside are relative, so the widget always resolves its own `Config` and `Theme` rather than silently binding to yours and inheriting whatever they happen to mean. Three pieces, each usable on its own: | | | |---|---| | `services/Typikon.qml` | a singleton wrapping the CLI; bind to it from anything | | `services/Theme.qml` | colours, from JSON, with defaults for every key | | `modules/Menologion.qml` | the widget | Set a jurisdiction per-widget if you want one different from your default: ```qml import "menologion/services" // for Typikon Menologion { Component.onCompleted: Typikon.jurisdiction = "moscow" } ``` `Typikon.forDate` takes an ISO date and shows a different day, which is how you look at what Great Week will ask of you before it arrives. ### Colours `Theme.qml` reads `~/.config/menologion/colors.json`, or whatever `MENOLOGION_COLORS` points at, and watches it for changes. Every key has a default, so the widget is legible with no file at all. See `quickshell/colors.example.json`, the flat shape most theme generators already emit. ## waybar ```jsonc "custom/typikon": { "exec": "menologion-waybar", "return-type": "json", "interval": 1800, "on-click": "typikon --days 7" } ``` The module's CSS class is the fast level (`.xerophagy`, `.wine_oil`, `.fish`), so a day's discipline reads off the colour without reading the text. `.obligatory` is added only where a particular law actually binds, which under the Typikon is never: the Orthodox Church keeps the fast as tradition, not as precept. `waybar/style.css` has a starting palette. Change what the text says with `--format`: ```console $ menologion-waybar --format '{emoji} {fastLabel}' $ menologion-waybar -j moscow --format '{emoji} {churchDate}' ``` ## eww ```lisp (include "menologion/menologion.yuck") ``` Then `(menologion)` for the full panel or `(menologion-bar)` for one line. `menologion.scss` carries the styling; its colours are `!default` variables, so set your own before the `@import`. ## What it shows The feast or the day's principal commemoration, the fast and why, the season, the week ahead, and Pascha. **The church date is always in the corner.** On the new calendar it echoes the wall calendar; on the old it is the answer you came for. Below, ROCOR on 7 January, which is 25 December, and the Nativity. ![The Nativity on the old calendar](docs/old-calendar.png) **Forefeasts, afterfeasts and leave-takings** get their own quiet line rather than crowding out the commemoration that makes the day itself. They repeat for days at a time, and a widget that leads with "Post-festive Day of the Exaltation" for a week has told you nothing. **The legend is built from the week in view**, not hardcoded, because the levels a tradition uses are its own: six under the Typikon, three under Ruthenian particular law, and the words for them differ too. Great Week uses nearly all of them: ![Great and Holy Week](docs/great-week.png) ## Licence GPL-2.0-only. See [LICENSE](LICENSE).