From 3a0a36827e0a7d64f672a1e22e376ebd842735d2 Mon Sep 17 00:00:00 2001 From: Softer Date: Sun, 28 Jun 2026 20:26:56 +0300 Subject: [PATCH] Warn before enabling Plymouth in the bootloader menu Plymouth is purely cosmetic and a frequent source of boot breakage, most notably a black screen with the NVIDIA driver and a hidden LUKS password prompt. Show a yellow confirmation warning listing these risks when enabling it; when Plymouth is already enabled the user is only changing the theme, so the warning is skipped. Regenerate base.pot for the new strings. --- archinstall/lib/bootloader/bootloader_menu.py | 28 +++++++++++++++++++ archinstall/locales/base.pot | 14 ++++++++++ 2 files changed, 42 insertions(+) diff --git a/archinstall/lib/bootloader/bootloader_menu.py b/archinstall/lib/bootloader/bootloader_menu.py index a985eb90eb..88fe8f7343 100644 --- a/archinstall/lib/bootloader/bootloader_menu.py +++ b/archinstall/lib/bootloader/bootloader_menu.py @@ -130,6 +130,34 @@ async def _select_bootloader(self, preset: Bootloader | None) -> Bootloader | No return bootloader async def _select_plymouth(self, preset: PlymouthTheme | None) -> PlymouthTheme | None: + # Plymouth is purely cosmetic and a frequent source of boot breakage + # (notably with the NVIDIA driver and disk encryption), so confirm before + # enabling it. When it is already enabled the user is only changing the + # theme, so the warning is skipped. + if preset is None: + prompt = ( + '[ansi_bright_yellow]' + + tr('Plymouth adds a cosmetic boot splash but can cause boot problems on some setups:') + + '\n\n • ' + + tr('black screen with the NVIDIA driver') + + '\n • ' + + tr('hidden password prompt with disk encryption (LUKS)') + + '\n\n' + + tr('Would you like to enable it?') + + '[/]\n' + ) + + result = await Confirmation(header=prompt, allow_skip=True, preset=False).show() + + match result.type_: + case ResultType.Skip: + return preset + case ResultType.Selection: + if not result.get_value(): + return preset + case ResultType.Reset: + raise ValueError('Unhandled result type') + return await select_plymouth_theme(preset) async def _select_uki(self, preset: bool) -> bool: diff --git a/archinstall/locales/base.pot b/archinstall/locales/base.pot index 9bfe074dae..a5ffcc7daf 100644 --- a/archinstall/locales/base.pot +++ b/archinstall/locales/base.pot @@ -218,6 +218,20 @@ msgstr "" msgid "Will install to custom location with NVRAM entry" msgstr "" +msgid "" +"Plymouth adds a cosmetic boot splash but can cause boot problems on some " +"setups:" +msgstr "" + +msgid "black screen with the NVIDIA driver" +msgstr "" + +msgid "hidden password prompt with disk encryption (LUKS)" +msgstr "" + +msgid "Would you like to enable it?" +msgstr "" + msgid "Would you like to use unified kernel images?" msgstr ""