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 only dismisses on keyboard input, not mouse movement
Reported by Andre1Becker · filed Sep 1, 2026Closed upstream on 2026-09-21 by bjarneo via an automated message, as a duplicate of #7762 (R-1580). 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
The screensaver (omarchy-screensaver) only exits on keyboard input. Moving the mouse while the screensaver is showing does not dismiss it.
What was expected
Per the script's own comment (omarchy-screensaver:6: # Exit the screensaver on signals and input from keyboard and mouse), mouse input should also dismiss it.
Root cause
In /usr/share/omarchy/bin/omarchy-screensaver, the dismiss loop is:
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
...
while pgrep -t "${tty#/dev/}" -x ttfx >/dev/null; do
if read -n1 -t 1 || ! screensaver_in_focus; then
exit_screensaver
fi
done- The
traponly handles process signals, not input events. read -n1reads from the terminal's stdin, which only ever receives keyboard input, never pointer motion/click.- The only other exit path is
! screensaver_in_focus, i.e. losing window focus — which normal mouse movement over the screensaver window does not do.
So despite the comment, there is no code path that treats mouse activity as a dismissal trigger.
Steps to reproduce
- Let the machine sit idle until the Omarchy screensaver (
org.omarchy.screensaver) appears. - Move the mouse (no click, no keypress).
- Screensaver stays up. Only a keypress dismisses it.
System details
- Omarchy: 4.0.2-1
- Hyprland: 0.56.2
- Kernel: 7.1.9-arch1-2
- CPU: AMD Ryzen 7 5800X 8-Core Processor
- GPU: NVIDIA GeForce RTX 4070 Ti
View raw text
## What happened
The screensaver (`omarchy-screensaver`) only exits on keyboard input. Moving the mouse while the screensaver is showing does not dismiss it.
## What was expected
Per the script's own comment (`omarchy-screensaver:6`: `# Exit the screensaver on signals and input from keyboard and mouse`), mouse input should also dismiss it.
## Root cause
In `/usr/share/omarchy/bin/omarchy-screensaver`, the dismiss loop is:
```bash
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
...
while pgrep -t "${tty#/dev/}" -x ttfx >/dev/null; do
if read -n1 -t 1 || ! screensaver_in_focus; then
exit_screensaver
fi
done
```
- The `trap` only handles process signals, not input events.
- `read -n1` reads from the terminal's stdin, which only ever receives keyboard input, never pointer motion/click.
- The only other exit path is `! screensaver_in_focus`, i.e. losing window focus — which normal mouse movement over the screensaver window does not do.
So despite the comment, there is no code path that treats mouse activity as a dismissal trigger.
## Steps to reproduce
1. Let the machine sit idle until the Omarchy screensaver (`org.omarchy.screensaver`) appears.
2. Move the mouse (no click, no keypress).
3. Screensaver stays up. Only a keypress dismisses it.
## System details
- Omarchy: 4.0.2-1
- Hyprland: 0.56.2
- Kernel: 7.1.9-arch1-2
- CPU: AMD Ryzen 7 5800X 8-Core Processor
- GPU: NVIDIA GeForce RTX 4070 Ti
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/11746· 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.