mirror of
https://git.pumpin.online/funkpower/menologion.git
synced 2026-10-22 18:57:14 +00:00
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.
113 lines
3.0 KiB
Bash
Executable File
113 lines
3.0 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
|
|
menologion-install [quickshell|waybar|eww|bin|all]
|
|
|
|
quickshell link quickshell/ into a quickshell config as menologion/
|
|
waybar link the bar script and print the module to merge
|
|
eww link eww/ into your eww config
|
|
bin link menologion-waybar into ~/.local/bin
|
|
all bin + whichever of the three are already configured
|
|
|
|
USAGE
|
|
}
|
|
|
|
# Set when something was skipped, so the run can report it in its exit status
|
|
# without `set -e` tearing the rest of the install down.
|
|
skipped=0
|
|
|
|
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
|
|
skipped=1
|
|
return 0
|
|
fi
|
|
ln -sfn "$from" "$to"
|
|
echo " $to -> $from"
|
|
}
|
|
|
|
do_bin() {
|
|
link "$src/bin/menologion-waybar" "$binhome/menologion-waybar"
|
|
case ":$PATH:" in
|
|
*":$binhome:"*) ;;
|
|
*) echo " note: $binhome is not on your PATH" >&2 ;;
|
|
esac
|
|
}
|
|
|
|
do_quickshell() {
|
|
link "$src/quickshell" "$config/quickshell/menologion"
|
|
cat <<'NOTE'
|
|
|
|
Add to your shell.qml:
|
|
|
|
import qs.menologion.modules
|
|
...
|
|
Menologion {}
|
|
|
|
Or run it on its own:
|
|
|
|
quickshell -p ~/.config/quickshell/menologion/shell.qml
|
|
NOTE
|
|
}
|
|
|
|
do_waybar() {
|
|
link "$src/waybar/style.css" "$config/waybar/menologion.css"
|
|
cat <<'NOTE'
|
|
|
|
Add "custom/typikon" to a modules list, merge waybar/config.jsonc into
|
|
your config, and @import "menologion.css" from your style.css.
|
|
NOTE
|
|
}
|
|
|
|
do_eww() {
|
|
link "$src/eww" "$config/eww/menologion"
|
|
cat <<'NOTE'
|
|
|
|
Add to your eww.yuck: (include "menologion/menologion.yuck")
|
|
Add to your eww.scss: @import "menologion/menologion.scss";
|
|
Then put (menologion) in a window, or (menologion-bar) in a bar.
|
|
NOTE
|
|
}
|
|
|
|
require_typikon() {
|
|
command -v typikon >/dev/null 2>&1 && return 0
|
|
echo "menologion: typikon is not on PATH." >&2
|
|
echo " pipx install git+https://git.pumpin.online/funkpower/typikon" >&2
|
|
exit 1
|
|
}
|
|
|
|
# --help must not be gated behind the dependency it tells you about.
|
|
case "${1:-all}" in
|
|
-h|--help|help) usage; exit 0 ;;
|
|
esac
|
|
require_typikon
|
|
|
|
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 x ] && f` as the last statement of the script would make a
|
|
# perfectly good run exit 1 under `set -e` whenever the directory is
|
|
# absent. Hence the `|| true`, and the explicit exit below.
|
|
[ -d "$config/quickshell" ] && do_quickshell || true
|
|
[ -d "$config/waybar" ] && do_waybar || true
|
|
[ -d "$config/eww" ] && do_eww || true
|
|
;;
|
|
*) usage; exit 2 ;;
|
|
esac
|
|
|
|
exit "$skipped"
|