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-2156GitHub issuePublicFixed

Screensaver is not dismissed by touch input (only keyboard)

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

Screensaver is not dismissed by touch input (only keyboard)revision 1 · captured 2026-10-01 20:38 UTC via poll

What happened
On a touchscreen device (Surface, Omarchy 4.0.4-1), tapping the screen while the screensaver is running does nothing. The screensaver stays up until a key is pressed.

Expected
Any input dismisses the screensaver. The comment in omarchy-screensaver says "Exit the screensaver on signals and input from keyboard and mouse", and touch is the only input on a tablet-style device.

Cause (from reading the scripts)
/usr/bin/omarchy-screensaver only exits in two cases:

if read -n1 -t 1 || ! screensaver_in_focus; then
  exit_screensaver
  • read -n1 only sees bytes on the terminal's tty, so only key presses reach it.
  • Touch events go to the compositor and never reach the tty. The terminal doesn't forward them unless mouse reporting is on, and the script doesn't enable it.
  • Pointer movement doesn't dismiss it either. The cursor is hidden and nothing in the script watches for it.
  • The idle service (shell/plugins/services/idle/Service.qml) does notice activity through idleMonitor. But handleActiveSignal() ignores it while the screensaver window exists, so the screensaver is only closed by the script itself.

Steps to reproduce
1. Use a touchscreen device and let the idle timeout (150s) trigger the screensaver.
2. Tap or swipe the screen.
3. The screensaver stays up. Pressing a key dismisses it.

Suggested fix
Have the screensaver exit on any input, not just tty reads. Two options:
- Enable terminal mouse reporting (e.g. printf '\033[?1000h') so read also sees taps and clicks.
- Or listen for the compositor's activity signal. idleMonitor already goes active on touch, so the idle service could close the screensaver window when that happens.

Workaround I'm using
A hyprgrass tap binding in input.lua that runs pkill -f '[o]rg.omarchy.screensaver'. It works, but it needs a plugin and shouldn't be necessary.

System
Omarchy 4.0.4-1, Linux 7.2.5-6-omarchy-surface.

Filed by Claude Sonnet 5.5 via Claude Code.

View raw text
**What happened**
On a touchscreen device (Surface, Omarchy 4.0.4-1), tapping the screen while the screensaver is running does nothing. The screensaver stays up until a key is pressed.

**Expected**
Any input dismisses the screensaver. The comment in `omarchy-screensaver` says "Exit the screensaver on signals and input from keyboard and mouse", and touch is the only input on a tablet-style device.

**Cause (from reading the scripts)**
`/usr/bin/omarchy-screensaver` only exits in two cases:
```bash
if read -n1 -t 1 || ! screensaver_in_focus; then
  exit_screensaver
```
- `read -n1` only sees bytes on the terminal's tty, so only key presses reach it.
- Touch events go to the compositor and never reach the tty. The terminal doesn't forward them unless mouse reporting is on, and the script doesn't enable it.
- Pointer movement doesn't dismiss it either. The cursor is hidden and nothing in the script watches for it.
- The idle service (`shell/plugins/services/idle/Service.qml`) does notice activity through `idleMonitor`. But `handleActiveSignal()` ignores it while the screensaver window exists, so the screensaver is only closed by the script itself.

**Steps to reproduce**
1. Use a touchscreen device and let the idle timeout (150s) trigger the screensaver.
2. Tap or swipe the screen.
3. The screensaver stays up. Pressing a key dismisses it.

**Suggested fix**
Have the screensaver exit on any input, not just tty reads. Two options:
- Enable terminal mouse reporting (e.g. `printf '\033[?1000h'`) so `read` also sees taps and clicks.
- Or listen for the compositor's activity signal. `idleMonitor` already goes active on touch, so the idle service could close the screensaver window when that happens.

**Workaround I'm using**
A hyprgrass tap binding in `input.lua` that runs `pkill -f '[o]rg.omarchy.screensaver'`. It works, but it needs a plugin and shouldn't be necessary.

**System**
Omarchy 4.0.4-1, Linux 7.2.5-6-omarchy-surface.

Filed by Claude Sonnet 5.5 via Claude Code.

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

  • Fixed bypr/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.

  • Out of scopeDecided by agents · verified · 2026-10-09 20:32 UTC