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-1312GitHub issuePublicReceived

Quickshell freezes for 1–2 seconds when a focused panel reads from a stalled Wayland clipboard owner

Reported by forbidden-game · filed Aug 28, 2026 · open at source

Partly in the audited area (lock) — decided by arbitration. Not validated yet.

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?
AreaPartly in the audited arealock· Decided by arbitration
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. So far: partly in the audited area (lock) — decided by arbitration; matches no known issue — decided by agents · verified. The outcome (valid, duplicate, not a bug, …) is not decided yet. See the decision.

Original report

Quickshell freezes for 1–2 seconds when a focused panel reads from a stalled Wayland clipboard ownerrevision 1 · captured 2026-09-28 21:24 UTC via poll

System details

ThinkPad T14p, Intel Core Ultra 9 285H, Intel Arrow Lake-P iGPU

  • Omarchy 4.0.1-1
  • Quickshell 0.3.1-1
  • Hyprland 0.56.2-1
  • Qt Wayland / Qt Declarative 6.11.2-1
  • Kernel 7.1.9-arch1-2

What's wrong?

Opening a keyboard-focused Omarchy Shell panel can block the entire
Quickshell UI for approximately 1–2 seconds when the current Wayland
clipboard owner is temporarily unresponsive.

Regular application windows remain responsive. The bar and Shell panels
are blocked together.

This reproduces consistently using the stock Clock widget and the following
local clipboard owner.

Steps to reproduce

  1. In terminal 1, watch the relevant log:
   journalctl --user -f -o cat |
     rg --line-buffered 'QWaylandDataOffer|mimeType'
  1. In terminal 2, create and run a deliberately stalled clipboard owner:
   cat >/tmp/stalled-clipboard.qml <<'QML'
   import QtQuick 2.15
   import QtQuick.Window 2.15

   Window {
       width: 240
       height: 80
       visible: true
       title: "Stalled clipboard owner"

       TextInput {
           anchors.fill: parent
           text: "omarchy-clipboard-timeout-repro"

           Component.onCompleted: {
               forceActiveFocus()
               selectAll()
               copy()
               stall.start()
           }
       }

       Timer {
           id: stall
           interval: 5000

           onTriggered: {
               const deadline = Date.now() + 30000
               while (Date.now() < deadline) {
                   // Simulate an unresponsive clipboard owner.
               }
               Qt.quit()
           }
       }
   }
   QML

   qml /tmp/stalled-clipboard.qml
  1. Within five seconds, click the small “Stalled clipboard owner” window once.
  1. Wait until that window becomes unresponsive, then manually click the

stock Clock widget in the Omarchy bar.

Actual result

The Clock panel/bar becomes unresponsive for approximately 1–2 seconds.
The journal prints:

QWaylandDataOffer: timeout reading from pipe
QWaylandDataOffer: error reading data for mimeType text/plain;charset=utf-8
QWaylandDataOffer: timeout reading from pipe
QWaylandDataOffer: error reading data for mimeType text/plain

The test application exits automatically after 30 seconds.

The same log occurs intermittently with normal clipboard contents, which is
the real-world symptom this reproducer models.

Expected result

An unresponsive clipboard owner should not block the Quickshell GUI thread.
The Clock panel and the rest of the Omarchy Shell should remain responsive,
even if paste availability cannot be determined immediately.

Trace

GDB shows the Quickshell main thread synchronously reading the clipboard:

QWaylandDataOffer::startReceiving
QWaylandDataOffer::retrieveData_sys
QInternalMimeData::retrieveData
QClipboard::mimeData
QQuickTextInput::q_canPasteChanged

This indicates that a QQuickTextInput paste-availability update performs a
blocking clipboard read on the Shell GUI thread.

View raw text
### System details

ThinkPad T14p, Intel Core Ultra 9 285H, Intel Arrow Lake-P iGPU

- Omarchy 4.0.1-1
- Quickshell 0.3.1-1
- Hyprland 0.56.2-1
- Qt Wayland / Qt Declarative 6.11.2-1
- Kernel 7.1.9-arch1-2

### What's wrong?

Opening a keyboard-focused Omarchy Shell panel can block the entire
Quickshell UI for approximately 1–2 seconds when the current Wayland
clipboard owner is temporarily unresponsive.

Regular application windows remain responsive. The bar and Shell panels
are blocked together.

This reproduces consistently using the stock Clock widget and the following
local clipboard owner.

#### Steps to reproduce

1. In terminal 1, watch the relevant log:

   ```bash
   journalctl --user -f -o cat |
     rg --line-buffered 'QWaylandDataOffer|mimeType'
   ```

2. In terminal 2, create and run a deliberately stalled clipboard owner:

   ```bash
   cat >/tmp/stalled-clipboard.qml <<'QML'
   import QtQuick 2.15
   import QtQuick.Window 2.15

   Window {
       width: 240
       height: 80
       visible: true
       title: "Stalled clipboard owner"

       TextInput {
           anchors.fill: parent
           text: "omarchy-clipboard-timeout-repro"

           Component.onCompleted: {
               forceActiveFocus()
               selectAll()
               copy()
               stall.start()
           }
       }

       Timer {
           id: stall
           interval: 5000

           onTriggered: {
               const deadline = Date.now() + 30000
               while (Date.now() < deadline) {
                   // Simulate an unresponsive clipboard owner.
               }
               Qt.quit()
           }
       }
   }
   QML

   qml /tmp/stalled-clipboard.qml
   ```

3. Within five seconds, click the small “Stalled clipboard owner” window once.

4. Wait until that window becomes unresponsive, then manually click the
   stock Clock widget in the Omarchy bar.

#### Actual result

The Clock panel/bar becomes unresponsive for approximately 1–2 seconds.
The journal prints:

```text
QWaylandDataOffer: timeout reading from pipe
QWaylandDataOffer: error reading data for mimeType text/plain;charset=utf-8
QWaylandDataOffer: timeout reading from pipe
QWaylandDataOffer: error reading data for mimeType text/plain
```

The test application exits automatically after 30 seconds.

The same log occurs intermittently with normal clipboard contents, which is
the real-world symptom this reproducer models.

#### Expected result

An unresponsive clipboard owner should not block the Quickshell GUI thread.
The Clock panel and the rest of the Omarchy Shell should remain responsive,
even if paste availability cannot be determined immediately.

#### Trace

GDB shows the Quickshell main thread synchronously reading the clipboard:

```text
QWaylandDataOffer::startReceiving
QWaylandDataOffer::retrieveData_sys
QInternalMimeData::retrieveData
QClipboard::mimeData
QQuickTextInput::q_canPasteChanged
```

This indicates that a `QQuickTextInput` paste-availability update performs a
blocking clipboard read on the Shell GUI thread.

Also reported as

R-1312 is the earliest report of this defect, filed Aug 28, 2026. 2 later reports describe the same defect.

  1. Aug 28, 2026R-1312 · this report— the original
  2. ·Decided by agents · verified

    Open upstream.

  3. ·Decided by agents · verified

    Open upstream.

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.

  • Decided by arbitration: partly in the audited area (lock)
  • Decided by agents · verified: matches no known issue

The outcome (valid, duplicate, not a bug, …) is not decided yet.