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

Portal GTK file-picker dialogs are tiled when they inherit the app class (confirm button clipped/hidden; e.g. RapidRAW)

Reported by ssalentin · filed Oct 7, 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

Portal GTK file-picker dialogs are tiled when they inherit the app class (confirm button clipped/hidden; e.g. RapidRAW)revision 1 · captured 2026-10-07 06:03 UTC via poll

Summary

GTK file-picker dialogs opened through xdg-desktop-portal-gtk are tiled instead of floated whenever the requesting application's app-id becomes the dialog's Wayland class. Because the dialog then inherits the requesting app's class, Omarchy's portal floating rule (which matches class = xdg-desktop-portal-gtk) never fires. The dialog is tiled at its natural (tiny) size, which clips or hides its bottom action row — so the confirm button (e.g. "Open" / "Öffnen") is unreachable or disappears entirely in fullscreen tile mode.

Concrete app where this bites: RapidRAW (rapidraw-bin, GPU-accelerated RAW editor), but the bug is generic to any GTK app whose portal dialogs inherit the app class.

Environment

  • Omarchy: 4.0.4-1
  • Hyprland: 0.56.2
  • Kernel: 7.1.13-3-2-ARCH (aarch64)
  • Hardware: Apple MacBook Pro 17,1 (M1, Asahi Linux), GPU agx-t8103 / asahi
  • Portal: xdg-desktop-portal-gtk (also xdg-desktop-portal-hyprland present)

Steps to reproduce

  1. Open RapidRAW (or any GTK app that opens a folder/file picker via the portal).
  2. On the home screen, choose to open a folder → the "Select Folder" portal dialog opens.
  3. Observe the dialog is tiled (not floating/centered). The bottom action bar with the confirm button is clipped.
  4. Make the tile fullscreen → the confirm button disappears entirely. It cannot be clicked in tiled mode.

Expected behavior

Portal file-picker dialogs float, are centered, and show their full action row (which is exactly what Omarchy's existing rule intends for xdg-desktop-portal-gtk).

Root cause

/usr/share/omarchy/default/hypr/apps/system.lua has:

o.window("xdg-desktop-portal-gtk", { tag = "+floating-window" })

This matches the window class against xdg-desktop-portal-gtk. However, on Wayland the GTK portal dialog inherits the requesting application's app-id, so the class reported to Hyprland is the app's class — not the portal's. Verified with hyprctl clients -j:

class = 'RapidRAW', initialClass = 'RapidRAW', initialTitle = 'Select Folder',
title = 'Select Folder', pid = 29734, floating = False, size = [306, 174]

The requesting process pid (29734) is /usr/bin/RapidRAW, and the dialog is served by xdg-desktop-portal-gtk (pid 1454), but the window class is RapidRAW. The rule's class matcher therefore never matches, and the dialog falls through to the default tiled layout.

Suggested fix

Match portal file dialogs by title pattern in addition to the portal class, so the rule covers dialogs that inherit the requesting app's class. E.g. in apps/system.lua:

-- Portal dialogs that inherit the requesting app's class (e.g. RapidRAW's GTK
-- folder picker reports class "RapidRAW"): float by title pattern too.
o.window(
  {
    title = "^(Select Folder|Open [F|f]older.*|Open.*Files?|Save.*Files?|Save.*As|Save|All Files|.*[Cc]hoose.*|.*wants to [open|save].*)$",
  },
  { tag = "+floating-window" }
)

(or extend the existing class = "(sublime_text|DesktopEditors|org.gnome.Nautilus)" title rule, which has the same intent but a hard-coded class list).

Local workaround (already applied on the affected machine)

Added to ~/.config/hypr/hyprland.lua:

o.window(
  {
    class = "^RapidRAW$",
    title = "^(Select Folder|Open [F|f]older.*|Open.*Files?|Save.*Files?|Save.*As|Save|All Files|.*[Cc]hoose.*|.*wants to [open|save].*)$",
  },
  { tag = "+floating-window" }
)

With this rule the dialog floats, is centered, and the confirm button is clickable. hyprctl reload + hyprctl configerrors are clean.

Diagnostics

omarchy-debug --no-sudo --print output is attached (also written to /tmp/omarchy-debug.log). Key entries: Omarchy 4.0.4-1, Hyprland 0.56.2, Apple MacBook Pro 17,1 (aarch64), and rapidraw-bin 1.6.5-1 (AUR).

