mirror of
https://git.pumpin.online/funkpower/menologion.git
synced 2026-10-22 18:57:14 +00:00
A Quickshell widget for Hyprland, a waybar module and an eww panel, all reading the same JSON from the typikon CLI so none of them touches the network and all three agree. The Quickshell piece is three separable parts: a Typikon singleton that wraps the CLI and re-reads only when the date rolls over, a Theme singleton that takes colours from JSON with a default for every key, and the widget itself. The legend is built from the week in view rather than 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. The church date shows beside the civil one whenever they differ, which on the old calendar is always. Forefeasts and afterfeasts get their own line instead of crowding out the commemoration that makes the day.
98 lines
2.5 KiB
Bash
Executable File
98 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Link the front ends into place. Nothing is copied, so a `git pull` updates
|
|
# what you are running.
|
|
set -euo pipefail
|
|
|
|
src="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
config="${XDG_CONFIG_HOME:-$HOME/.config}"
|
|
binhome="${HOME}/.local/bin"
|
|
|
|
usage() {
|
|
cat <<USAGE
|
|
horologion-install [quickshell|waybar|eww|bin|all]
|
|
|
|
quickshell link quickshell/ into a quickshell config as horologion/
|
|
waybar link the bar script and print the module to merge
|
|
eww link eww/ into your eww config
|
|
bin link horologion-waybar into ~/.local/bin
|
|
all bin + whichever of the three are already configured
|
|
|
|
USAGE
|
|
}
|
|
|
|
link() {
|
|
local from="$1" to="$2"
|
|
mkdir -p "$(dirname "$to")"
|
|
if [ -e "$to" ] && [ ! -L "$to" ]; then
|
|
echo " ! $to exists and is not a link — leaving it alone" >&2
|
|
return 1
|
|
fi
|
|
ln -sfn "$from" "$to"
|
|
echo " $to -> $from"
|
|
}
|
|
|
|
do_bin() {
|
|
link "$src/bin/horologion-waybar" "$binhome/horologion-waybar"
|
|
case ":$PATH:" in
|
|
*":$binhome:"*) ;;
|
|
*) echo " note: $binhome is not on your PATH" >&2 ;;
|
|
esac
|
|
}
|
|
|
|
do_quickshell() {
|
|
link "$src/quickshell" "$config/quickshell/horologion"
|
|
cat <<'NOTE'
|
|
|
|
Add to your shell.qml:
|
|
|
|
import qs.horologion.modules
|
|
...
|
|
Horologion {}
|
|
|
|
Or run it on its own:
|
|
|
|
quickshell -p ~/.config/quickshell/horologion/shell.qml
|
|
NOTE
|
|
}
|
|
|
|
do_waybar() {
|
|
link "$src/waybar/style.css" "$config/waybar/horologion.css"
|
|
cat <<'NOTE'
|
|
|
|
Add "custom/typikon" to a modules list, merge waybar/config.jsonc into
|
|
your config, and @import "horologion.css" from your style.css.
|
|
NOTE
|
|
}
|
|
|
|
do_eww() {
|
|
link "$src/eww" "$config/eww/horologion"
|
|
cat <<'NOTE'
|
|
|
|
Add to your eww.yuck: (include "horologion/horologion.yuck")
|
|
Add to your eww.scss: @import "horologion/horologion.scss";
|
|
Then put (horologion) in a window, or (horologion-bar) in a bar.
|
|
NOTE
|
|
}
|
|
|
|
command -v typikon >/dev/null 2>&1 || {
|
|
echo "horologion: typikon is not on PATH." >&2
|
|
echo " pip install typikon" >&2
|
|
echo " https://git.pumpin.online/funkpower/typikon" >&2
|
|
exit 1
|
|
}
|
|
|
|
case "${1:-all}" in
|
|
quickshell) do_bin; do_quickshell ;;
|
|
waybar) do_bin; do_waybar ;;
|
|
eww) do_bin; do_eww ;;
|
|
bin) do_bin ;;
|
|
all)
|
|
do_bin
|
|
[ -d "$config/quickshell" ] && do_quickshell
|
|
[ -d "$config/waybar" ] && do_waybar
|
|
[ -d "$config/eww" ] && do_eww
|
|
;;
|
|
-h|--help|help) usage ;;
|
|
*) usage; exit 2 ;;
|
|
esac
|