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

Steam idle-inhibit rule matches the client but not steam_app games

Reported by nicoladen05 · filed Aug 15, 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

Steam idle-inhibit rule matches the client but not steam_app gamesrevision 1 · captured 2026-09-28 21:29 UTC via poll

System details

AMD Ryzen 7 7800X3D, NVIDIA RTX 4070, Omarchy 4.0.0-1, Hyprland 0.56.2

What's wrong?

The default Steam window rule combines floating the Steam client with inhibiting idle while fullscreen:

o.window("steam", { float = true, idle_inhibit = "fullscreen" })

Source: https://github.com/basecamp/omarchy/blob/9b72edcc94513cba016f145b1ac4ffdaea54b577/default/hypr/apps/steam.lua#L1

Because Hyprland class regexes are full matches, this rule applies to the Steam client class steam, but not games launched by Steam, whose XWayland class is normally steam_app_<appid>. The float = true effect also suggests this rule was primarily intended for the Steam client. Conversely, idle_inhibit = "fullscreen" is most useful on the game windows.

For example, while Assetto Corsa was running fullscreen, hyprctl clients -j reported:

{
  "class": "steam_app_244210",
  "title": "Assetto Corsa",
  "fullscreen": 2,
  "xwayland": true,
  "inhibitingIdle": false
}

After the configured idle timeout, the Omarchy screensaver opened over the game. Controller input does not reliably reset the compositor's idle timer, so the missing inhibitor becomes visible during controller-only play.

The next Steam rule already uses steam.* to cover both client and game classes for opacity:

o.window("steam.*", { tag = "-default-opacity", opacity = "1 1" })

Steps to reproduce

  1. Enable Omarchy idle handling and use a short screensaver timeout.
  2. Launch a Steam/Proton game whose class is steam_app_<appid>.
  3. Run the game fullscreen and use only a controller.
  4. Check hyprctl clients -j; the game reports inhibitingIdle: false.
  5. Wait for the idle timeout; the screensaver launches over the game.

Expected

Fullscreen Steam game windows should inhibit the Omarchy screensaver and lock timer. The Steam client can retain its existing floating behavior.

One possible approach is to split the concerns:

o.window("steam", { float = true })
o.window("steam_app_.*", { idle_inhibit = "fullscreen" })

Alternatively, the existing steam.* match could receive the fullscreen inhibitor if Steam Big Picture should also inhibit idle.

Related reports

  • #1269 originally reported the screensaver activating during controller gameplay and was closed by #1303.
  • #5093 reported the same symptom for other game launchers.
  • #6352 attempted to treat gamepad input as activity; the maintainer response preferred marking gaming applications as idle inhibitors.
  • #6475 / #6572 concern missing D-Bus inhibitor support in Quattro. This issue is narrower: the explicit Hyprland Steam rule does not match steam_app_* windows, and the live client reports inhibitingIdle: false.
View raw text
### System details

AMD Ryzen 7 7800X3D, NVIDIA RTX 4070, Omarchy 4.0.0-1, Hyprland 0.56.2

### What's wrong?

The default Steam window rule combines floating the Steam client with inhibiting idle while fullscreen:

```lua
o.window("steam", { float = true, idle_inhibit = "fullscreen" })
```

Source: https://github.com/basecamp/omarchy/blob/9b72edcc94513cba016f145b1ac4ffdaea54b577/default/hypr/apps/steam.lua#L1

Because Hyprland class regexes are full matches, this rule applies to the Steam client class `steam`, but not games launched by Steam, whose XWayland class is normally `steam_app_<appid>`. The `float = true` effect also suggests this rule was primarily intended for the Steam client. Conversely, `idle_inhibit = "fullscreen"` is most useful on the game windows.

For example, while Assetto Corsa was running fullscreen, `hyprctl clients -j` reported:

```json
{
  "class": "steam_app_244210",
  "title": "Assetto Corsa",
  "fullscreen": 2,
  "xwayland": true,
  "inhibitingIdle": false
}
```

After the configured idle timeout, the Omarchy screensaver opened over the game. Controller input does not reliably reset the compositor's idle timer, so the missing inhibitor becomes visible during controller-only play.

The next Steam rule already uses `steam.*` to cover both client and game classes for opacity:

```lua
o.window("steam.*", { tag = "-default-opacity", opacity = "1 1" })
```

#### Steps to reproduce

1. Enable Omarchy idle handling and use a short screensaver timeout.
2. Launch a Steam/Proton game whose class is `steam_app_<appid>`.
3. Run the game fullscreen and use only a controller.
4. Check `hyprctl clients -j`; the game reports `inhibitingIdle: false`.
5. Wait for the idle timeout; the screensaver launches over the game.

#### Expected

Fullscreen Steam game windows should inhibit the Omarchy screensaver and lock timer. The Steam client can retain its existing floating behavior.

One possible approach is to split the concerns:

```lua
o.window("steam", { float = true })
o.window("steam_app_.*", { idle_inhibit = "fullscreen" })
```

Alternatively, the existing `steam.*` match could receive the fullscreen inhibitor if Steam Big Picture should also inhibit idle.

#### Related reports

- #1269 originally reported the screensaver activating during controller gameplay and was closed by #1303.
- #5093 reported the same symptom for other game launchers.
- #6352 attempted to treat gamepad input as activity; the maintainer response preferred marking gaming applications as idle inhibitors.
- #6475 / #6572 concern missing D-Bus inhibitor support in Quattro. This issue is narrower: the explicit Hyprland Steam rule does not match `steam_app_*` windows, and the live client reports `inhibitingIdle: false`.

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:08 UTC