#!/bin/bash # udt-homepage: stage the homepage stylesheet and wallpaper on the dashboard host. # Copyright (C) 2026 Danilo M. # Licensed under the GNU General Public License v2 only. # # Staged, not installed: /opt/homepage is root-owned and this script does not # hold root there, so it copies into ~/hp-stage/ and a notification carries # the command that finishes the job. # # udt-accent starts this detached on every run, which covers both a wallpaper # change (wallp) and a scheme switch (install.sh). Never slow and never loud # when the host is away: a laptop off that network gets a short connect # timeout and no notification, since there is nothing for the user to do. repo="$(dirname "$(readlink -f "$0")")/.." css="$repo/templates/homepage/custom.css" wall="$HOME/.cache/udt/wpaper" opts=(-q -o ConnectTimeout=5 -o BatchMode=yes) [ -f "$css" ] && [ -e "$wall" ] || exit 0 # The wallpaper keeps its own extension, so settings.yaml has to follow it: the # finish command rewrites its background.image line to match. The extension # ends up in a command the user runs as root, so only known image types pass. real="$(readlink -f "$wall")" ext="${real##*.}" ext="${ext,,}" case "$ext" in png|jpg|jpeg|webp|gif|avif) ;; *) echo "homepage: $real is not a known image type, skipped" >&2; exit 1 ;; esac bg="background.$ext" scp "${opts[@]}" "$css" homepage:hp-stage/custom.css && scp "${opts[@]}" "$real" "homepage:hp-stage/$bg" || { echo "homepage: unreachable, skipped" >&2 exit 1 } # Root commands, not sudo: the login user there has no sudo rights. Root's ~ # is not the staging directory, so it is named through the ssh login user, # which ssh -G resolves from the config without connecting. stage="~$(ssh -G homepage 2>/dev/null | awk '/^user /{print $2}')/hp-stage" finish="cp $stage/custom.css /opt/homepage/config/ cp $stage/$bg /opt/homepage/public/images/ sed -i 's|/images/background\.[a-z]*|/images/$bg|' /opt/homepage/config/settings.yaml systemctl restart homepage" echo "homepage: staged, finish as root on homepage:" echo "$finish" command -v notify-send >/dev/null 2>&1 && notify-send -a udt "homepage: theme staged" "As root on homepage: $finish" exit 0