--- title: Plymouth Theme / Configuration description: Configures Plymouth to use a custom theme sidebar_label: 61 Plymouth Theme / Configuration slug: /scripts/after/run_onchange_after_61-plymouth-settings.sh.tmpl githubLocation: https://github.com/megabyte-labs/install.doctor/blob/master/home/.chezmoiscripts/universal/run_onchange_after_61-plymouth-settings.sh.tmpl scriptLocation: https://github.com/megabyte-labs/install.doctor/raw/master/home/.chezmoiscripts/universal/run_onchange_after_61-plymouth-settings.sh.tmpl repoLocation: home/.chezmoiscripts/universal/run_onchange_after_61-plymouth-settings.sh.tmpl --- # Plymouth Theme / Configuration Configures Plymouth to use a custom theme ## Overview This script installs Plymouth and then configures it to use our custom Betelgeuse theme. ## Source Code ``` {{- if (eq .host.distro.family "linux") -}} #!/usr/bin/env bash # @file Plymouth Theme / Configuration # @brief Configures Plymouth to use a custom theme # @description # This script installs Plymouth and then configures it to use our custom Betelgeuse theme. {{ includeTemplate "universal/profile" }} {{ includeTemplate "universal/logg" }} ### Ensure Plymouth system packages are installed if command -v install-software > /dev/null; then install-software plymouth fi ### 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 ### 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 # 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 ### 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 ### 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`' sudo update-initramfs -u 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 -}} ```