View raw text
## Summary

GTK file-picker dialogs opened through `xdg-desktop-portal-gtk` are **tiled** instead of floated whenever the requesting application's app-id becomes the dialog's Wayland class. Because the dialog then inherits the *requesting app's* class, Omarchy's portal floating rule (which matches `class = xdg-desktop-portal-gtk`) never fires. The dialog is tiled at its natural (tiny) size, which clips or hides its bottom action row — so the confirm button (e.g. **"Open" / "Öffnen"**) is unreachable or disappears entirely in fullscreen tile mode.

Concrete app where this bites: **RapidRAW** (`rapidraw-bin`, GPU-accelerated RAW editor), but the bug is generic to any GTK app whose portal dialogs inherit the app class.

## Environment

- Omarchy: **4.0.4-1**
- Hyprland: **0.56.2**
- Kernel: 7.1.13-3-2-ARCH (aarch64)
- Hardware: Apple MacBook Pro 17,1 (M1, Asahi Linux), GPU `agx-t8103` / `asahi`
- Portal: `xdg-desktop-portal-gtk` (also `xdg-desktop-portal-hyprland` present)

## Steps to reproduce

1. Open **RapidRAW** (or any GTK app that opens a folder/file picker via the portal).
2. On the home screen, choose to open a folder → the "Select Folder" portal dialog opens.
3. Observe the dialog is **tiled** (not floating/centered). The bottom action bar with the confirm button is clipped.
4. Make the tile fullscreen → the confirm button disappears entirely. It cannot be clicked in tiled mode.

## Expected behavior

Portal file-picker dialogs float, are centered, and show their full action row (which is exactly what Omarchy's existing rule intends for `xdg-desktop-portal-gtk`).

## Root cause

`/usr/share/omarchy/default/hypr/apps/system.lua` has:

```lua
o.window("xdg-desktop-portal-gtk", { tag = "+floating-window" })
```

This matches the window **class** against `xdg-desktop-portal-gtk`. However, on Wayland the GTK portal dialog inherits the requesting application's app-id, so the class reported to Hyprland is the app's class — not the portal's. Verified with `hyprctl clients -j`:

```
class = 'RapidRAW', initialClass = 'RapidRAW', initialTitle = 'Select Folder',
title = 'Select Folder', pid = 29734, floating = False, size = [306, 174]
```

The requesting process pid (`29734`) is `/usr/bin/RapidRAW`, and the dialog is served by `xdg-desktop-portal-gtk` (pid 1454), but the window class is `RapidRAW`. The rule's class matcher therefore never matches, and the dialog falls through to the default tiled layout.

## Suggested fix

Match portal file dialogs by title pattern in addition to the portal class, so the rule covers dialogs that inherit the requesting app's class. E.g. in `apps/system.lua`:

```lua
-- Portal dialogs that inherit the requesting app's class (e.g. RapidRAW's GTK
-- folder picker reports class "RapidRAW"): float by title pattern too.
o.window(
  {
    title = "^(Select Folder|Open [F|f]older.*|Open.*Files?|Save.*Files?|Save.*As|Save|All Files|.*[Cc]hoose.*|.*wants to [open|save].*)$",
  },
  { tag = "+floating-window" }
)
```

(or extend the existing `class = "(sublime_text|DesktopEditors|org.gnome.Nautilus)"` title rule, which has the same intent but a hard-coded class list).

## Local workaround (already applied on the affected machine)

Added to `~/.config/hypr/hyprland.lua`:

```lua
o.window(
  {
    class = "^RapidRAW$",
    title = "^(Select Folder|Open [F|f]older.*|Open.*Files?|Save.*Files?|Save.*As|Save|All Files|.*[Cc]hoose.*|.*wants to [open|save].*)$",
  },
  { tag = "+floating-window" }
)
```

With this rule the dialog floats, is centered, and the confirm button is clickable. `hyprctl reload` + `hyprctl configerrors` are clean.

## Diagnostics

`omarchy-debug --no-sudo --print` output is attached (also written to `/tmp/omarchy-debug.log`). Key entries: Omarchy 4.0.4-1, Hyprland 0.56.2, Apple MacBook Pro 17,1 (aarch64), and `rapidraw-bin 1.6.5-1 (AUR)`.

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 22:06 UTC