package-helpers-cmxsl/helpers/DATA/finish-install/09trisquel-uefi-splash
2025-09-08 01:31:22 -06:00

49 lines
1.7 KiB
Bash
Executable file

#!/bin/sh
# Enable 'splash' only on UEFI desktop installs, and only if Plymouth is present.
# Runs before 10update-initramfs, so we only call update-grub here.
#
# Run only on UEFI installs
[ -d /sys/firmware/efi ] || exit 0
# Require plymouth in the target system (otherwise splash is pointless)
in-target dpkg -s plymouth >/dev/null 2>&1 || exit 0
# Heuristic “desktop present?” check — avoid debconf; rely on packages/DM.
if ! in-target sh -c '
dpkg -s trisquel-desktop-common >/dev/null 2>&1 ||
dpkg -s triskel >/dev/null 2>&1 ||
dpkg -s trisquel-gnome >/dev/null 2>&1 ||
dpkg -s trisquel-mini >/dev/null 2>&1 ||
dpkg -s lightdm >/dev/null 2>&1 ||
dpkg -s gdm3 >/dev/null 2>&1 ||
dpkg -s sddm >/dev/null 2>&1
'; then
# No desktop, then do nothing
exit 0
fi
CFG=/target/etc/default/grub
[ -f "$CFG" ] || exit 0
# If the key is missing entirely, create it with just "splash"
grep -q '^GRUB_CMDLINE_LINUX_DEFAULT=' "$CFG" \
|| echo 'GRUB_CMDLINE_LINUX_DEFAULT="splash"' >> "$CFG"
# Normalize trivial cases:
# - empty quotes > "splash"
# - unquoted value > quote it
sed -i -r \
-e 's/^GRUB_CMDLINE_LINUX_DEFAULT=""$/GRUB_CMDLINE_LINUX_DEFAULT="splash"/' \
-e 's/^(GRUB_CMDLINE_LINUX_DEFAULT)=([^"].*)$/\1="\2"/' \
"$CFG"
# If 'splash' is already present, leave as-is; otherwise append it
grep -q '^GRUB_CMDLINE_LINUX_DEFAULT=.*\bsplash\b' "$CFG" || \
sed -i -r 's/^(GRUB_CMDLINE_LINUX_DEFAULT="[^"]*)"/\1 splash"/' "$CFG"
# Regenerate grub.cfg; never fail finish-install
in-target update-grub >/dev/null 2>&1 || true
# Always succeed so remaining finish-install hooks run
exit 0