package-helpers-cmxsl/helpers/DATA/finish-install/09trisquel-uefi-splash
2025-09-08 00:20:23 -06:00

67 lines
1.9 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.
#
set -e
# UEFI only in installer env
[ -d /sys/firmware/efi ] || exit 0
# Desktop detection (target): Trisquel desktop metas OR common DMs
if in-target dpkg -s trisquel-desktop-common >/dev/null 2>&1 \
|| in-target dpkg -s triskel >/dev/null 2>&1 \
|| in-target dpkg -s trisquel-gnome >/dev/null 2>&1 \
|| in-target dpkg -s trisquel-mini >/dev/null 2>&1 \
|| in-target dpkg -s lightdm >/dev/null 2>&1 \
|| in-target dpkg -s gdm3 >/dev/null 2>&1 \
|| in-target dpkg -s sddm >/dev/null 2>&1; then
logger -t trisquel-uefi-splash "desktop detected (packages)"
else
logger -t trisquel-uefi-splash "no desktop; skip"
exit 0
fi
# Plymouth present in target?
in-target dpkg -s plymouth >/dev/null 2>&1 || { logger -t trisquel-uefi-splash "no plymouth; skip"; exit 0; }
# Edit /etc/default/grub inside target: ensure GRUB_CMDLINE_LINUX_DEFAULT includes 'splash'
in-target sh -s <<'INCHROOT'
set -e
CFG="/etc/default/grub"
[ -f "$CFG" ] || touch "$CFG"
awk -v key="GRUB_CMDLINE_LINUX_DEFAULT" '
BEGIN{done=0}
# Match the variable (with or without quotes around value)
($0 ~ "^"key"=") {
line = $0
val = $0
sub("^"key"=","",val)
# strip surrounding double quotes if present
if (val ~ /^"/) sub(/^"/,"",val)
if (val ~ /"$/) sub(/"$/,"",val)
# normalize trailing spaces
gsub(/[[:space:]]+$/, "", val)
# check presence of splash
found=0
n=split(val, tok, /[[:space:]]+/)
for (i=1;i<=n;i++) if (tok[i]=="splash") { found=1; break }
if (!found) {
if (val == "") val = "quiet splash"; else val = val " splash"
}
print key "=\"" val "\""
done=1
next
}
{ print }
END{
if (!done) print key "=\"quiet splash\""
}
' "$CFG" > "$CFG.tmp" && mv "$CFG.tmp" "$CFG"
update-grub || true
INCHROOT
logger -t trisquel-uefi-splash "splash ensured; update-grub called"
exit 0