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 is set even when the NVIDIA GPU drives no output, stalling video playback on hybrid laptops
Reported by sl4ppy · filed Sep 6, 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
Reopened with a confirmed single-variable reproduction. An earlier revision of this issue was withdrawn because I had asserted a cause I had not yet demonstrated; that evidence now exists and is below.
Problem
default/hypr/nvidia.lua sets LIBVA_DRIVER_NAME=nvidia whenever an NVIDIA GPU
with GSP is detected:
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")The condition tests only whether such a GPU is present, never whether it
drives any output. On a hybrid laptop whose panel hangs off the iGPU, this
forces browsers onto the NVIDIA VA-API path while compositing and scanout happen
on the other GPU.
On this Razer Blade the NVIDIA dGPU drives nothing:
card1-DP-1 [NVIDIA] status=disconnected enabled=disabled
card1-DP-2 [NVIDIA] status=disconnected enabled=disabled
card1-HDMI-A-1 [NVIDIA] status=disconnected enabled=disabled
card2-eDP-1 [AMD] status=connected enabled=enabledSymptom
Severe scroll stalling and jitter in Chrome on video-heavy pages — reddit.com
main feed, espn.com. The page hitches hard enough to feel stuck. Static pages
are perfectly smooth, which makes this look like a browser or mesa regression
and sends you chasing the wrong thing.
Reproduction
Changing only LIBVA_DRIVER_NAME and restarting Chrome, with nothing else
touched:
LIBVA_DRIVER_NAME=nvidia (Omarchy default) | LIBVA_DRIVER_NAME=radeonsi | |
|---|---|---|
nvidia_drv_video.so in GPU process | loaded | not loaded |
/dev/nvidia0 fds held by GPU process | 23 | 0 |
| scrolling reddit/espn | stalls badly | smooth |
Measured with:
GP=$(pgrep -f 'type=gpu-process')
grep -o '/usr/lib/dri/[a-z0-9_]*_drv_video\.so' /proc/$GP/maps | sort -u
ls -l /proc/$GP/fd | grep -oE 'renderD[0-9]+|nvidia[a-z0-9]*' | sort | uniq -cChrome self-selects the AMD node either way
(--render-node-override=/dev/dri/renderD129), so with the default it is
compositing on AMD while decoding on NVIDIA.
Worth noting: switching to radeonsi does not cost hardware decode — it
gains it. With radeonsi set, Chrome constructs a VaapiVideoDecoder for h264
and vp9 and decodes on the iGPU:
media/gpu/vaapi/vaapi_video_decoder.cc:136] VaapiVideoDecoder():
media/gpu/chromeos/video_decoder_pipeline.cc:1225] PickDecoderOutputFormat():
Initializing frame pool with up to 25 VideoFrames. No ImageProcessor needed.Measured over 10s of 720p playback: 660 ms CPU with hardware decode vs 1560 ms
with --disable-accelerated-video-decode. (AV1 is unsupported by this VCN 2.2
engine — Video configuration is not supported — and falls back to software
under either setting, so it is unaffected either way.)
So the current default is strictly worse: it engages a decode path on a GPU that
drives no display, and gives up working iGPU decode to do it.
Suggested fix
Gate the LIBVA_DRIVER_NAME assignment on the NVIDIA GPU actually driving a
connected output, rather than merely being present — e.g. check for anyconnected connector under the NVIDIA card in /sys/class/drm/. That reads
cached sysfs only, so it respects the constraint already documented in the
comment above this block about lspci waking a runtime-suspended GPU.
NVD_BACKEND and __GLX_VENDOR_LIBRARY_NAME appear harmless here; only the
VA-API variable caused trouble.
Note for anyone overriding this locally
hl.env in ~/.config/hypr/hyprland.lua looks like it works but does nothing
until you log out. Hyprland pushes hl.env into the systemd user environment at
session start, and hyprctl reload does not refresh it, so a reloaded config
leaves the old value in place for uwsm-launched apps
(app-com.google.Chrome-<pid>.scope, parent systemd --user). Either re-login,
or set it in ~/.config/environment.d/.
System details
- Omarchy 4.0.2-1
- Kernel 7.1.9-arch1-2 (Arch), Hyprland on Wayland
- GPU 0: NVIDIA GA104M [RTX 3080 Mobile] —
nvidia-open-dkms610.57.04,card1/renderD128 - GPU 1: AMD Cezanne [Radeon Vega] —
amdgpu,card2/renderD129, driveseDP-1 - mesa 1:26.2.1-1, vulkan-radeon 1:26.2.1-1
- Google Chrome 152.0.7977.82
View raw text
> Reopened with a confirmed single-variable reproduction. An earlier revision of
> this issue was withdrawn because I had asserted a cause I had not yet
> demonstrated; that evidence now exists and is below.
## Problem
`default/hypr/nvidia.lua` sets `LIBVA_DRIVER_NAME=nvidia` whenever an NVIDIA GPU
with GSP is detected:
```lua
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")
```
The condition tests only whether such a GPU is *present*, never whether it
drives any output. On a hybrid laptop whose panel hangs off the iGPU, this
forces browsers onto the NVIDIA VA-API path while compositing and scanout happen
on the other GPU.
On this Razer Blade the NVIDIA dGPU drives **nothing**:
```
card1-DP-1 [NVIDIA] status=disconnected enabled=disabled
card1-DP-2 [NVIDIA] status=disconnected enabled=disabled
card1-HDMI-A-1 [NVIDIA] status=disconnected enabled=disabled
card2-eDP-1 [AMD] status=connected enabled=enabled
```
## Symptom
Severe scroll stalling and jitter in Chrome on video-heavy pages — reddit.com
main feed, espn.com. The page hitches hard enough to feel stuck. Static pages
are perfectly smooth, which makes this look like a browser or mesa regression
and sends you chasing the wrong thing.
## Reproduction
Changing only `LIBVA_DRIVER_NAME` and restarting Chrome, with nothing else
touched:
| | `LIBVA_DRIVER_NAME=nvidia` (Omarchy default) | `LIBVA_DRIVER_NAME=radeonsi` |
|---|---|---|
| `nvidia_drv_video.so` in GPU process | loaded | not loaded |
| `/dev/nvidia0` fds held by GPU process | 23 | 0 |
| scrolling reddit/espn | stalls badly | smooth |
Measured with:
```bash
GP=$(pgrep -f 'type=gpu-process')
grep -o '/usr/lib/dri/[a-z0-9_]*_drv_video\.so' /proc/$GP/maps | sort -u
ls -l /proc/$GP/fd | grep -oE 'renderD[0-9]+|nvidia[a-z0-9]*' | sort | uniq -c
```
Chrome self-selects the AMD node either way
(`--render-node-override=/dev/dri/renderD129`), so with the default it is
compositing on AMD while decoding on NVIDIA.
Worth noting: switching to `radeonsi` does **not** cost hardware decode — it
gains it. With `radeonsi` set, Chrome constructs a `VaapiVideoDecoder` for h264
and vp9 and decodes on the iGPU:
```
media/gpu/vaapi/vaapi_video_decoder.cc:136] VaapiVideoDecoder():
media/gpu/chromeos/video_decoder_pipeline.cc:1225] PickDecoderOutputFormat():
Initializing frame pool with up to 25 VideoFrames. No ImageProcessor needed.
```
Measured over 10s of 720p playback: 660 ms CPU with hardware decode vs 1560 ms
with `--disable-accelerated-video-decode`. (AV1 is unsupported by this VCN 2.2
engine — `Video configuration is not supported` — and falls back to software
under either setting, so it is unaffected either way.)
So the current default is strictly worse: it engages a decode path on a GPU that
drives no display, and gives up working iGPU decode to do it.
## Suggested fix
Gate the `LIBVA_DRIVER_NAME` assignment on the NVIDIA GPU actually driving a
connected output, rather than merely being present — e.g. check for any
`connected` connector under the NVIDIA card in `/sys/class/drm/`. That reads
cached sysfs only, so it respects the constraint already documented in the
comment above this block about `lspci` waking a runtime-suspended GPU.
`NVD_BACKEND` and `__GLX_VENDOR_LIBRARY_NAME` appear harmless here; only the
VA-API variable caused trouble.
## Note for anyone overriding this locally
`hl.env` in `~/.config/hypr/hyprland.lua` looks like it works but does nothing
until you log out. Hyprland pushes `hl.env` into the systemd user environment at
session start, and `hyprctl reload` does not refresh it, so a reloaded config
leaves the old value in place for uwsm-launched apps
(`app-com.google.Chrome-<pid>.scope`, parent `systemd --user`). Either re-login,
or set it in `~/.config/environment.d/`.
## System details
- Omarchy 4.0.2-1
- Kernel 7.1.9-arch1-2 (Arch), Hyprland on Wayland
- GPU 0: NVIDIA GA104M [RTX 3080 Mobile] — `nvidia-open-dkms` 610.57.04, `card1` / `renderD128`
- GPU 1: AMD Cezanne [Radeon Vega] — `amdgpu`, `card2` / `renderD129`, drives `eDP-1`
- mesa 1:26.2.1-1, vulkan-radeon 1:26.2.1-1
- Google Chrome 152.0.7977.82
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.
No decision has been recorded yet.