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

Emoji picker fails to insert/paste into Electron apps (e.g. GitHub Copilot Desktop)

Reported by nimatrueway · filed Sep 16, 2026 · open at source

In the audited area (menu) — decided by agents · verified. 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?
AreaIn the audited areamenu· 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?
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: in the audited area (menu) — decided by agents · verified. The outcome (valid, duplicate, not a bug, …) is not decided yet. See the decision.

Original report

Emoji picker fails to insert/paste into Electron apps (e.g. GitHub Copilot Desktop)revision 1 · captured 2026-09-28 21:23 UTC via poll

Description

The emoji picker (omarchy menu emoji, class github window GitHub Copilot) fails to insert the selected emoji into GitHub Copilot Desktop (an Electron/Ozone-Wayland app). Manually pasting immediately afterward also fails, because nothing remains on the clipboard.

Root cause

/usr/share/omarchy/bin/omarchy-menu-emoji-insert copies the emoji to the clipboard via a short-lived wl-copy --foreground process, waits ~0.35s total, sends Shift+Insert via wtype, then kills the wl-copy process:

printf '%s' "$emoji" | wl-copy --type text/plain --sensitive --foreground &
copy_pid=$!
sleep 0.15
wtype -M shift -k Insert -m shift 2>/dev/null || true
sleep 0.2
kill "$copy_pid" 2>/dev/null || true

I confirmed with a manual test that wl-copy --foreground / wl-paste round-trip correctly at the compositor level (Hyprland), so the clipboard mechanism itself is sound. The problem is:

  1. After the emoji picker's exclusive-focus Wayland layer closes, focus needs to return to the previously focused window before the wtype keystroke can land. For Electron/Ozone-Wayland apps this focus restoration appears to take longer than the ~150ms the script allows.
  2. wtype's synthetic zwp_virtual_keyboard_manager_v1 events do not appear to be reliably delivered to/consumed by Electron's Wayland input backend the way they are for native GTK/Qt (Quickshell) surfaces.
  3. Because the script unconditionally kills the wl-copy process ~350ms after starting, the clipboard entry is destroyed almost immediately — even if the automatic paste failed, there's no time window left for the user to manually press Ctrl+V as a fallback.

Steps to Reproduce

  1. Focus a GitHub Copilot Desktop window.
  2. Run omarchy menu emoji (or trigger the emoji picker keybinding).
  3. Select any emoji.
  4. Observe: no emoji is typed into the Copilot Desktop input field.
  5. Try manually pasting (Ctrl+V) immediately after — clipboard is already empty/reverted.

Expected Behavior

The emoji should be inserted into the focused Electron/Copilot Desktop input field, or at minimum remain on the clipboard long enough (or indefinitely, e.g. via wl-copy's normal persistent behavior) for the user to paste it manually if the automatic wtype paste doesn't land.

System Details

  • Omarchy version: 4.0.4-1
  • wl-clipboard: 2.3.0
  • wtype: 0.4-2
  • Compositor: Hyprland
  • Affected app: GitHub Copilot Desktop (Wayland-native Electron app, not XWayland — confirmed via hyprctl clients -j)
  • Debug log: /tmp/omarchy-debug.log (generated via omarchy-debug --no-sudo --print)

Suggested Fix

Consider reusing the more robust logic already present in omarchy clipboard paste text --shift-insert (which appears to be the general-purpose clipboard-paste command) instead of the emoji-specific script's fixed short timers, or increase the kill delay / make it conditional so the clipboard entry survives long enough for a manual paste fallback.

View raw text
## Description

The emoji picker (`omarchy menu emoji`, class `github` window `GitHub Copilot`) fails to insert the selected emoji into **GitHub Copilot Desktop** (an Electron/Ozone-Wayland app). Manually pasting immediately afterward also fails, because nothing remains on the clipboard.

## Root cause

`/usr/share/omarchy/bin/omarchy-menu-emoji-insert` copies the emoji to the clipboard via a short-lived `wl-copy --foreground` process, waits ~0.35s total, sends `Shift+Insert` via `wtype`, then kills the `wl-copy` process:

```bash
printf '%s' "$emoji" | wl-copy --type text/plain --sensitive --foreground &
copy_pid=$!
sleep 0.15
wtype -M shift -k Insert -m shift 2>/dev/null || true
sleep 0.2
kill "$copy_pid" 2>/dev/null || true
```

I confirmed with a manual test that `wl-copy --foreground` / `wl-paste` round-trip correctly at the compositor level (Hyprland), so the clipboard mechanism itself is sound. The problem is:

1. After the emoji picker's exclusive-focus Wayland layer closes, focus needs to return to the previously focused window before the `wtype` keystroke can land. For Electron/Ozone-Wayland apps this focus restoration appears to take longer than the ~150ms the script allows.
2. `wtype`'s synthetic `zwp_virtual_keyboard_manager_v1` events do not appear to be reliably delivered to/consumed by Electron's Wayland input backend the way they are for native GTK/Qt (Quickshell) surfaces.
3. Because the script unconditionally kills the `wl-copy` process ~350ms after starting, the clipboard entry is destroyed almost immediately — even if the automatic paste failed, there's no time window left for the user to manually press Ctrl+V as a fallback.

## Steps to Reproduce

1. Focus a GitHub Copilot Desktop window.
2. Run `omarchy menu emoji` (or trigger the emoji picker keybinding).
3. Select any emoji.
4. Observe: no emoji is typed into the Copilot Desktop input field.
5. Try manually pasting (Ctrl+V) immediately after — clipboard is already empty/reverted.

## Expected Behavior

The emoji should be inserted into the focused Electron/Copilot Desktop input field, or at minimum remain on the clipboard long enough (or indefinitely, e.g. via `wl-copy`'s normal persistent behavior) for the user to paste it manually if the automatic `wtype` paste doesn't land.

## System Details

- Omarchy version: 4.0.4-1
- wl-clipboard: 2.3.0
- wtype: 0.4-2
- Compositor: Hyprland
- Affected app: GitHub Copilot Desktop (Wayland-native Electron app, not XWayland — confirmed via `hyprctl clients -j`)
- Debug log: /tmp/omarchy-debug.log (generated via `omarchy-debug --no-sudo --print`)

## Suggested Fix

Consider reusing the more robust logic already present in `omarchy clipboard paste text --shift-insert` (which appears to be the general-purpose clipboard-paste command) instead of the emoji-specific script's fixed short timers, or increase the kill delay / make it conditional so the clipboard entry survives long enough for a manual paste fallback.

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/8573· 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.

  • Decided by agents · verified: in the audited area (menu)

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