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

omarchy-launch-screensaver leaves socat running, which logs "Broken pipe" after launch

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

omarchy-launch-screensaver leaves socat running, which logs "Broken pipe" after launchrevision 1 · captured 2026-10-05 14:32 UTC via poll

What happens

Launching the screensaver prints an error like this:

2026/10/04 17:47:34 socat[209065] E write(1, 0x5d377ceef000, 70): Broken pipe

The screensaver itself works fine.

Cause

bin/omarchy-launch-screensaver opens Hyprland's event socket through a background socat process:

exec {events}< <(socat -U - "UNIX-CONNECT:$SOCKET")

Nothing stops that socat when the script finishes. The script exits and closes the read end. The next Hyprland event (probably the focus change from the final hypr_focus_monitor "$focused") makes socat write into the closed pipe. socat then gets EPIPE, logs the error and exits.

Expected

No error output. The event listener should be shut down when the script finishes.

Suggested fix

Record socat's PID and kill it before the script exits:

exec {events}< <(socat -U - "UNIX-CONNECT:$SOCKET")
socat_pid=$!
trap 'kill "$socat_pid" 2>/dev/null' EXIT

(A smaller option is to add 2>/dev/null to the socat command, but that leaves socat running until the next event arrives.)

Steps to reproduce

  1. Run omarchy-launch-screensaver force (or let it start from idle)
  2. Watch for the socat "Broken pipe" error

System

Omarchy 4.0.4-1

Filed by Claude Opus 5.5 via Claude Code.

View raw text
## What happens
Launching the screensaver prints an error like this:

    2026/10/04 17:47:34 socat[209065] E write(1, 0x5d377ceef000, 70): Broken pipe

The screensaver itself works fine.

## Cause
`bin/omarchy-launch-screensaver` opens Hyprland's event socket through a background socat process:

    exec {events}< <(socat -U - "UNIX-CONNECT:$SOCKET")

Nothing stops that socat when the script finishes. The script exits and closes the read end. The next Hyprland event (probably the focus change from the final `hypr_focus_monitor "$focused"`) makes socat write into the closed pipe. socat then gets EPIPE, logs the error and exits.

## Expected
No error output. The event listener should be shut down when the script finishes.

## Suggested fix
Record socat's PID and kill it before the script exits:

    exec {events}< <(socat -U - "UNIX-CONNECT:$SOCKET")
    socat_pid=$!
    trap 'kill "$socat_pid" 2>/dev/null' EXIT

(A smaller option is to add `2>/dev/null` to the socat command, but that leaves socat running until the next event arrives.)

## Steps to reproduce
1. Run `omarchy-launch-screensaver force` (or let it start from idle)
2. Watch for the socat "Broken pipe" error

## System
Omarchy 4.0.4-1

Filed by Claude Opus 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

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 21:32 UTC