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.
LIBVA_DRIVER_NAME=nvidia forced on hybrid laptops where the panel is driven by the iGPU — video plays audio with a black picture
Reported by elliott-ringasund · filed Sep 12, 2026Closed upstream on 2026-09-20 by bjarneo via an automated message, as a duplicate of #8215 (R-1472). GitHub close reason: completed.
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?
- Not yet mapped to any requirement or component.
- 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?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
What happens
On a hybrid laptop whose internal panel is driven by the AMD iGPU, video in
Chromium plays audio with a completely black picture. The page itself renders
perfectly — thumbnails, avatars, comments — only the video frame stays black and
the player never leaves 0:00.
Cause
default/hypr/nvidia.lua sets the VA-API driver purely on "is an NVIDIA GPU
present":
if o.shell_succeeds(o.shell_quote(nvidia)) then
if o.shell_succeeds(o.shell_quote(nvidia_gsp)) then
hl.env("NVD_BACKEND", "direct")
hl.env("LIBVA_DRIVER_NAME", "nvidia")
hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")It does not check which GPU is actually driving the display. On this machine
the eDP panel hangs off the AMD Cezanne iGPU (card2 → amdgpu), so forcingLIBVA_DRIVER_NAME=nvidia points hardware video decode at a GPU that isn't
scanning out, through the libva-nvidia-driver shim, which fails here.
Audio is decoded on a separate CPU path, which is why sound is unaffected and
the symptom looks like a rendering bug rather than a decode one.
This should affect any NVIDIA Optimus / hybrid laptop where the internal panel
is wired to the integrated GPU — a large share of gaming laptops.
Reproduce
On a hybrid laptop with the panel on the iGPU, open any YouTube video in
Chromium. Audio plays, picture is black.
Evidence
VA-API initialises on the AMD render node and fails on the NVIDIA one:
$ LIBVA_DRIVER_NAME=radeonsi ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD129 ...
(succeeds)
$ LIBVA_DRIVER_NAME=nvidia ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128 ...
[h264_vaapi] No usable encoding entrypoint found for profile VAProfileH264...Which GPU drives the panel:
$ basename $(readlink -f /sys/class/drm/card2/device/driver)
amdgpu
$ cat /sys/class/drm/card2-eDP-1/status
connectedA/B test, same video file, same machine, isolated Chromium profiles:
LIBVA_DRIVER_NAME=nvidia→ blank window, no pictureLIBVA_DRIVER_NAME=radeonsi→ renders correctly
Workaround
Override in user config, loaded after the Omarchy defaults:
-- ~/.config/hypr/hyprland.lua
hl.env("LIBVA_DRIVER_NAME", "radeonsi")Suggested fix
Gate the LIBVA_DRIVER_NAME line on the NVIDIA GPU actually driving a connected
output, rather than merely being present. The existing detectors already read
cached sysfs IDs; the connector's driver can be read the same way by walking/sys/class/drm/card*-*/status and resolving each card's driver. Where the
panel is on the iGPU, either leave LIBVA_DRIVER_NAME unset or set it to the
iGPU's driver.
Note that __GLX_VENDOR_LIBRARY_NAME and NVD_BACKEND are a separate question
— GL rendering on the dGPU is reasonable on these machines. It is specifically
the VA-API decode path that needs to follow the display.
System
| Omarchy | 4.0.3-1 |
| Kernel | 7.2.3-arch1-3 |
| Machine | ASUS ROG Zephyrus G14 GA401QC |
| CPU | AMD Ryzen 7 5800HS with Radeon Graphics |
| GPUs | NVIDIA RTX 3050 Mobile (dGPU) + AMD Cezanne (iGPU, drives panel) |
| Hyprland | 0.56.2 |
| NVIDIA driver | 610.57.04 |
| mesa | 1:26.2.2-1 |
| libva-nvidia-driver | 0.0.18-1 |
View raw text
## What happens
On a hybrid laptop whose internal panel is driven by the **AMD iGPU**, video in
Chromium plays audio with a completely black picture. The page itself renders
perfectly — thumbnails, avatars, comments — only the video frame stays black and
the player never leaves 0:00.
## Cause
`default/hypr/nvidia.lua` sets the VA-API driver purely on "is an NVIDIA GPU
present":
```lua
if o.shell_succeeds(o.shell_quote(nvidia)) then
if o.shell_succeeds(o.shell_quote(nvidia_gsp)) then
hl.env("NVD_BACKEND", "direct")
hl.env("LIBVA_DRIVER_NAME", "nvidia")
hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
```
It does not check **which GPU is actually driving the display**. On this machine
the eDP panel hangs off the AMD Cezanne iGPU (`card2` → `amdgpu`), so forcing
`LIBVA_DRIVER_NAME=nvidia` points hardware video decode at a GPU that isn't
scanning out, through the `libva-nvidia-driver` shim, which fails here.
Audio is decoded on a separate CPU path, which is why sound is unaffected and
the symptom looks like a rendering bug rather than a decode one.
This should affect any NVIDIA Optimus / hybrid laptop where the internal panel
is wired to the integrated GPU — a large share of gaming laptops.
## Reproduce
On a hybrid laptop with the panel on the iGPU, open any YouTube video in
Chromium. Audio plays, picture is black.
## Evidence
VA-API initialises on the AMD render node and fails on the NVIDIA one:
```
$ LIBVA_DRIVER_NAME=radeonsi ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD129 ...
(succeeds)
$ LIBVA_DRIVER_NAME=nvidia ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128 ...
[h264_vaapi] No usable encoding entrypoint found for profile VAProfileH264...
```
Which GPU drives the panel:
```
$ basename $(readlink -f /sys/class/drm/card2/device/driver)
amdgpu
$ cat /sys/class/drm/card2-eDP-1/status
connected
```
A/B test, same video file, same machine, isolated Chromium profiles:
- `LIBVA_DRIVER_NAME=nvidia` → blank window, no picture
- `LIBVA_DRIVER_NAME=radeonsi` → renders correctly
## Workaround
Override in user config, loaded after the Omarchy defaults:
```lua
-- ~/.config/hypr/hyprland.lua
hl.env("LIBVA_DRIVER_NAME", "radeonsi")
```
## Suggested fix
Gate the `LIBVA_DRIVER_NAME` line on the NVIDIA GPU actually driving a connected
output, rather than merely being present. The existing detectors already read
cached sysfs IDs; the connector's driver can be read the same way by walking
`/sys/class/drm/card*-*/status` and resolving each card's driver. Where the
panel is on the iGPU, either leave `LIBVA_DRIVER_NAME` unset or set it to the
iGPU's driver.
Note that `__GLX_VENDOR_LIBRARY_NAME` and `NVD_BACKEND` are a separate question
— GL rendering on the dGPU is reasonable on these machines. It is specifically
the VA-API decode path that needs to follow the display.
## System
| | |
|---|---|
| Omarchy | 4.0.3-1 |
| Kernel | 7.2.3-arch1-3 |
| Machine | ASUS ROG Zephyrus G14 GA401QC |
| CPU | AMD Ryzen 7 5800HS with Radeon Graphics |
| GPUs | NVIDIA RTX 3050 Mobile (dGPU) + AMD Cezanne (iGPU, drives panel) |
| Hyprland | 0.56.2 |
| NVIDIA driver | 610.57.04 |
| mesa | 1:26.2.2-1 |
| libva-nvidia-driver | 0.0.18-1 |
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
- Fixed bypr/9483· confirmed
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.
No decision has been recorded yet.