Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
Bug: boot hangs on black screen on hybrid AMD+NVIDIA when Plymouth (splash) is combined with any password-prompting greeter
Reported by MikeRR11 · filed Aug 2, 2026 · open at source
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- AreaOutside the audited area· Decided by agents · verified
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Decided by agents and verified by a second, independent agent — see the decision.
Original report
Update (Aug 2, 2026): the original diagnosis in this report was wrong. The SDDM greeter is not the cause. See "Root cause" below — the real trigger is Plymouth (splash) coexisting with any greeter that shows a password prompt. Leaving the original report intact for context.Symptom
On a hybrid AMD+NVIDIA laptop, disabling SDDM autologin makes the system hang on
a black screen at boot. Limine loads fine, the Omarchy Plymouth logo appears, and
then nothing — no greeter, no TTY, no recovery. Only a forced power-off works.
With autologin enabled, the machine boots normally. Both linux-cachyos andlinux-cachyos-lts are affected identically.
Original hypothesis (incorrect)
I initially assumed the SDDM Wayland greeter's nested Hyprland instance
(CompositorCommand = start-hyprland -- --config /usr/share/sddm/hyprland.conf)
was failing to initialize graphics on the hybrid GPU, and that/usr/share/sddm/hyprland.conf was missing GPU environment variables.
Adding env = LIBVA_DRIVER_NAME,nvidia and env = __GLX_VENDOR_LIBRARY_NAME,nvidia
to that file did not fix it. That was the first sign the hypothesis was wrong.
Root cause
The hang requires two conditions at once: the splash kernel parameter
(Plymouth) and a greeter displaying a password prompt. Remove either one and
the system boots reliably.
| Configuration | Result |
|---|---|
splash + SDDM greeter (no autologin) | hangs (3/3) |
splash + SDDM autologin (no greeter shown) | works (days of uptime) |
splash + greetd/tuigreet | works 2×, then hangs 3× |
no splash + greetd/tuigreet | works (4/4) |
no splash + SDDM greeter (no autologin) | works ✅ |
The last row is decisive: it is the exact configuration that hung three times.
With splash removed, the SDDM graphical greeter starts and prompts for a
password normally.
This rules out two things:
- Not SDDM-specific.
greetd+tuigreetis a pure-TTY greeter with no
nested compositor at all, and it hung the same way with splash enabled.
- Not the nested Hyprland instance. Every SDDM test in the original report
ran with splash enabled; SDDM was never tested without it.
Why it happens
On this hybrid setup the kernel registers three DRM devices in sequence
immediately before Plymouth starts:
[drm] Initialized simpledrm 1.0.0 for simple-framebuffer.0 on minor 0
[drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver
nvidia 0000:01:00.0: [drm] Cannot find any crtc or sizes <-- no display attached
[drm] Initialized amdgpu 3.64.0 for 0000:c4:00.0 on minor 2
fbcon: amdgpudrmfb (fb0) is primary deviceThe dGPU has no panel wired to it, so it exposes no CRTC. The framebuffer handoff
from Plymouth to the greeter is an intermittent race, which matches the observed
pattern: two clean boots, then three failures within 25 minutes, on both kernels.
In every hung boot the journal stops about one second in, right afterStarted Show Plymouth Boot Screen — long before any display manager is reached.
Workaround
Remove splash from the kernel command line.
Important for Limine users: editing /boot/limine.conf directly is not
enough. limine-update and limine-mkinitcpio regenerate the cmdline: lines
from /etc/default/limine on every kernel update, silently restoring splash.
This caught me once — the fix appeared to work, then reverted. Edit theKERNEL_CMDLINE[default] line in /etc/default/limine, then runsudo limine-update.
Also worth checking: limine-update warns about "conflicting config" files.
There can be up to four copies of limine.conf — /boot/, /boot/EFI/limine/,/boot/EFI/BOOT/ and /boot/limine/ — and Limine boots whichever it finds
first in its search order. Verify they all match with sha256sum after any
change; in my case the fourth copy was stale and still contained splash.
Environment
- Acer Nitro ANV14-61 (BIOS V1.06), Ryzen 7 8845HS
- AMD Radeon 780M (iGPU, drives the built-in panel) + NVIDIA RTX 4050 Max-Q
(dGPU, no display attached)
- CachyOS + Omarchy, Hyprland 0.56.0, Limine bootloader
- linux-cachyos 7.1.5 and linux-cachyos-lts 6.18.40 — both affected identically
Suggested title change
Current title mentions the SDDM greeter, which is misleading. Something like
*"Boot hangs on black screen on hybrid AMD+NVIDIA when Plymouth (splash) is
combined with any password-prompting greeter"* would reflect the actual cause.
View raw text
> **Update (Aug 2, 2026):** the original diagnosis in this report was wrong. The > SDDM greeter is not the cause. See "Root cause" below — the real trigger is > Plymouth (`splash`) coexisting with any greeter that shows a password prompt. > Leaving the original report intact for context. ## Symptom On a hybrid AMD+NVIDIA laptop, disabling SDDM autologin makes the system hang on a black screen at boot. Limine loads fine, the Omarchy Plymouth logo appears, and then nothing — no greeter, no TTY, no recovery. Only a forced power-off works. With autologin enabled, the machine boots normally. Both `linux-cachyos` and `linux-cachyos-lts` are affected identically. ## Original hypothesis (incorrect) I initially assumed the SDDM Wayland greeter's nested Hyprland instance (`CompositorCommand = start-hyprland -- --config /usr/share/sddm/hyprland.conf`) was failing to initialize graphics on the hybrid GPU, and that `/usr/share/sddm/hyprland.conf` was missing GPU environment variables. Adding `env = LIBVA_DRIVER_NAME,nvidia` and `env = __GLX_VENDOR_LIBRARY_NAME,nvidia` to that file **did not fix it**. That was the first sign the hypothesis was wrong. ## Root cause The hang requires **two** conditions at once: the `splash` kernel parameter (Plymouth) **and** a greeter displaying a password prompt. Remove either one and the system boots reliably. | Configuration | Result | |---|---| | `splash` + SDDM greeter (no autologin) | **hangs** (3/3) | | `splash` + SDDM autologin (no greeter shown) | works (days of uptime) | | `splash` + greetd/tuigreet | works 2×, then **hangs** 3× | | no `splash` + greetd/tuigreet | works (4/4) | | no `splash` + SDDM greeter (no autologin) | **works** ✅ | The last row is decisive: it is the exact configuration that hung three times. With `splash` removed, the SDDM graphical greeter starts and prompts for a password normally. This rules out two things: - **Not SDDM-specific.** `greetd` + `tuigreet` is a pure-TTY greeter with no nested compositor at all, and it hung the same way with `splash` enabled. - **Not the nested Hyprland instance.** Every SDDM test in the original report ran with `splash` enabled; SDDM was never tested without it. ## Why it happens On this hybrid setup the kernel registers three DRM devices in sequence immediately before Plymouth starts: ``` [drm] Initialized simpledrm 1.0.0 for simple-framebuffer.0 on minor 0 [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver nvidia 0000:01:00.0: [drm] Cannot find any crtc or sizes <-- no display attached [drm] Initialized amdgpu 3.64.0 for 0000:c4:00.0 on minor 2 fbcon: amdgpudrmfb (fb0) is primary device ``` The dGPU has no panel wired to it, so it exposes no CRTC. The framebuffer handoff from Plymouth to the greeter is an intermittent race, which matches the observed pattern: two clean boots, then three failures within 25 minutes, on both kernels. In every hung boot the journal stops about one second in, right after `Started Show Plymouth Boot Screen` — long before any display manager is reached. ## Workaround Remove `splash` from the kernel command line. **Important for Limine users:** editing `/boot/limine.conf` directly is not enough. `limine-update` and `limine-mkinitcpio` regenerate the `cmdline:` lines from `/etc/default/limine` on every kernel update, silently restoring `splash`. This caught me once — the fix appeared to work, then reverted. Edit the `KERNEL_CMDLINE[default]` line in `/etc/default/limine`, then run `sudo limine-update`. Also worth checking: `limine-update` warns about "conflicting config" files. There can be up to four copies of `limine.conf` — `/boot/`, `/boot/EFI/limine/`, `/boot/EFI/BOOT/` and `/boot/limine/` — and Limine boots whichever it finds first in its search order. Verify they all match with `sha256sum` after any change; in my case the fourth copy was stale and still contained `splash`. ## Environment - Acer Nitro ANV14-61 (BIOS V1.06), Ryzen 7 8845HS - AMD Radeon 780M (iGPU, drives the built-in panel) + NVIDIA RTX 4050 Max-Q (dGPU, no display attached) - CachyOS + Omarchy, Hyprland 0.56.0, Limine bootloader - `linux-cachyos` 7.1.5 and `linux-cachyos-lts` 6.18.40 — both affected identically ## Suggested title change Current title mentions the SDDM greeter, which is misleading. Something like *"Boot hangs on black screen on hybrid AMD+NVIDIA when Plymouth (`splash`) is combined with any password-prompting greeter"* would reflect the actual cause.
Validation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
Not linked to any known issue, other report or change yet.
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
- Out of scopeDecided by agents · verified · 2026-10-09 04:00 UTC