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.
Screensaver/idle triggers during Firefox video playback — portal Inhibit falls back to unowned org.freedesktop.ScreenSaver
Reported by sumitrampal · filed Aug 17, 2026Closed upstream on 2026-09-20 by bjarneo via an automated message, as a duplicate of #6475 (R-1888). 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 happened
Screensaver / idle lock fires on schedule (idle.screensaver in~/.config/omarchy/shell.json) even while a video is actively playing in
Firefox (e.g. YouTube). The video keeps playing behind the screensaver —
Firefox never successfully inhibits idle.
What I expected
Playing video in the browser should suppress the screensaver/lock the same
way it does on GNOME/KDE, for the duration of playback.
Root cause (traced via journal + source)
Omarchy's idle system is a Quickshell service
(/usr/share/omarchy/shell/plugins/services/idle/Service.qml), nothypridle — no hypridle process runs in an Omarchy session even though~/.config/hypr/hypridle.conf still ships/exists. The Quickshell service
uses Quickshell.Wayland.IdleMonitor with respectInhibitors: true, which
only honors Wayland-protocol idle inhibitors
(idle-inhibit-unstable-v1), the kind fullscreen mpv/VLC register
directly against a surface.
Firefox instead requests idle inhibition via the freedesktop portal
(org.freedesktop.impl.portal.Inhibit) while a <video> is playing. Tracing
that call:
/usr/share/xdg-desktop-portal/portals/hyprland.portal(the backend
selected UseIn=... Hyprland ...) does not list
org.freedesktop.impl.portal.Inhibit in its Interfaces= — only
Screenshot;ScreenCast;GlobalShortcuts;InputCapture.
- xdg-desktop-portal therefore falls back to
xdg-desktop-portal-gtk (UseIn=gnome) as the only backend implementing
Inhibit.
- xdg-desktop-portal-gtk's Inhibit implementation proxies to the legacy
org.freedesktop.ScreenSaver D-Bus interface — but nothing in an Omarchy
session owns that well-known name (no gnome-screensaver-alike service), so
every call fails.
Journal, repeating every few seconds while the video plays:
xdg-desktop-portal-gtk[1929]: Backend call failed: Cannot invoke method; proxy is for the
well-known name org.freedesktop.ScreenSaver without an owner, and proxy was constructed
with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag
/usr/lib/xdg-desktop-portal[1739]: A backend call failed: Inhibiting other than idle not supportedSo the inhibit request is silently swallowed and the Quickshell idle monitor
never sees it — the screensaver/lock timers proceed unaffected by playback.
Notably, Omarchy's idle service already has the exact mechanism needed to
fix this cleanly: the existing stayAwake state
(~/.local/state/omarchy/indicators/stay-awake, toggled via the bar's "Stay
Awake" indicator or omarchy-shell idle enable|disable). A small D-Bus
service that implements org.freedesktop.ScreenSaver
(Inhibit/UnInhibit) — or extending xdg-desktop-portal-hyprland's.portal file / omarchy-shell to implementorg.freedesktop.impl.portal.Inhibit — and drives that same stayAwake
flag would let Firefox (and any other portal/D-Bus-based app: mpv without--no-osc... etc.) properly suppress idle during playback.
Steps to reproduce
- Fresh Omarchy session on Hyprland (not GNOME).
- Open Firefox, play any YouTube video (windowed, not fullscreen).
- Leave mouse/keyboard untouched past
idle.screensaverseconds
(default/configured 300s here).
4. Screensaver launches while video audio/playback continues in the
background.
5. journalctl --user -b | grep -i -E 'ScreenSaver|Inhibit' shows the
failed D-Bus calls timed to the video's inhibit heartbeat.
System details
- Omarchy: 4.0.0-1
- Hyprland: 0.56.2-1
- xdg-desktop-portal: 1.22.1-2
- xdg-desktop-portal-gtk: 1.15.3-1
- xdg-desktop-portal-hyprland: 1.4.1-1
- Firefox: 153.0.4-1
- Kernel: 7.1.8-arch1-3
- GPU: AMD Radeon RX 7900 XTX (amdgpu), iGPU Raphael
idle.screensaver= 300s,idle.lock= 604800s (per~/.config/omarchy/shell.json)
Workaround
Toggle the bar's "Stay Awake" indicator (or omarchy-shell idle disable)
before watching video, and omarchy-shell idle enable afterward.
View raw text
## What happened Screensaver / idle lock fires on schedule (`idle.screensaver` in `~/.config/omarchy/shell.json`) even while a video is actively playing in Firefox (e.g. YouTube). The video keeps playing behind the screensaver — Firefox never successfully inhibits idle. ## What I expected Playing video in the browser should suppress the screensaver/lock the same way it does on GNOME/KDE, for the duration of playback. ## Root cause (traced via journal + source) Omarchy's idle system is a Quickshell service (`/usr/share/omarchy/shell/plugins/services/idle/Service.qml`), not `hypridle` — no `hypridle` process runs in an Omarchy session even though `~/.config/hypr/hypridle.conf` still ships/exists. The Quickshell service uses `Quickshell.Wayland.IdleMonitor` with `respectInhibitors: true`, which only honors **Wayland-protocol** idle inhibitors (`idle-inhibit-unstable-v1`), the kind fullscreen `mpv`/VLC register directly against a surface. Firefox instead requests idle inhibition via the **freedesktop portal** (`org.freedesktop.impl.portal.Inhibit`) while a `<video>` is playing. Tracing that call: - `/usr/share/xdg-desktop-portal/portals/hyprland.portal` (the backend selected `UseIn=... Hyprland ...`) does **not** list `org.freedesktop.impl.portal.Inhibit` in its `Interfaces=` — only `Screenshot;ScreenCast;GlobalShortcuts;InputCapture`. - `xdg-desktop-portal` therefore falls back to `xdg-desktop-portal-gtk` (`UseIn=gnome`) as the only backend implementing `Inhibit`. - `xdg-desktop-portal-gtk`'s Inhibit implementation proxies to the legacy `org.freedesktop.ScreenSaver` D-Bus interface — but nothing in an Omarchy session owns that well-known name (no gnome-screensaver-alike service), so every call fails. Journal, repeating every few seconds while the video plays: ``` xdg-desktop-portal-gtk[1929]: Backend call failed: Cannot invoke method; proxy is for the well-known name org.freedesktop.ScreenSaver without an owner, and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag /usr/lib/xdg-desktop-portal[1739]: A backend call failed: Inhibiting other than idle not supported ``` So the inhibit request is silently swallowed and the Quickshell idle monitor never sees it — the screensaver/lock timers proceed unaffected by playback. Notably, Omarchy's idle service already has the exact mechanism needed to fix this cleanly: the existing `stayAwake` state (`~/.local/state/omarchy/indicators/stay-awake`, toggled via the bar's "Stay Awake" indicator or `omarchy-shell idle enable|disable`). A small D-Bus service that implements `org.freedesktop.ScreenSaver` (`Inhibit`/`UnInhibit`) — or extending `xdg-desktop-portal-hyprland`'s `.portal` file / omarchy-shell to implement `org.freedesktop.impl.portal.Inhibit` — and drives that same `stayAwake` flag would let Firefox (and any other portal/D-Bus-based app: mpv without `--no-osc`... etc.) properly suppress idle during playback. ## Steps to reproduce 1. Fresh Omarchy session on Hyprland (not GNOME). 2. Open Firefox, play any YouTube video (windowed, not fullscreen). 3. Leave mouse/keyboard untouched past `idle.screensaver` seconds (default/configured 300s here). 4. Screensaver launches while video audio/playback continues in the background. 5. `journalctl --user -b | grep -i -E 'ScreenSaver|Inhibit'` shows the failed D-Bus calls timed to the video's inhibit heartbeat. ## System details - Omarchy: 4.0.0-1 - Hyprland: 0.56.2-1 - xdg-desktop-portal: 1.22.1-2 - xdg-desktop-portal-gtk: 1.15.3-1 - xdg-desktop-portal-hyprland: 1.4.1-1 - Firefox: 153.0.4-1 - Kernel: 7.1.8-arch1-3 - GPU: AMD Radeon RX 7900 XTX (amdgpu), iGPU Raphael - `idle.screensaver` = 300s, `idle.lock` = 604800s (per `~/.config/omarchy/shell.json`) ## Workaround Toggle the bar's "Stay Awake" indicator (or `omarchy-shell idle disable`) before watching video, and `omarchy-shell idle enable` afterward.
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
- Related PRpr/9768· 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.