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 clipboard (Super+C/V) doesn't work in Ghostty quick terminal
Reported by KristianHolme · filed Jul 6, 2026Closed upstream on 2026-07-06 by dhh, as a duplicate of #6181 (R-4483). 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
System details
Omarchy 3.8.2, Hyprland 0.55.4
What's wrong?
Description written by Cursor:
Summary
Omarchy's universal clipboard bindings use sendshortcut … activewindow, but Ghostty's quick terminal is a wl-layer-shell surface (namespace: quickterminal), not a Hyprland window. When the quick terminal is open, activewindow still points at the app underneath, so Super+C/V/X go to the wrong target.
Reproduction
1. Enable Ghostty quick terminal (~/.config/ghostty/config):
keybind = global:super+ctrl+enter=toggle_quick_terminal
quick-terminal-position = center
quick-terminal-size = 70%, 40%
gtk-quick-terminal-namespace = quickterminal2. Bind toggle in Hyprland (match hyprctl globalshortcuts after Ghostty restart):
bindd = SUPER CTRL, RETURN, Quick terminal, global, com.mitchellh.ghostty:CTRL+LOGO+Return3. Restart Ghostty, then reload Hyprland.
4. Reproduce:
- Open any non-terminal app (browser, etc.)
- Toggle quick terminal (Super+Ctrl+Enter)
- Select text in the quick terminal → Super+C
- Super+V in the quick terminal (or another app)
Expected: copy/paste works in the quick terminal.
Actual: Super+C/V affect the window underneath (or do nothing useful in the quick terminal). Regular Ghostty windows work fine.
Verify: With quick terminal open, hyprctl activewindow shows the background app, while hyprctl layers shows a quickterminal layer.
Cause
# default/hypr/bindings/clipboard.conf
bindd = SUPER, C, Universal copy, sendshortcut, CTRL, Insert, activewindowactivewindow never targets layer surfaces. Hyprland's sendshortcut also has no layer filter (#11800).
Possible fix
When the quickterminal layer is visible, dispatch Ghostty global shortcuts instead:
# ghostty config
keybind = global:super+c=copy_to_clipboard
keybind = global:super+v=paste_from_clipboardRoute via a small helper (e.g. omarchy-hyprland-universal-clipboard) that detects the layer and calls hyprctl dispatch global com.mitchellh.ghostty:LOGO+c / LOGO+v; otherwise keep current sendshortcut … activewindow behavior.
Notes
- Ghostty + Hyprland only (quick terminal is not a generic terminal feature)
- Cut (Super+X) has no Ghostty global action; may need a pid fallback
- No impact when quick terminal isn't open
View raw text
### System details Omarchy 3.8.2, Hyprland 0.55.4 ### What's wrong? Description written by Cursor: ### Summary Omarchy's universal clipboard bindings use `sendshortcut … activewindow`, but Ghostty's quick terminal is a **wl-layer-shell surface** (`namespace: quickterminal`), not a Hyprland window. When the quick terminal is open, `activewindow` still points at the app underneath, so Super+C/V/X go to the wrong target. ### Reproduction **1. Enable Ghostty quick terminal** (`~/.config/ghostty/config`): ```ini keybind = global:super+ctrl+enter=toggle_quick_terminal quick-terminal-position = center quick-terminal-size = 70%, 40% gtk-quick-terminal-namespace = quickterminal ``` **2. Bind toggle in Hyprland** (match `hyprctl globalshortcuts` after Ghostty restart): ```ini bindd = SUPER CTRL, RETURN, Quick terminal, global, com.mitchellh.ghostty:CTRL+LOGO+Return ``` **3. Restart Ghostty**, then reload Hyprland. **4. Reproduce:** 1. Open any non-terminal app (browser, etc.) 2. Toggle quick terminal (Super+Ctrl+Enter) 3. Select text in the quick terminal → Super+C 4. Super+V in the quick terminal (or another app) **Expected:** copy/paste works in the quick terminal. **Actual:** Super+C/V affect the window underneath (or do nothing useful in the quick terminal). Regular Ghostty windows work fine. **Verify:** With quick terminal open, `hyprctl activewindow` shows the background app, while `hyprctl layers` shows a `quickterminal` layer. ### Cause ```ini # default/hypr/bindings/clipboard.conf bindd = SUPER, C, Universal copy, sendshortcut, CTRL, Insert, activewindow ``` `activewindow` never targets layer surfaces. Hyprland's `sendshortcut` also has no layer filter ([#11800](https://github.com/hyprwm/Hyprland/discussions/11800)). ### Possible fix When the `quickterminal` layer is visible, dispatch Ghostty global shortcuts instead: ```ini # ghostty config keybind = global:super+c=copy_to_clipboard keybind = global:super+v=paste_from_clipboard ``` Route via a small helper (e.g. `omarchy-hyprland-universal-clipboard`) that detects the layer and calls `hyprctl dispatch global com.mitchellh.ghostty:LOGO+c` / `LOGO+v`; otherwise keep current `sendshortcut … activewindow` behavior. ### Notes - Ghostty + Hyprland only (quick terminal is not a generic terminal feature) - Cut (Super+X) has no Ghostty global action; may need a pid fallback - No impact when quick terminal isn't open
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.