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>
40 lines
1.7 KiB
Bash
Executable file
40 lines
1.7 KiB
Bash
Executable file
#!/bin/sh
|
|
# install-gamemode-toggle-deckshift.sh — idempotent. REQUIRES ROOT (writes the
|
|
# package-owned shell file under /etc/xdg).
|
|
#
|
|
# Repoints the utilities "Game Mode" gamepad toggle to launch the DeckShift gaming
|
|
# session if DeckShift is installed; otherwise it does nothing. (Was caelestia's
|
|
# cosmetic Game Mode toggle — disable animations/blur/gaps.) See README.
|
|
#
|
|
# Toggles.qml is shipped by the `nosignal-shell` package (baked into the fork). The
|
|
# REAL fix is in the fork source — this fallback patch is for already-installed boxes
|
|
# and is reverted by the next nosignal-shell upgrade (which carries the fixed file).
|
|
# The builder bakes it into the fork and sets NOSIGNAL_SKIP_SHELL_PATCH to skip this.
|
|
set -eu
|
|
|
|
SELF_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
TARGET=/etc/xdg/quickshell/caelestia/modules/utilities/cards/Toggles.qml
|
|
|
|
if [ -n "${NOSIGNAL_SKIP_SHELL_PATCH:-}" ]; then
|
|
echo ":: skipping fallback shell patch (NOSIGNAL_SKIP_SHELL_PATCH — fork bakes the fix)"
|
|
exit 0
|
|
fi
|
|
|
|
[ "$(id -u)" -eq 0 ] || { echo "must run as root (writes $TARGET)" >&2; exit 1; }
|
|
|
|
if [ ! -f "$TARGET" ]; then
|
|
echo "WARNING: $TARGET not present — nosignal-shell not installed here; nothing to patch." >&2
|
|
exit 0
|
|
fi
|
|
|
|
if cmp -s "$SELF_DIR/Toggles.qml" "$TARGET"; then
|
|
echo ":: Game Mode toggle already up to date — nothing to do."
|
|
exit 0
|
|
fi
|
|
|
|
# preserve the ORIGINAL (pre-NoSignal) file only on the first patch, so re-running
|
|
# with a newer Toggles.qml (e.g. the hardened version) doesn't overwrite the backup
|
|
[ -f "$TARGET.prefix.bak" ] || cp -a "$TARGET" "$TARGET.prefix.bak"
|
|
install -m 0644 "$SELF_DIR/Toggles.qml" "$TARGET"
|
|
echo ":: patched $TARGET (backup: $TARGET.prefix.bak)"
|
|
echo ":: restart the shell to apply: Ctrl+Super+Alt+R, or log out/in."
|