#!/bin/bash # One-line install of the herdr screensaver for Omarchy: # curl -fsSL https://byminyona.com/herdr-screensaver/omarchy.sh | bash # curl -fsSL https://byminyona.com/herdr-screensaver/omarchy.sh | bash -s uninstall # Downloads the release tarball next to this script, checks its SHA-256 (embedded at package time) # BEFORE touching anything, unpacks it to ~/.local/share/herdr-screensaver and runs its install.sh. # HERDR_SS_BASE_URL overrides the download location (tests). set -euo pipefail TMPD="" main() { local version=1.0.0 local base="${HERDR_SS_BASE_URL:-https://byminyona.com/herdr-screensaver}" local tarball="herdr-screensaver-omarchy-$version.tar.gz" local want="7681dde26433db309633c8855bb0d6fdd9616fc7a5733109dac1396e400683a4" local data="$HOME/.local/share/herdr-screensaver" local action="${1:-install}" got case $action in uninstall) if [ -f "$data/omarchy/install.sh" ]; then bash "$data/omarchy/install.sh" uninstall &2; return 2 ;; esac if [ -f "$data/state" ]; then echo "herdr-screensaver: already installed; to reinstall run: bash $data/omarchy/install.sh uninstall, then this again" return 0 fi case $want in *[!0-9a-f]* | "") echo "herdr-screensaver: this installer has no checksum; refusing" >&2; return 1 ;; esac TMPD=$(mktemp -d) trap 'rm -rf "$TMPD"' EXIT local tmp=$TMPD echo "herdr-screensaver: downloading $base/$tarball" curl -fsSL "$base/$tarball" -o "$tmp/$tarball" if command -v sha256sum >/dev/null 2>&1; then got=$(sha256sum "$tmp/$tarball" | cut -d' ' -f1); else got=$(shasum -a 256 "$tmp/$tarball" | cut -d' ' -f1); fi if [ "$got" != "$want" ]; then echo "herdr-screensaver: checksum mismatch (got $got, want $want); nothing was changed" >&2 return 1 fi mkdir -p "$tmp/x" tar -xzf "$tmp/$tarball" -C "$tmp/x" mkdir -p "$data" cp -R "$tmp/x/." "$data/" if ! bash "$data/omarchy/install.sh" install &2 return 1 fi } main "$@"; exit $?