1. Introduction
Linux isn’t the most famous operating system (OS) when it comes to eye candy. Still, there are different customization options available that make using Linux distributions a more graphical and animated experience. One such option is changing the boot and shutdown graphics.
In this tutorial, we discuss the Plymouth package for splash screen customization. First, we go through the main idea of Plymouth and its architecture. After that, we install and configure the package. Finally, we go over Plymouth theme installation and customization.
We tested the code in this tutorial on Debian 12 (Bookworm) with GNU Bash 5.2.15. Unless otherwise specified, it should work in most POSIX-compliant environments.
2. Plymouth
The Plymouth package enables the display of graphics when booting or shutting down the system. For both, we can configure images or animations that show up during the relevant process. Essentially, there are several reasons for doing this such as aesthetics and better presentation, e.g., for demonstration purposes.
Notably, Plymouth requires kernel mode setting (KMS), which depends on the specific video driver:
- ATI or AMD: supported by most recent cards and drivers
- NVIDIA: usually supported, but many require manual toggling
- Intel: supported and usually enabled in Xorg
Let’s look at the basic components.
2.1. Architecture
Plymouth comprises the plymouthd daemon and the plymouth client. Usually, plymouthd starts within initrfamfs and stops when a display manager takes over.
Further, applications that want to communicate with the Plymouth daemon leverage the libply.so shared library.
Importantly, we can also use the plymouyth-theme-script package to enable scripting.
How Plymouth runs upon shutdown depends on the specific system.
2.2. Install
Usually, Plymouth is available in the native package manager:
$ apt install plymouth plymouth-themes
In this case, we employ apt.
Alternatively, we can also install plymouth-x11.
2.3. Configure
First, we may need to enable kernel mode setting via the bootloader for Plymouth to work correctly:
$ cat /etc/default/grub
[...]
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1"
[...]
Specifically, for NVIDIA drivers, we add nvidia-drm.modeset=1 as a kernel boot parameter.
In this case, we also see the usual defaults of quiet and splash. Both are important for a non-verbose graphical boot procedure.
In addition, we can use the bootloader configuration to set other parameters like the resolution:
$ cat /etc/default/grub
[...]
GRUB_GFXMODE=1920x1080x32
[...]
Here, we set the resolution as 1920 by 1080 with a color depth of 32.
Finally, since we use GRUB for the examples, we apply the settings:
$ update-grub2
Although Plymouth offers and attempts to read several configuration files upon stratup, some Linux distributions ignore them:
- /etc/plymouth/plymouthd.conf
- /lib/plymouth/plymouthd.defaults
- /lib/plymouth/themes/default.plymouth
At this point, we should be ready to use Plymouth.
2.4. Troubleshooting
In case of issues with the splash screen, aside from verifying the configuration, we can also check the /var/log/boot.log file:
$ cat /var/log/boot.log
Since Plymouth can write its status messages there, we might be able to understand potential problems.
3. Plymouth Themes
The main idea of Plymouth is customization. When it comes to graphics, this is primarily done via themes. Still, we can have themes that incorporate the verbose textual information during boot.
3.1. List
To list the current themes, we can use several options.
One of the more reliable methods is to check the contents of the directories that usually hold Plymouth themes:
- /lib/plymouth/themes
- /usr/share/plymouth/themes
Alternatively, we can use the update-alternatives command:
$ update-alternatives --config default.plymouth
There are 2 choices for the alternative default.plymouth (providing /usr/share/plymouth/themes/default.plymouth).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/share/plymouth/themes/bgrt/bgrt.plymouth 110 auto mode
1 /usr/share/plymouth/themes/bgrt/bgrt.plymouth 110 manual mode
* 2 /usr/share/plymouth/themes/vortex-ubuntu/vortex-ubuntu.plymouth 100 manual mode
Press to keep the current choice[*], or type selection number
Although it also offers a choice to change the default, this command displays all current themes as well as the directory in which they reside.
3.2. Install
Of course, to configure Plymouth themes, we first find and download one locally.
After that, we copy the theme to the respective directory that we saw earlier. For example, let’s assume our theme resides at /usr/share/plymouth/themes/xorpig/xorpig.plymouth.
Now, to –install new themes, we again employ update-alternatives:
$ update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth \
/usr/share/plymouth/themes/xorpig/xorpig.plymouth 100
Naturally, we might also want to modify the Priority and the Status, depending on the context.
Here, we install the /usr/share/plymouth/themes/xorpig/xorpig.plymouth theme as the default.
3.3. Select and Configure
If we want to select another theme at any point, we rerun update-alternatives:
$ update-alternatives --config default.plymouth
There are 2 choices for the alternative default.plymouth (providing /usr/share/plymouth/themes/default.plymouth).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/share/plymouth/themes/bgrt/bgrt.plymouth 110 auto mode
1 /usr/share/plymouth/themes/bgrt/bgrt.plymouth 110 manual mode
* 2 /usr/share/plymouth/themes/vortex-ubuntu/vortex-ubuntu.plymouth 100 manual mode
3 /usr/share/plymouth/themes/xorpig/xorpig.plymouth 120 manual mode
Press to keep the current choice[*], or type selection number
Sometimes, it might be necessary to also update the initramfs after theme selection:
$ update-initramfs -u
In addition, the Debian-specific plymouth-set-default-theme command enables several shortcuts for listing themes and setting defaults.
3.4. Test
Since rebooting might not always be desired, we can instead test the new settings directly:
$ plymouthd && plymouth --show-splash && sleep 5 && killall plymouthd
Thus, we run the daemon, force it to –show-splash, sleep for 5 seconds for observation, and then kill the daemon.
4. Summary
In this article, we explored the Plymouth splash screen customization package and its theming options.
In conclusion, Plymouth is one of the top choices for creating a sleek and professional-looking boot and shutdown screen with different graphics options.