Files
quartz/content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Plymouth.md
Quartz Syncer 125a9b1752
All checks were successful
Build and Deploy Quartz / build (push) Successful in 26s
Published multiple files
2026-02-05 09:53:27 -07:00

2.9 KiB

publish, permalink, title, created, modified, tags, cssclasses
publish permalink title created modified tags cssclasses
true /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Plymouth.md Plymouth 2026-02-05T09:31:46.739-07:00 2026-02-05T09:43:32.507-07:00
boot
splash
luks

Plymouth provides a graphical boot splash screen, including during LUKS password entry.

Installation

sudo pacman -S plymouth

Configuration

mkinitcpio (systemd hooks)

I use systemd-based initramfs hooks. Edit /etc/mkinitcpio.conf:

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:

sudo mkinitcpio -P

Kernel Parameters

Add splash to your bootloader config.

For Limine (/boot/EFI/limine/limine.conf):

cmdline: quiet splash rd.luks.uuid=<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=<UUID> root=/dev/mapper/root ...

Set Theme

# 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

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:

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:

HOOKS=(... sd-vconsole plymouth sd-encrypt ...)

View boot messages

Remove quiet temporarily to see boot messages if Plymouth isn't working.

Resources