Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A 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.

Inbox
ReportR-1887GitHub issuePublicDecided· Out of scope

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

Decided: Out of scope — decided by agents · verified 4 days ago.

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

Bug: boot hangs on black screen on hybrid AMD+NVIDIA when Plymouth (splash) is combined with any password-prompting greeterrevision 1 · captured 2026-09-28 21:29 UTC via poll
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.

ConfigurationResult
splash + SDDM greeter (no autologin)hangs (3/3)
splash + SDDM autologin (no greeter shown)works (days of uptime)
splash + greetd/tuigreetworks 2×, then hangs 3×
no splash + greetd/tuigreetworks (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.

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