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

hyprland-dialog: `--text` message never renders, and ANR dialogs can deadlock unresponsive

Reported by Bierdieb · filed Sep 1, 2026 · open at source

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

hyprland-dialog: `--text` message never renders, and ANR dialogs can deadlock unresponsiverevision 1 · captured 2026-09-28 21:24 UTC via poll

System details

Omarchy 4.0.2-1 on intel i5,

What's wrong?

Report created using crush with glm5.3-flash as backend

Versions

  • Hyprland 0.56.2 (commit efb50993780079460b0cbed1363e2166a2de1d9f)
  • hyprland-guiutils 0.2.2
  • Arch Linux, Wayland, NVIDIA proprietary driver
  • Monitor scale 1.25 (fractional)
  • Relevant env: QT_QPA_PLATFORM=wayland;xcb, QT_QPA_PLATFORMTHEME=gtk3, QT_IM_MODULE=fcitx

### Bug 1: --text is not rendered (reproducible)

Steps to reproduce:

  hyprland-dialog --title "Test title" --text "This message should be visible" --buttons "OK;Cancel"

Observed: the big title and the right-aligned buttons paint, but the entire message area is empty — uniform background pixels, no text, no placeholders.

Verified by pixel analysis (screenshot via grim of the exact window geometry, decoded and counted): only two non-background bands exist — a ~280 px centered title band and a right-aligned button band. The central region where the message should be is 100% background color. A dialog spawned by Hyprland itself ("Application Not Responding", --text "An application Hermes - Hermes is not responding. What do you want to do with it?" --buttons Terminate;Wait) shows the identical result: title + buttons painted, message area empty.

Also noticed: the Wayland window title stays empty in hyprctl clients (title:, initialTitle:) even though --title was passed.

### Bug 2: ANR dialogs can hang forever, unresponsive and uncloseable

Context: an Electron app (Chromium main-thread abort) hung repeatedly. Each hang triggered an "Application Not Responding" dialog. Observed over one morning:

  • Three dialogs spawned; two remained alive ~19 h / ~3.5 h after their target process had already died (targets were killed by a crash, cores in

systemd-coredump). Orphaned dialogs are never dismissed.
- Duplicates stack pixel-identical at the same position (two dialogs both at the same at:/size: in hyprctl clients), so it looks like one broken popup. - The two stuck dialogs were completely unresponsive: Terminate/Wait clicks did nothing, no close button, not killable via the GUI.

Evidence (limited — ptrace was blocked by yama, so no userspace backtrace): - /proc/<pid>/task/*/wchan for both stuck dialogs: all 13 threads on `futex_do_wait`, including the main thread.
- A freshly spawned, healthy hyprland-dialog at the same time: main thread in poll_schedule_timeout (normal Qt event loop), rest on futexes.
- Stuck dialogs had consumed ~no CPU (not a busy loop) — consistent with a deadlock, e.g. a synchronous wait.
- SIGTERM from a terminal terminated them cleanly; windows were then gone.

So: whatever Hyprland's ANR flow uses to drive/wait on the dialog can wedge the dialog's event loop, and there is no timeout, no orphan cleanup, and no GUI escape hatch.

### Suggestions
1. Fix --text rendering (suspect interaction of fractional scaling and/or QT_QPA_PLATFORMTHEME=gtk3; happy to test patches or more env combos). 2. ANR flow: don't wait on the dialog synchronously; auto-dismiss the dialog when the hung PID exits; add a timeout; don't spawn duplicates at the same coordinates; make the dialog closeable.

View raw text
### System details

Omarchy 4.0.2-1 on intel i5,

### What's wrong?

Report created using crush with glm5.3-flash as backend

### Versions
  - Hyprland 0.56.2 (commit efb50993780079460b0cbed1363e2166a2de1d9f)
  - hyprland-guiutils 0.2.2
  - Arch Linux, Wayland, NVIDIA proprietary driver
  - Monitor scale 1.25 (fractional)
  - Relevant env: `QT_QPA_PLATFORM=wayland;xcb`, `QT_QPA_PLATFORMTHEME=gtk3`, `QT_IM_MODULE=fcitx`

  ### Bug 1: `--text` is not rendered (reproducible)

  **Steps to reproduce:**
  ```bash
  hyprland-dialog --title "Test title" --text "This message should be visible" --buttons "OK;Cancel"
```

  **Observed:** the big title and the right-aligned buttons paint, but the entire   message area is empty — uniform background pixels, no text, no placeholders.

  **Verified by pixel analysis** (screenshot via `grim` of the exact window   geometry, decoded and counted): only two non-background bands exist — a ~280 px   centered title band and a right-aligned button band. The central region where   the message should be is 100% background color. A dialog spawned by Hyprland   itself ("Application Not Responding", `--text "An application Hermes - Hermes   is not responding. What do you want to do with it?" --buttons Terminate;Wait`)   shows the identical result: title + buttons painted, message area empty.

  Also noticed: the Wayland window title stays empty in `hyprctl clients`   (`title:`, `initialTitle:`) even though `--title` was passed.

  ### Bug 2: ANR dialogs can hang forever, unresponsive and uncloseable

  **Context:** an Electron app (Chromium main-thread abort) hung repeatedly.   Each hang triggered an "Application Not Responding" dialog. Observed over one   morning:

  - Three dialogs spawned; two remained alive ~19 h / ~3.5 h **after their target     process had already died** (targets were killed by a crash, cores in
    `systemd-coredump`). Orphaned dialogs are never dismissed.
  - Duplicates stack pixel-identical at the same position (two dialogs both at     the same `at:`/`size:` in `hyprctl clients`), so it looks like one broken popup.   - The two stuck dialogs were completely unresponsive: Terminate/Wait clicks did     nothing, no close button, not killable via the GUI.

  **Evidence (limited — ptrace was blocked by yama, so no userspace backtrace):**   - `/proc/<pid>/task/*/wchan` for both stuck dialogs: **all 13 threads on     `futex_do_wait`**, including the main thread.
  - A freshly spawned, healthy `hyprland-dialog` at the same time: main thread in     `poll_schedule_timeout` (normal Qt event loop), rest on futexes.
  - Stuck dialogs had consumed ~no CPU (not a busy loop) — consistent with a     deadlock, e.g. a synchronous wait.
  - `SIGTERM` from a terminal terminated them cleanly; windows were then gone.

  So: whatever Hyprland's ANR flow uses to drive/wait on the dialog can wedge   the dialog's event loop, and there is no timeout, no orphan cleanup, and no   GUI escape hatch.

  ### Suggestions
  1. Fix `--text` rendering (suspect interaction of fractional scaling and/or      `QT_QPA_PLATFORMTHEME=gtk3`; happy to test patches or more env combos).   2. ANR flow: don't wait on the dialog synchronously; auto-dismiss the dialog      when the hung PID exits; add a timeout; don't spawn duplicates at the same      coordinates; make the dialog closeable.

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 10:26 UTC