--- publish: true permalink: /os/plymouth title: Plymouth created: 2026-02-05T09:31:46.739-07:00 modified: 2026-02-05T12:18:10.585-07:00 tags: - boot - splash - luks cssclasses: "" --- Plymouth provides a graphical boot splash screen, including during LUKS password entry. ## Installation ```bash sudo pacman -S plymouth ``` ## Configuration ### mkinitcpio (systemd hooks) I use systemd-based initramfs hooks. Edit `/etc/mkinitcpio.conf`: ```bash HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole plymouth sd-encrypt block filesystems resume fsck) ``` Key points: - Using `systemd` not `udev` - Using `sd-vconsole` not `keymap consolefont` - Using `sd-encrypt` not `encrypt` - `plymouth` comes **after** `sd-vconsole` and **before** `sd-encrypt` Regenerate initramfs: ```bash sudo mkinitcpio -P ``` ### Kernel Parameters Add `splash` to your bootloader config. **For Limine** (`/boot/EFI/limine/limine.conf`): ``` cmdline: quiet splash rd.luks.uuid= root=/dev/mapper/root ... ``` > **Note:** With systemd hooks, use `rd.luks.uuid=` instead of `cryptdevice=` **For systemd-boot** (`/boot/loader/entries/arch.conf`): ``` options quiet splash rd.luks.uuid= root=/dev/mapper/root ... ``` ### Set Theme ```bash # List available themes plymouth-set-default-theme -l # Set theme (and rebuild initramfs) sudo plymouth-set-default-theme -R spinner ``` Popular themes: - `spinner` — Simple spinner (default) - `bgrt` — Uses manufacturer logo from ACPI - `fade-in` — Fading star field ### Install more themes ```bash paru -S plymouth-theme-arch-logo paru -S plymouth-theme-monoarch ``` ## LUKS Integration Plymouth displays the LUKS password prompt graphically instead of the text console. For this to work with systemd hooks: 1. `plymouth` hook must be before `sd-encrypt` hook 2. `splash` must be in kernel parameters 3. Use `rd.luks.uuid=` for LUKS device specification ## systemd vs udev Hooks | udev-based | systemd-based | |------------|---------------| | `udev` | `systemd` | | `keymap consolefont` | `sd-vconsole` | | `encrypt` | `sd-encrypt` | | `cryptdevice=UUID=...:name` | `rd.luks.uuid=...` | ## Testing Test without rebooting: ```bash sudo plymouthd sudo plymouth --show-splash # Press Enter to dismiss sudo plymouth quit ``` ## Troubleshooting ### No splash on boot 1. Verify `splash` is in kernel params 2. Check hook order in mkinitcpio.conf 3. Regenerate initramfs: `sudo mkinitcpio -P` ### LUKS prompt is text-only The `plymouth` hook must come **before** `sd-encrypt`: ```bash HOOKS=(... sd-vconsole plymouth sd-encrypt ...) ``` ### View boot messages Remove `quiet` temporarily to see boot messages if Plymouth isn't working. ## Resources - Arch Wiki: https://wiki.archlinux.org/title/Plymouth - Arch Wiki (mkinitcpio systemd): https://wiki.archlinux.org/title/Mkinitcpio#Common_hooks