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.
Screen recording silently fails on external monitors driven by the dGPU (hybrid laptops)
Reported by tahadx · filed Aug 19, 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
What's wrong
On hybrid-GPU laptops (Intel iGPU + NVIDIA dGPU), omarchy capture screenrecording silently fails to start a recording when the target is an external monitor wired to the dGPU. Only the laptop panel (iGPU) records. Reported by @Mohamedkrms in #7479.
Repro
Hybrid laptop (e.g. Intel iGPU + NVIDIA dGPU), external monitor on HDMI/DP wired to the dGPU. Start a screen recording targeting the external monitor (fullscreen on it, or a region on it). No recording starts — nothing is written to ~/Videos.
Root cause
gpu-screen-recorder's kms backend connects to one DRM card — the one driving the internal panel (the iGPU). A dGPU-driven external monitor's connector isn't visible to that card, so gsr logs:
gsr error: gsr_capture_kms_start: failed to find monitor by name "DP-1"
gsr error: gsr_capture_start failedand exits without producing a file. The script's wait loop then sees the process dead and silently gives up — no recording, no message.
gsr exposes no capture-time card selector (only --list-capture-options [card_path]), so the kms backend can't be pointed at the dGPU card. The portal backend (-w portal, xdg-desktop-portal ScreenCast) is the documented path for "monitors driven by external GPUs" (the script already notes this in its OMARCHY_SCREENRECORD_USE_PORTAL opt-in), but it pops a picker and can hit EGL DMA-BUF modifier issues on some setups.
Same root cause as the closed #4804 and #4834.
Immediate workaround (no code change)
Set the portal backend for the session:
mkdir -p ~/.config/uwsm/env.d
echo 'OMARCHY_SCREENRECORD_USE_PORTAL=true' > ~/.config/uwsm/env.d/captureThen re-login so uwsm picks it up. This routes recordings through the portal picker, which can capture dGPU-driven external monitors. (Trade-off: the laptop-screen recordings also go through the portal picker instead of the kms/slurp path.)
Planned fix
Auto-fallback: when the kms backend fails to start (gsr exits without producing the output file), retry once via the portal backend with a notification, so external monitors work without the env var. This keeps the fast kms path for the laptop panel and only invokes the portal picker when kms can't see the target monitor.
A fix is in progress in a separate PR (linked below). It needs verification on a hybrid + external-monitor setup — if you can test, please comment.
View raw text
## What's wrong On hybrid-GPU laptops (Intel iGPU + NVIDIA dGPU), `omarchy capture screenrecording` silently fails to start a recording when the target is an external monitor wired to the dGPU. Only the laptop panel (iGPU) records. Reported by @Mohamedkrms in #7479. ## Repro Hybrid laptop (e.g. Intel iGPU + NVIDIA dGPU), external monitor on HDMI/DP wired to the dGPU. Start a screen recording targeting the external monitor (fullscreen on it, or a region on it). No recording starts — nothing is written to `~/Videos`. ## Root cause `gpu-screen-recorder`'s **kms backend connects to one DRM card** — the one driving the internal panel (the iGPU). A dGPU-driven external monitor's connector isn't visible to that card, so gsr logs: ``` gsr error: gsr_capture_kms_start: failed to find monitor by name "DP-1" gsr error: gsr_capture_start failed ``` and exits without producing a file. The script's wait loop then sees the process dead and silently gives up — no recording, no message. gsr exposes **no capture-time card selector** (only `--list-capture-options [card_path]`), so the kms backend can't be pointed at the dGPU card. The portal backend (`-w portal`, xdg-desktop-portal ScreenCast) is the documented path for "monitors driven by external GPUs" (the script already notes this in its `OMARCHY_SCREENRECORD_USE_PORTAL` opt-in), but it pops a picker and can hit EGL DMA-BUF modifier issues on some setups. Same root cause as the closed #4804 and #4834. ## Immediate workaround (no code change) Set the portal backend for the session: ```bash mkdir -p ~/.config/uwsm/env.d echo 'OMARCHY_SCREENRECORD_USE_PORTAL=true' > ~/.config/uwsm/env.d/capture ``` Then re-login so uwsm picks it up. This routes recordings through the portal picker, which can capture dGPU-driven external monitors. (Trade-off: the laptop-screen recordings also go through the portal picker instead of the kms/slurp path.) ## Planned fix Auto-fallback: when the kms backend fails to start (gsr exits without producing the output file), retry once via the portal backend with a notification, so external monitors work without the env var. This keeps the fast kms path for the laptop panel and only invokes the portal picker when kms can't see the target monitor. A fix is in progress in a separate PR (linked below). It needs verification on a hybrid + external-monitor setup — if you can test, please comment.
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:49 UTC