Open shell menus and panels through Hyprland global shortcuts (#13418)

Every binding that opened a menu or panel ran omarchy-menu or
omarchy-shell, which starts a qs client just to deliver one IPC call:
~60ms before the shell heard about the keypress.

The shell now registers a Hyprland global shortcut for each menu route
and panel in default/omarchy/shortcuts, and o.bind turns { menu = ... }
and { panel = ... } into hl.dsp.global for those, so a keypress spawns
nothing. A route or panel missing from the list binds through the
command as before. The default menu and panel bindings use the new form.

SUPER+SPACE opens the menu in ~31ms instead of ~94ms, measured from a
simulated keypress until the menu layer maps.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier HanssonandClaude Opus 5.5 authored and GitHub committed 2026-09-27 18:02:01 +02:00
1 parent fd961e5300
commit 6762769bbf
9 files changed
+251 -22

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
# Hyprland global shortcuts the Omarchy shell registers, one per line: a menu
# route to toggle, or a panel plugin to toggle. A binding written as
# o.bind(keys, description, { menu = "theme" }) or { panel = "omarchy.emojis" }
# dispatches the matching shortcut straight to the shell, with no IPC client to
# spawn per keypress. A route or panel missing here still binds, through the
# omarchy-menu or omarchy-shell command instead.
menu root
menu apps
menu capture
menu toggle
menu hardware
menu system
menu background
menu theme
menu share
menu reminder-set
panel omarchy.clipboard
panel omarchy.emojis
panel omarchy.audio
panel omarchy.bluetooth
panel omarchy.monitor
panel omarchy.clock
panel omarchy.network
panel omarchy.power