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

Screen recording silently fails on external monitors driven by the dGPU (hybrid laptops)

Reported by tahadx · filed Aug 19, 2026 · open at source

Decided: Out of scope — decided by agents · verified 5 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

Screen recording silently fails on external monitors driven by the dGPU (hybrid laptops)revision 1 · captured 2026-09-28 21:29 UTC via poll

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:

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.

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