2023-01-09 23:48:14 -08:00
|
|
|
{{- if (eq .host.distro.family "linux") -}}
|
|
|
|
#!/usr/bin/env bash
|
2023-04-12 17:36:02 -07:00
|
|
|
# @file Plymouth Theme / Configuration
|
2023-04-11 20:26:25 -07:00
|
|
|
# @brief Configures Plymouth to use a custom theme
|
|
|
|
# @description
|
|
|
|
# This script installs Plymouth and then configures it to use our custom Betelgeuse theme.
|
2023-01-09 23:48:14 -08:00
|
|
|
|
|
|
|
{{ includeTemplate "universal/profile" }}
|
|
|
|
{{ includeTemplate "universal/logg" }}
|
|
|
|
|
|
|
|
### Ensure Plymouth system packages are installed
|
|
|
|
if command -v install-software > /dev/null; then
|
|
|
|
install-software plymouth
|
|
|
|
fi
|
|
|
|
|
2023-02-01 18:58:49 -08:00
|
|
|
### Create /etc/plymouth/plymouthd.conf
|
|
|
|
if [ -f /etc/plymouth/plymouthd.conf ]; then
|
|
|
|
### Back up original plymouthd.conf
|
|
|
|
if [ ! -f /etc/plymouth/plymouthd.conf.bak ]; then
|
|
|
|
logg info 'Backing up /etc/plymouth/plymouthd.conf to /etc/plymouth/plymouthd.conf.bak'
|
|
|
|
sudo cp -f /etc/plymouth/plymouthd.conf /etc/plymouth/plymouthd.conf.bak
|
|
|
|
fi
|
|
|
|
|
|
|
|
### Create new plymouthd.conf
|
|
|
|
logg info 'Populating the /etc/plymouth/plymouthd.conf file'
|
|
|
|
echo "[Daemon]" | sudo tee /etc/plymouth/plymouthd.conf > /dev/null
|
|
|
|
echo "Theme={{ .theme }}" | sudo tee -a /etc/plymouth/plymouthd.conf > /dev/null
|
|
|
|
echo "ShowDelay=1" | sudo tee -a /etc/plymouth/plymouthd.conf > /dev/null
|
|
|
|
fi
|
|
|
|
|
2023-01-09 23:48:14 -08:00
|
|
|
### Apply update-alternatives
|
|
|
|
if command -v update-alternatives > /dev/null; then
|
|
|
|
if [ -f "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth" ]; then
|
|
|
|
sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth" 100
|
|
|
|
logg success 'Installed `default.plymouth`'
|
|
|
|
# Required sometimes
|
|
|
|
sudo update-alternatives --set default.plymouth "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth"
|
|
|
|
logg success 'Set `default.plymouth`'
|
|
|
|
else
|
|
|
|
logg warn "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth does not exist!"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
logg warn '`update-alternatives` is not available'
|
|
|
|
fi
|
|
|
|
|
|
|
|
### Update /etc/plymouth/plymouthd.conf
|
2023-02-01 18:58:49 -08:00
|
|
|
# Replaced by code above
|
|
|
|
# if [ -f /etc/plymouth/plymouthd.conf ]; then
|
|
|
|
# logg info 'Setting ShowDelay=1 in /etc/plymouth/plymouthd.conf'
|
|
|
|
# if cat /etc/plymouth/plymouthd.conf | grep ShowDelay; then
|
|
|
|
# sudo sed -i 's/^ShowDelay=.*/ShowDelay=1/' /etc/plymouth/plymouthd.conf
|
|
|
|
# else
|
|
|
|
# echo 'ShowDelay=1' | sudo tee -a /etc/plymouth/plymouthd.conf > /dev/null
|
|
|
|
# fi
|
|
|
|
# else
|
|
|
|
# logg warn '/etc/plymouth/plymouthd.conf does not exist!'
|
|
|
|
# fi
|
2023-01-09 23:48:14 -08:00
|
|
|
|
2023-02-01 13:03:35 -08:00
|
|
|
### Symlink /usr/local/share/plymouth/themes to /usr/share/plymouth/themes
|
|
|
|
if [ ! -d '/usr/share/plymouth/themes/{{ .theme }}' ]; then
|
|
|
|
logg info 'Symlinking /usr/local/share/plymouth/themes/{{ .theme }} to /usr/share/plymouth/themes/{{ .theme }}'
|
|
|
|
sudo ln -s '/usr/local/share/plymouth/themes/{{ .theme }}' '/usr/share/plymouth/themes/{{ .theme }}'
|
|
|
|
fi
|
|
|
|
|
2023-01-09 23:48:14 -08:00
|
|
|
### Set default Plymouth theme
|
|
|
|
if command -v plymouth-set-default-theme > /dev/null; then
|
|
|
|
sudo plymouth-set-default-theme -R '{{ .theme }}' || EXIT_CODE=$?
|
|
|
|
if [ -n "$EXIT_CODE" ]; then
|
|
|
|
logg warn 'There may have been an issue while setting the Plymouth default theme with `plymouth-set-default-theme`'
|
|
|
|
else
|
|
|
|
logg success 'Set Plymouth default theme with `plymouth-set-default-theme`'
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
logg warn 'Could not apply default Plymouth theme because `plymouth-set-default-theme` is missing'
|
|
|
|
fi
|
|
|
|
|
|
|
|
### Apply update-alternatives (again - required sometimes)
|
|
|
|
if command -v update-alternatives > /dev/null; then
|
|
|
|
if [ -f "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth" ]; then
|
|
|
|
# Required sometimes
|
|
|
|
sudo update-alternatives --set default.plymouth "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth"
|
|
|
|
logg success 'Set `default.plymouth` (second time is required sometimes)'
|
|
|
|
else
|
|
|
|
logg warn "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth does not exist!"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
logg warn '`update-alternatives` is not available'
|
|
|
|
fi
|
|
|
|
|
|
|
|
### Update kernel / initrd images
|
|
|
|
# Set `export DEBUG_MODE=true` to bypass GRUB2 / Plymouth application
|
|
|
|
if [ "$DEBUG_MODE" != 'true' ]; then
|
|
|
|
if command -v update-initramfs > /dev/null; then
|
|
|
|
logg info 'Running `sudo update-initramfs -u`'
|
2023-01-12 17:35:18 -08:00
|
|
|
sudo update-initramfs -u
|
2023-01-09 23:48:14 -08:00
|
|
|
logg success 'Updated kernel / initrd images for Plymouth'
|
|
|
|
elif command -v dracut > /dev/null; then
|
|
|
|
logg info 'Running `sudo dracut --regenerate-all -f`'
|
|
|
|
sudo dracut --regenerate-all -f
|
|
|
|
logg success 'Updated kernel / initrd images for Plymouth'
|
|
|
|
else
|
|
|
|
logg warn 'Unable to update kernel / initrd images because neither `update-initramfs` or `dracut` are available'
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
{{ end -}}
|