#!/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 <&2 skipped=1 return 0 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 } require_typikon() { command -v typikon >/dev/null 2>&1 && return 0 echo "horologion: 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"