Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA 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.
Universal copy/paste/cut (SUPER+C/V/X) fails on non-Latin keyboard layouts
Reported by airenare · filed Sep 10, 2026Closed upstream on 2026-09-21 by bjarneo via an automated message, as a duplicate of #7371 (R-1688). GitHub close reason: completed.
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?
- Not yet mapped to any requirement or component.
- 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. No decision has been recorded yet.
Original report
What happened
On a multi-layout keyboard setup where a secondary layout doesn't produce Latin letters at the physical C/V/X key positions (e.g. Cyrillic/Russian, but this would affect any non-Latin layout the same way), the default Universal copy/paste/cut shortcuts (SUPER+C, SUPER+V, SUPER+X) silently do nothing while that layout is active. A Hyprland OSD toast appears:
Runtime error in lua:
=[C]:-1: send_key_state: key not foundRoot cause
default/hypr/bindings/clipboard.lua triggers the shortcuts correctly regardless of active layout (Hyprland's bind matching is layout-agnostic by design via input:resolve_binds_by_sym = false). But the injected keystroke is sent by keysym name:
o.bind("SUPER + C", "Universal copy", universal_clipboard_shortcut("CTRL", "C", "CTRL", "Insert"))
o.bind("SUPER + V", "Universal paste", universal_clipboard_shortcut("CTRL", "V", "SHIFT", "Insert"))
o.bind("SUPER + X", "Universal cut", send_shortcut_once("CTRL", "X"))hl.dsp.send_key_state resolves that name ("C", "V", "X") against the currently active keyboard layout/group, not a fixed reference layout. If the active layout has no key that produces that Latin letter (true for Cyrillic and other non-Latin layouts), the lookup throws key not found and the injected Ctrl+C/Ctrl+V/Ctrl+X never happens — so the shortcut appears to just fail with no clipboard action.
This is the same class of bug the default config already works around elsewhere for a trigger key (see the code: comment pattern), but here it's the injected key inside send_key_state that isn't layout-pinned.
Steps to reproduce
- Add a second, non-Latin keyboard layout, e.g. in
~/.config/hypr/input.lua:
hl.config({ input = { kb_layout = "us,ru", kb_options = "grp:alt_shift_toggle" } })- Switch to the non-Latin layout.
- Copy something to the clipboard (e.g. a screenshot).
- Focus a normal (non-terminal) window and press
SUPER+V(orSUPER+C/SUPER+X).
Expected
Copy/paste/cut works the same regardless of which layout is currently active, matching the layout-agnostic behavior of the bind trigger itself.
Actual
Hyprland shows a send_key_state: key not found runtime error toast (see attached screenshot) and no clipboard action occurs.
Suggested fix
Send the injected key by physical position instead of by symbol name, e.g.:
o.bind("SUPER + C", "Universal copy", universal_clipboard_shortcut("CTRL", "code:54", "CTRL", "Insert"))
o.bind("SUPER + V", "Universal paste", universal_clipboard_shortcut("CTRL", "code:55", "SHIFT", "Insert"))
o.bind("SUPER + X", "Universal cut", send_shortcut_once("CTRL", "code:53"))(code:54/55/53 are the physical C/V/X key positions in Hyprland's xkb keycode numbering — layout-independent.) This mirrors the existing code:49 workaround already used elsewhere in the default config for a layout-dependent trigger key, applied here to the injected key instead.
I've applied this fix locally as a user override and confirmed it resolves the issue.
System details
- Omarchy version: 4.0.3-1
- Hyprland version: 0.56.2 (v0.56.2, commit efb50993780079460b0cbed1363e2166a2de1d9f)
kb_layout:us,ru,kb_options:compose:caps,grp:alt_shift_toggle
View raw text
## What happened
On a multi-layout keyboard setup where a secondary layout doesn't produce Latin letters at the physical C/V/X key positions (e.g. Cyrillic/Russian, but this would affect any non-Latin layout the same way), the default Universal copy/paste/cut shortcuts (`SUPER+C`, `SUPER+V`, `SUPER+X`) silently do nothing while that layout is active. A Hyprland OSD toast appears:
```
Runtime error in lua:
=[C]:-1: send_key_state: key not found
```
## Root cause
`default/hypr/bindings/clipboard.lua` triggers the shortcuts correctly regardless of active layout (Hyprland's bind matching is layout-agnostic by design via `input:resolve_binds_by_sym = false`). But the *injected* keystroke is sent by keysym **name**:
```lua
o.bind("SUPER + C", "Universal copy", universal_clipboard_shortcut("CTRL", "C", "CTRL", "Insert"))
o.bind("SUPER + V", "Universal paste", universal_clipboard_shortcut("CTRL", "V", "SHIFT", "Insert"))
o.bind("SUPER + X", "Universal cut", send_shortcut_once("CTRL", "X"))
```
`hl.dsp.send_key_state` resolves that name (`"C"`, `"V"`, `"X"`) against the **currently active** keyboard layout/group, not a fixed reference layout. If the active layout has no key that produces that Latin letter (true for Cyrillic and other non-Latin layouts), the lookup throws `key not found` and the injected Ctrl+C/Ctrl+V/Ctrl+X never happens — so the shortcut appears to just fail with no clipboard action.
This is the same class of bug the default config already works around elsewhere for a *trigger* key (see the `code:` comment pattern), but here it's the *injected* key inside `send_key_state` that isn't layout-pinned.
## Steps to reproduce
1. Add a second, non-Latin keyboard layout, e.g. in `~/.config/hypr/input.lua`:
```lua
hl.config({ input = { kb_layout = "us,ru", kb_options = "grp:alt_shift_toggle" } })
```
2. Switch to the non-Latin layout.
3. Copy something to the clipboard (e.g. a screenshot).
4. Focus a normal (non-terminal) window and press `SUPER+V` (or `SUPER+C` / `SUPER+X`).
## Expected
Copy/paste/cut works the same regardless of which layout is currently active, matching the layout-agnostic behavior of the bind trigger itself.
## Actual
Hyprland shows a `send_key_state: key not found` runtime error toast (see attached screenshot) and no clipboard action occurs.
## Suggested fix
Send the injected key by physical position instead of by symbol name, e.g.:
```lua
o.bind("SUPER + C", "Universal copy", universal_clipboard_shortcut("CTRL", "code:54", "CTRL", "Insert"))
o.bind("SUPER + V", "Universal paste", universal_clipboard_shortcut("CTRL", "code:55", "SHIFT", "Insert"))
o.bind("SUPER + X", "Universal cut", send_shortcut_once("CTRL", "code:53"))
```
(`code:54`/`55`/`53` are the physical C/V/X key positions in Hyprland's xkb keycode numbering — layout-independent.) This mirrors the existing `code:49` workaround already used elsewhere in the default config for a layout-dependent trigger key, applied here to the injected key instead.
I've applied this fix locally as a user override and confirmed it resolves the issue.
## System details
- Omarchy version: 4.0.3-1
- Hyprland version: 0.56.2 (v0.56.2, commit efb50993780079460b0cbed1363e2166a2de1d9f)
- `kb_layout`: `us,ru`, `kb_options`: `compose:caps,grp:alt_shift_toggle`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.
No decision has been recorded yet.