Bar-widget panels (audio, bluetooth, network, power, monitor) used to be toggled via their own per-plugin IpcHandler targets. Quickshell resolves duplicate targets first-handler-wins, so after a plugin or bar reload the stale handler of the destroyed widget instance kept claiming the target and the hotkeys went dead. The shell root's IpcHandler lives outside the reload cycle, so summon, hide, and toggle now go through `omarchy-shell shell toggle <plugin>` and the shell routes to the live widget instance via the bar's slot registry. Panel plugins that are also panel/overlay/menu kinds keep using the panel loader path. Failures to find a live widget are logged so a widget missing from the bar layout stays diagnosable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
96 lines
5.5 KiB
Lua
96 lines
5.5 KiB
Lua
o.bind("SUPER + SPACE", "Launch apps", "omarchy-shell shell toggle omarchy.launcher \"{}\"")
|
|
o.bind("SUPER + CTRL + E", "Emojis", "omarchy-shell shell toggle omarchy.emojis")
|
|
o.bind("SUPER + CTRL + C", "Capture menu", "omarchy-menu toggle capture")
|
|
o.bind("SUPER + CTRL + O", "Toggle menu", "omarchy-menu toggle toggle")
|
|
o.bind("SUPER + CTRL + H", "Hardware menu", "omarchy-menu toggle hardware")
|
|
o.bind("SUPER + ALT + SPACE", "Omarchy menu", "omarchy-menu toggle root")
|
|
o.bind("SUPER + SHIFT + code:201", "Omarchy menu", "omarchy-menu toggle root")
|
|
o.bind("SUPER + ESCAPE", "System menu", "omarchy-menu toggle system")
|
|
o.bind("XF86PowerOff", "Power menu", "omarchy-menu toggle system", { locked = true })
|
|
o.bind("SUPER + K", "Show key bindings", "omarchy-menu-keybindings")
|
|
o.bind("SUPER + ALT + K", "Show Tmux key bindings", "omarchy-menu-tmux-keybindings")
|
|
o.bind("XF86Calculator", "Calculator", "gnome-calculator")
|
|
|
|
o.bind_toggle("SUPER + SHIFT + SPACE", "Toggle top bar", "bar")
|
|
o.bind("SUPER + SHIFT + CTRL + UP", "Move bar to top", "omarchy-style-bar-position top")
|
|
o.bind("SUPER + SHIFT + CTRL + DOWN", "Move bar to bottom", "omarchy-style-bar-position bottom")
|
|
o.bind("SUPER + SHIFT + CTRL + LEFT", "Move bar to left", "omarchy-style-bar-position left")
|
|
o.bind("SUPER + SHIFT + CTRL + RIGHT", "Move bar to right", "omarchy-style-bar-position right")
|
|
o.bind("SUPER + CTRL + SPACE", "Background switcher", "omarchy-menu toggle background")
|
|
o.bind("SUPER + SHIFT + CTRL + SPACE", "Theme menu", "omarchy-menu toggle theme")
|
|
o.bind("SUPER + BACKSPACE", "Toggle window transparency", "omarchy-hyprland-window-transparency-toggle")
|
|
o.bind("SUPER + SHIFT + BACKSPACE", "Toggle window gaps", "omarchy-hyprland-window-gaps-toggle")
|
|
o.bind("SUPER + CTRL + BACKSPACE", "Toggle single-window square aspect", "omarchy-hyprland-window-single-square-aspect-toggle")
|
|
|
|
-- xkbcommon names the comma keysym "comma"; the upper-case "COMMA" does not match.
|
|
o.bind("SUPER + comma", "Dismiss last notification", "omarchy-shell notifications dismissOne")
|
|
o.bind("SUPER + SHIFT + comma", "Dismiss all notifications", "omarchy-shell notifications dismissAll")
|
|
o.bind_toggle("SUPER + CTRL + comma", "Toggle silencing notifications", "notification-silencing")
|
|
o.bind("SUPER + ALT + comma", "Invoke last notification", "omarchy-shell notifications invokeLast")
|
|
o.bind("SUPER + SHIFT + ALT + comma", "Open notification history", "omarchy-shell notifications showHistory")
|
|
|
|
o.bind_toggle("SUPER + CTRL + I", "Toggle locking on idle", "idle")
|
|
o.bind_toggle("SUPER + CTRL + N", "Toggle nightlight", "nightlight")
|
|
o.bind("SUPER + CTRL + Delete", "Toggle laptop display", "omarchy-hyprland-monitor-internal toggle")
|
|
o.bind("SUPER + CTRL + ALT + Delete", "Toggle laptop display mirroring", "omarchy-hyprland-monitor-internal-mirror toggle")
|
|
o.bind("switch:on:Lid Switch", nil, "omarchy-hyprland-monitor-clamshell", { locked = true })
|
|
o.bind("switch:off:Lid Switch", nil, "omarchy-hyprland-monitor-clamshell", { locked = true })
|
|
|
|
o.bind("PRINT", "Screenshot", "omarchy-capture-screenshot")
|
|
o.bind("ALT + PRINT", "Screenrecording", "omarchy-capture-screenrecording --stop-recording || omarchy-menu toggle trigger.capture.screenrecord")
|
|
o.bind("SUPER + PRINT", "Color picker", "pkill hyprpicker || hyprpicker -a")
|
|
o.bind("SUPER + CTRL + PRINT", "Extract text (OCR) from screenshot", "omarchy-capture-text-extraction")
|
|
|
|
-- While the slurp region picker is open, Return captures the entire focused
|
|
-- monitor. The bind lives exactly as long as a selection layer is on screen
|
|
-- (slurp opens one per monitor), so it cannot leak or get stuck.
|
|
local selection_layers = 0
|
|
|
|
hl.on("layer.opened", function(layer)
|
|
if layer.namespace == "selection" then
|
|
selection_layers = selection_layers + 1
|
|
if selection_layers == 1 then
|
|
hl.bind("RETURN", hl.dsp.exec_cmd("omarchy-capture-region --take-fullscreen"), { description = "Capture entire screen" })
|
|
end
|
|
end
|
|
end)
|
|
|
|
hl.on("layer.closed", function(layer)
|
|
if layer.namespace == "selection" and selection_layers > 0 then
|
|
selection_layers = selection_layers - 1
|
|
if selection_layers == 0 then
|
|
hl.unbind("RETURN")
|
|
end
|
|
end
|
|
end)
|
|
|
|
o.bind("SUPER + CTRL + S", "Share", "omarchy-menu toggle share")
|
|
|
|
o.bind("SUPER + CTRL + PERIOD", "Transcode", "omarchy-transcode")
|
|
|
|
o.bind("SUPER + CTRL + R", "Set reminder", "omarchy-menu toggle reminder-set")
|
|
o.bind("SUPER + CTRL + ALT + R", "Show reminders", "omarchy-reminder show")
|
|
o.bind("SUPER + SHIFT + CTRL + R", "Clear reminders", "omarchy-reminder clear")
|
|
|
|
o.bind("SUPER + CTRL + ALT + T", "Show time", "omarchy-notification-time")
|
|
o.bind("SUPER + CTRL + ALT + B", "Show battery remaining", "omarchy-notification-battery")
|
|
o.bind("SUPER + CTRL + ALT + W", "Toggle weather", "omarchy-notification-weather")
|
|
|
|
o.bind("SUPER + CTRL + A", "Audio", "omarchy-shell shell toggle omarchy.audio")
|
|
o.bind("SUPER + CTRL + B", "Bluetooth", "omarchy-shell shell toggle omarchy.bluetooth")
|
|
o.bind("SUPER + CTRL + D", "Display", "omarchy-shell shell toggle omarchy.monitor")
|
|
o.bind("SUPER + CTRL + W", "Network", "omarchy-shell shell toggle omarchy.network")
|
|
o.bind("SUPER + CTRL + P", "Power", "omarchy-shell shell toggle omarchy.power")
|
|
o.bind("SUPER + CTRL + T", "Activity", { tui = "btop" })
|
|
|
|
o.bind("SUPER + CTRL + Z", "Zoom in", function()
|
|
local zoom = hl.get_config("cursor.zoom_factor") or 1
|
|
hl.config({ cursor = { zoom_factor = zoom + 1 } })
|
|
end)
|
|
|
|
o.bind("SUPER + CTRL + ALT + Z", "Reset zoom", function()
|
|
hl.config({ cursor = { zoom_factor = 1 } })
|
|
end)
|
|
|
|
o.bind("SUPER + CTRL + L", "Lock system", "omarchy-system-lock")
|