Single-script builder (nosignal.sh) that turns a stock Arch Linux ISO into a fully-offline installer for a themed Hyprland + caelestia (Quickshell) desktop: matching SDDM greeter, Btrfs/Limine bootable snapshots, chwd-style GPU detection, and a curated "os updates" layer (keybind cheatsheet, settings panels, system polish, on-box management skill). See README.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
46 lines
2.1 KiB
Bash
Executable file
46 lines
2.1 KiB
Bash
Executable file
#!/bin/sh
|
|
# install-sddm-theme.sh — SDDM greeter themed to match the desktop (Material
|
|
# palette from the caelestia scheme, the shell's Google Sans Flex font, and
|
|
# the current wallpaper as background). Idempotent. Needs sudo.
|
|
set -eu
|
|
|
|
SRC=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
THEME=/usr/share/sddm/themes/caelestia
|
|
|
|
# 1. Theme files.
|
|
sudo install -d -m 0755 "$THEME" "$THEME/backgrounds"
|
|
sudo install -m 0644 "$SRC/caelestia/Main.qml" "$THEME/Main.qml"
|
|
sudo install -m 0644 "$SRC/caelestia/metadata.desktop" "$THEME/metadata.desktop"
|
|
# Default theme.conf only if none exists yet (sync overwrites it anyway).
|
|
[ -f "$THEME/theme.conf" ] || sudo install -m 0644 "$SRC/caelestia/theme.conf" "$THEME/theme.conf"
|
|
echo ":: installed SDDM theme to $THEME"
|
|
|
|
# 2. Sync script + initial sync from the current scheme/wallpaper (best
|
|
# effort: if there is no scheme yet — e.g. at image build time — the
|
|
# shipped foam-sea defaults in theme.conf apply, but the background still
|
|
# needs to be provided; see README builder notes).
|
|
sudo install -m 0755 "$SRC/sddm-theme-sync" /usr/local/bin/sddm-theme-sync
|
|
if sudo /usr/local/bin/sddm-theme-sync; then
|
|
:
|
|
else
|
|
echo "NOTE: initial sync failed (no caelestia scheme yet?) — shipped defaults kept."
|
|
if [ ! -e "$THEME/backgrounds/wallpaper.png" ] && [ -f "$HOME/Pictures/Wallpapers/nosignal/foam-sea.png" ]; then
|
|
sudo install -m 0644 "$HOME/Pictures/Wallpapers/nosignal/foam-sea.png" "$THEME/backgrounds/wallpaper.png"
|
|
echo ":: seeded foam-sea.png as the greeter background"
|
|
fi
|
|
fi
|
|
|
|
# 3. Point SDDM at the theme (drop-in, doesn't touch 10-nosignal.conf).
|
|
if [ ! -f /etc/sddm.conf.d/20-sddm-theme.conf ]; then
|
|
sudo tee /etc/sddm.conf.d/20-sddm-theme.conf > /dev/null << 'EOF'
|
|
# Greeter theme matching the desktop scheme (sddm-theme component).
|
|
# Remove this file to fall back to SDDM's default greeter.
|
|
[Theme]
|
|
Current=caelestia
|
|
EOF
|
|
echo ":: set SDDM theme to 'caelestia'"
|
|
fi
|
|
|
|
echo "Done. Preview without logging out:"
|
|
echo " sddm-greeter-qt6 --test-mode --theme $THEME"
|
|
echo "Re-sync after a wallpaper change: sudo sddm-theme-sync"
|