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

Clipboard history paste (ALT+V) closes WeChat (XWayland); history paste uses wtype Shift+Insert while SUPER+V does not

Reported by BeforeUgone123 · filed Oct 6, 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

Clipboard history paste (ALT+V) closes WeChat (XWayland); history paste uses wtype Shift+Insert while SUPER+V does notrevision 1 · captured 2026-10-06 03:31 UTC via poll

System details

Omarchy 4.0.4-1, Hyprland 0.56.2, Arch Linux; wechat-bin 4.1.13.9 (runs under XWayland), xorg-xwayland 24.1.13, wtype 0.4-2, wl-clipboard 2.3.0

What's wrong?

Pasting an entry from the clipboard history (ALT+V, omarchy.clipboard) into WeChat closes the WeChat window.

Steps
1. Run WeChat (wechat-bin, class wechat, xwayland=true in hyprctl clients).
2. Copy any text so it appears in the clipboard history.
3. Focus a WeChat chat input, press ALT+V, select an entry, press Enter.
4. The WeChat window closes.

What I verified
- Clipboard.qml calls omarchy-clipboard-paste-text --shift-insert --history-index N, which ends with wtype -M shift -k Insert -m shift. omarchy-clipboard-paste-file does the same.
- SUPER+V ("Universal paste") in default/hypr/bindings/clipboard.lua does not use wtype; it uses send_key_state (Ctrl+V, or Shift+Insert in terminals). The comment there says a virtual keyboard is not reliable.
- After replacing the wtype call in both paste helpers with the same dispatch SUPER+V uses (workaround below), pasting from ALT+V into WeChat works and the window no longer closes.

Not verified
- I have no crash dump for the main WeChat process. ~/.xwechat/crashinfo only holds old WeChatAppEx dumps, so the claim that wtype is what kills WeChat is inferred from the before/after behaviour above, not from a stack trace.

Workaround I used

send_paste() {
  local lua='
    local w = hl.get_active_window()
    local term = false
    if w then for _, t in ipairs(w.tags or {}) do if t:gsub("%*$", "") == "terminal" then term = true end end end
    local mods, key = "CTRL", "V"
    if term then mods, key = "SHIFT", "Insert" end
    hl.dispatch(hl.dsp.send_key_state({ mods = mods, key = key, state = "STATE" }))
  '
  hyprctl eval "${lua//STATE/down}" >/dev/null 2>&1 || return 0
  sleep 0.05
  hyprctl eval "${lua//STATE/up}" >/dev/null 2>&1 || true
}

It replaces the wtype -M shift -k Insert -m shift line in omarchy-clipboard-paste-text and omarchy-clipboard-paste-file.

Related
#12376 reports the same wtype + Shift+Insert root cause for browsers (emoji picker, and notes the clipboard manager has the same gap); #10526 covers image paste into terminals. This report is a different symptom (the app closes rather than ignoring the paste), but a shared helper would likely fix all three.

Drafted with the help of an AI coding assistant (Claude Code) on the reporter's machine; the reporter ran the checks above.

View raw text
### System details

Omarchy 4.0.4-1, Hyprland 0.56.2, Arch Linux; wechat-bin 4.1.13.9 (runs under XWayland), xorg-xwayland 24.1.13, wtype 0.4-2, wl-clipboard 2.3.0

### What's wrong?

Pasting an entry from the clipboard history (ALT+V, `omarchy.clipboard`) into WeChat closes the WeChat window.

**Steps**
1. Run WeChat (`wechat-bin`, class `wechat`, `xwayland=true` in `hyprctl clients`).
2. Copy any text so it appears in the clipboard history.
3. Focus a WeChat chat input, press ALT+V, select an entry, press Enter.
4. The WeChat window closes.

**What I verified**
- `Clipboard.qml` calls `omarchy-clipboard-paste-text --shift-insert --history-index N`, which ends with `wtype -M shift -k Insert -m shift`. `omarchy-clipboard-paste-file` does the same.
- SUPER+V ("Universal paste") in `default/hypr/bindings/clipboard.lua` does not use `wtype`; it uses `send_key_state` (Ctrl+V, or Shift+Insert in terminals). The comment there says a virtual keyboard is not reliable.
- After replacing the `wtype` call in both paste helpers with the same dispatch SUPER+V uses (workaround below), pasting from ALT+V into WeChat works and the window no longer closes.

**Not verified**
- I have no crash dump for the main WeChat process. `~/.xwechat/crashinfo` only holds old `WeChatAppEx` dumps, so the claim that `wtype` is what kills WeChat is inferred from the before/after behaviour above, not from a stack trace.

**Workaround I used**

```bash
send_paste() {
  local lua='
    local w = hl.get_active_window()
    local term = false
    if w then for _, t in ipairs(w.tags or {}) do if t:gsub("%*$", "") == "terminal" then term = true end end end
    local mods, key = "CTRL", "V"
    if term then mods, key = "SHIFT", "Insert" end
    hl.dispatch(hl.dsp.send_key_state({ mods = mods, key = key, state = "STATE" }))
  '
  hyprctl eval "${lua//STATE/down}" >/dev/null 2>&1 || return 0
  sleep 0.05
  hyprctl eval "${lua//STATE/up}" >/dev/null 2>&1 || true
}
```

It replaces the `wtype -M shift -k Insert -m shift` line in `omarchy-clipboard-paste-text` and `omarchy-clipboard-paste-file`.

**Related**
#12376 reports the same `wtype` + Shift+Insert root cause for browsers (emoji picker, and notes the clipboard manager has the same gap); #10526 covers image paste into terminals. This report is a different symptom (the app closes rather than ignoring the paste), but a shared helper would likely fix all three.

Drafted with the help of an AI coding assistant (Claude Code) on the reporter's machine; the reporter ran the checks above.

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/12377· 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 21:45 UTC