The Horologion is the Book of Hours: the fixed portions of the services themselves. This shows the day's commemorations, its fast and its season, which is a Menologion. Naming it for a book whose contents it does not carry was a real error and worth the churn to correct. typikon already uses the word internally, for menologion.py and the data file it loads. That is not a collision: typikon provides a menologion, this displays one. Renamed throughout, not just the repo: the two scripts, the QML component and its three qmldir modules, MENOLOGION_COLORS, ~/.config/menologion/colors.json, the eww widgets and scss variables, the waybar class. Verified standalone and embedded in a foreign shell, and the smoke suite still passes. Also drops the em dashes from the prose.
4.3 KiB
menologion
Desktop front ends for 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.
Install
typikon first, since all three front ends shell out to it:
$ pipx install git+https://git.pumpin.online/funkpower/typikon
$ typikon --set-default rocor # or antiochian, oca, greece, ...
Then:
$ 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.
$ 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:
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:
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
"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:
$ menologion-waybar --format '{emoji} {fastLabel}'
$ menologion-waybar -j moscow --format '{emoji} {churchDate}'
eww
(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.
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:
Licence
GPL-2.0-only. See LICENSE.


