aboutsummaryrefslogtreecommitdiffstats
path: root/install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'install.sh')
-rwxr-xr-xinstall.sh63
1 files changed, 62 insertions, 1 deletions
diff --git a/install.sh b/install.sh
index 5489f46..292f00a 100755
--- a/install.sh
+++ b/install.sh
@@ -13,6 +13,11 @@ mkdir -p "$target" "$HOME/bin" "$HOME/.cache/wal"
# symlinked below is one of its outputs, so this has to run before anything is
# linked. It fails loudly if a role names a colour the scheme does not define,
# which is the whole point of keeping the colours in one place.
+selector="$HOME/.config/udt/roles.conf"
+if [ ! -f "$selector" ]; then
+ install -Dm644 "$repo/palette/roles.conf.default" "$selector"
+ echo "seeded $selector"
+fi
"$repo/bin/udt-palette"
# Theme files are symlinked individually; accent.rasi is NOT, it points at the
@@ -41,7 +46,7 @@ ln -sfn "$repo/bin/udt-palette" "$HOME/bin/udt-palette"
# The generated configs for everything that is not rofi. These are copied
# rather than symlinked: each app owns its config file and mixes theme keys
# with settings that are none of this repo's business.
-scheme="$(sed -n 's/^scheme *= *//p' "$repo/palette/roles.conf")"
+scheme="$(sed -n 's/^scheme *= *//p' "$selector")"
# waybar reads whichever themes/<name>.css style.css imports, so write the file
# under the scheme's own name and repoint the import. The older per-flavour
@@ -56,5 +61,61 @@ fi
install -Dm644 "$repo/templates/terminal/kitty-theme.conf" \
"$HOME/.config/kitty/current-theme.conf"
+# Kvantum wants a directory per theme, named after itself, and qt5ct/qt6ct
+# reach Qt apps through it. The theme is installed under one fixed name rather
+# than one per scheme: Kvantum caches by name, so reusing it means a switch
+# needs no change to kvantum.kvconfig and no second theme left behind.
+kv="$HOME/.config/Kvantum/udt"
+install -Dm644 "$repo/templates/kvantum/theme.kvconfig" "$kv/udt.kvconfig"
+install -Dm644 "$repo/templates/kvantum/theme.svg" "$kv/udt.svg"
+printf '[General]\ntheme=udt\n' > "$HOME/.config/Kvantum/kvantum.kvconfig"
+
+# Obsidian and Typora need more than a copy: the Obsidian snippet has to be
+# enabled in each vault's appearance.json without disturbing the snippets
+# already listed there. Skipped silently when neither app is installed.
+"$repo/bin/udt-appthemes" || true
+
+# Stage the homepage stylesheet on the dashboard host. Staged, not installed:
+# /opt/homepage/config is root-owned and this script does not hold root there.
+# Never fatal, and never slow: a laptop away from that network must still be
+# able to install the local theme, so the connect timeout is short and any
+# failure is a warning.
+if command -v scp >/dev/null 2>&1; then
+ if scp -q -o ConnectTimeout=5 -o BatchMode=yes \
+ "$repo/templates/homepage/custom.css" \
+ homepage:hp-stage/custom.css 2>/dev/null; then
+ echo "homepage: staged custom.css ($scheme)"
+ echo " finish with: ssh homepage 'sudo cp ~/hp-stage/custom.css /opt/homepage/config/custom.css'"
+ else
+ echo "homepage: unreachable, skipped" >&2
+ fi
+fi
+
+# Reload what is running. Writing the configs is not enough: waybar, kitty and
+# Hyprland reread on a signal, dunst and conky only on a restart, and rofi
+# reads its theme per launch so it needs nothing. Each is guarded, because none
+# of them is necessarily running, and a missing one is not an error.
+reloaded=""
+pgrep -x waybar >/dev/null 2>&1 && killall -SIGUSR2 waybar 2>/dev/null && reloaded="$reloaded waybar"
+pgrep -x kitty >/dev/null 2>&1 && pkill -USR1 -x kitty 2>/dev/null && reloaded="$reloaded kitty"
+command -v hyprctl >/dev/null 2>&1 && hyprctl reload >/dev/null 2>&1 && reloaded="$reloaded hyprland"
+
+# udt-accent regenerates the accent and restarts dunst itself. It needs a
+# wallpaper to read; without one the accent keeps its current value.
+if command -v udt-accent >/dev/null 2>&1 && [ -e "$HOME/.cache/wal/wpaper" ]; then
+ udt-accent "$HOME/.cache/wal/wpaper" >/dev/null 2>&1 && reloaded="$reloaded accent+dunst"
+fi
+
+# conky has no hot-reload and nothing respawns it, so it is restarted only if
+# it was already running.
+if pgrep -x conky >/dev/null 2>&1; then
+ pkill -x conky 2>/dev/null
+ sleep 0.5
+ (conky -d >/dev/null 2>&1 &)
+ reloaded="$reloaded conky"
+fi
+
+[ -n "$reloaded" ] && echo "reloaded:$reloaded"
+
echo "installed:"
ls -l "$target" "$HOME/bin/udt-accent"