Files
menologion/bin/menologion-install
funkpower 53ad251488 typikon is a binary now, so cargo install, not pipx
The install line still said pipx, which stopped being true when the engine was
rewritten. It is one static binary with the calendar compiled in, so there is
no runtime to install and no data file to find.

Also points a Byzantine Catholic at --typikon while they are setting a default,
since the flag is the one most of them will want, and notes that anything the
widget does not set follows what typikon remembered, so a widget and a terminal
on the same machine agree.
2026-09-18 13:35:30 -04:00

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 " cargo 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"