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.
Bug: `omarchy-update-without-idle` adds `noidle` tag but never removes it
Reported by shawnyeager · filed Dec 23, 2025Closed upstream on 2025-12-24 by dhh. GitHub close reason: completed. No closing PR or commit is recorded — "completed" alone is not evidence of a fix.
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
System details
AMD 7640U (Framework 13), Omarchy 3.2.3
What's wrong?
Summary
The script omarchy-update-without-idle tags the focused window with noidle to prevent idle during updates, but never removes the tag when the update completes. Combined with the window rule idleinhibit always, tag:noidle, this permanently blocks hypridle from detecting idle until the window is closed or manually untagged.
Steps to reproduce
- Focus a terminal window
- Run a command that calls
omarchy-update-without-idle(or run it directly) - Complete the update
- Leave system idle - screensaver/lock/DPMS never triggers
Expected behavior
The noidle tag should be removed when the update completes.
Actual behavior
The tag persists indefinitely, blocking all idle detection.
Affected files
~/.local/share/omarchy/bin/omarchy-update-without-idle~/.local/share/omarchy/default/hypr/apps/system.conf(defineswindowrule = idleinhibit always, tag:noidle)
Suggested fix
Wrap the update command and remove the tag on completion:
#!/bin/bash
hyprctl dispatch tagwindow +noidle &> /dev/null
# run update command here
# ...
hyprctl dispatch tagwindow -- -noidle &> /dev/nullOr create a corresponding omarchy-update-idle-restore script to call after updates.
Workaround
Manually remove the tag:
hyprctl dispatch tagwindow -- -noidleOr remove from all windows:
hyprctl -j clients | jq -r '.[] | select(.tags | index("noidle")) | .address' | \
xargs -I{} sh -c 'hyprctl dispatch focuswindow address:{} && hyprctl dispatch tagwindow -- -noidle'View raw text
### System details
AMD 7640U (Framework 13), Omarchy 3.2.3
### What's wrong?
## Summary
The script `omarchy-update-without-idle` tags the focused window with `noidle` to prevent idle during updates, but never removes the tag when the update completes. Combined with the window rule `idleinhibit always, tag:noidle`, this permanently blocks hypridle from detecting idle until the window is closed or manually untagged.
## Steps to reproduce
1. Focus a terminal window
2. Run a command that calls `omarchy-update-without-idle` (or run it directly)
3. Complete the update
4. Leave system idle - screensaver/lock/DPMS never triggers
## Expected behavior
The `noidle` tag should be removed when the update completes.
## Actual behavior
The tag persists indefinitely, blocking all idle detection.
## Affected files
- `~/.local/share/omarchy/bin/omarchy-update-without-idle`
- `~/.local/share/omarchy/default/hypr/apps/system.conf` (defines `windowrule = idleinhibit always, tag:noidle`)
## Suggested fix
Wrap the update command and remove the tag on completion:
```bash
#!/bin/bash
hyprctl dispatch tagwindow +noidle &> /dev/null
# run update command here
# ...
hyprctl dispatch tagwindow -- -noidle &> /dev/null
```
Or create a corresponding `omarchy-update-idle-restore` script to call after updates.
## Workaround
Manually remove the tag:
```bash
hyprctl dispatch tagwindow -- -noidle
```
Or remove from all windows:
```bash
hyprctl -j clients | jq -r '.[] | select(.tags | index("noidle")) | .address' | \
xargs -I{} sh -c 'hyprctl dispatch focuswindow address:{} && hyprctl dispatch tagwindow -- -noidle'
```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.
No decision has been recorded yet.