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-328GitHub issuePublicDecided· Out of scope

Hybrid Intel+NVIDIA: the shell keeps the dGPU powered (quickshell holds 19 NVIDIA handles via QtMultimedia probing) and blocks runtime suspend

Reported by rifzankhan · filed Sep 19, 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

Hybrid Intel+NVIDIA: the shell keeps the dGPU powered (quickshell holds 19 NVIDIA handles via QtMultimedia probing) and blocks runtime suspendrevision 1 · captured 2026-09-28 21:23 UTC via poll

Related to #8989, #9236 and #1776, but a distinct blocker that persists even when no application is using the dGPU.

Machine: MSI Katana 15 B13VFK (Intel iGPU + RTX 4060, NVIDIA 615.71.09), Omarchy 4.0.4, Hyprland 0.56.2, quickshell 0.3.1. Session renders on the iGPU.

Problem
With a full desktop running and nvidia-smi showing no processes, the dGPU sits at power/runtime_status=active ("Video Memory: Active"). fuser -v /dev/nvidia0 /dev/nvidiactl shows only two holders: Hyprland (5 handles) and the Omarchy shell (19 handles). Stopping the shell alone drops the GPU to suspended / "Video Memory: Off" within ~15 s, so the shell is the effective blocker here. (Hyprland's own handles alone do not block suspend on this machine.)

The shell's 19 handles: /dev/nvidia0 x11, /dev/nvidiactl x5, /dev/nvidia-uvm x2, /dev/nvidia-modeset x1, renderD128 x2. They are opened at shell start by Qt Multimedia's FFmpeg backend enumerating hardware encode/decode devices, triggered by the lock-explorer plugin constructing its unlock-clip MediaPlayer eagerly. Repro: a disposable quickshell with a minimal config plus one MediaPlayer {} reproduces all 19 handles; with no MediaPlayer it opens none. (Reported to the plugin as well.)

Verified shell-side fix
With both of these set in the session environment, the shell starts with 0 NVIDIA handles and the GPU suspends within ~15 s:
QT_FFMPEG_ENCODING_HW_DEVICE_TYPES=,
QT_FFMPEG_DECODING_HW_DEVICE_TYPES=,
(Empty lists disable Qt's FFmpeg hardware backends; affects Qt apps only, video falls back to software.) Suggest setting them for the shell by default, or coordinating with lock-explorer on a lazy QtMultimedia load.

Why it matters
In related reports this state costs 15-20 W of wake drain and roughly halves battery life. Happy to collect more evidence.

View raw text
Related to #8989, #9236 and #1776, but a distinct blocker that persists even when no application is using the dGPU.

**Machine**: MSI Katana 15 B13VFK (Intel iGPU + RTX 4060, NVIDIA 615.71.09), Omarchy 4.0.4, Hyprland 0.56.2, quickshell 0.3.1. Session renders on the iGPU.

**Problem**
With a full desktop running and `nvidia-smi` showing no processes, the dGPU sits at `power/runtime_status=active` ("Video Memory: Active"). `fuser -v /dev/nvidia0 /dev/nvidiactl` shows only two holders: Hyprland (5 handles) and the Omarchy shell (19 handles). Stopping the shell alone drops the GPU to `suspended` / "Video Memory: Off" within ~15 s, so the shell is the effective blocker here. (Hyprland's own handles alone do not block suspend on this machine.)

The shell's 19 handles: `/dev/nvidia0` x11, `/dev/nvidiactl` x5, `/dev/nvidia-uvm` x2, `/dev/nvidia-modeset` x1, `renderD128` x2. They are opened at shell start by Qt Multimedia's FFmpeg backend enumerating hardware encode/decode devices, triggered by the lock-explorer plugin constructing its unlock-clip `MediaPlayer` eagerly. Repro: a disposable quickshell with a minimal config plus one `MediaPlayer {}` reproduces all 19 handles; with no MediaPlayer it opens none. (Reported to the plugin as well.)

**Verified shell-side fix**
With both of these set in the session environment, the shell starts with 0 NVIDIA handles and the GPU suspends within ~15 s:
`QT_FFMPEG_ENCODING_HW_DEVICE_TYPES=,`
`QT_FFMPEG_DECODING_HW_DEVICE_TYPES=,`
(Empty lists disable Qt's FFmpeg hardware backends; affects Qt apps only, video falls back to software.) Suggest setting them for the shell by default, or coordinating with lock-explorer on a lazy QtMultimedia load.

**Why it matters**
In related reports this state costs 15-20 W of wake drain and roughly halves battery life. Happy to collect more evidence.

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 02:29 UTC