# Keybinds. Defining [keybinds] replaces Umbriel's built-in set. # Mod = Super. Actions: `umbriel msg --help`; `umbriel submap` shows the layer. # # Merged from niri (70-binds.kdl) and Hyprland (bindings.lua). Where both bind a # key differently, niri's scrolling-layout bind wins, except the scratchpad keys: # Hyprland's toggles carry over. Launchers and panels are Noctalia's, not # vicinae's. Apps with one window cycle through umbriel-launch (focus or start). [keybinds] # ------------------------------------------------------------------------------ # Shell (Noctalia) and session "Mod+Space" = { action = "spawn:noctalia msg panel-toggle launcher", repeat = false } "Mod+Shift+Space" = { action = "spawn:noctalia msg panel-toggle launcher /emo", repeat = false } "Mod+P" = { action = "spawn:noctalia msg panel-toggle clipboard", repeat = false } "Mod+Period" = { action = "spawn:noctalia msg panel-toggle control-center", repeat = false } "Mod+Comma" = { action = "spawn:noctalia msg settings-toggle", repeat = false } "Super+Alt+Ctrl+N" = { action = "spawn:noctalia msg panel-open noctalia/notes:panel", repeat = false } "Mod+Ctrl+R" = { action = "spawn:noctalia msg plugin prdlk/ostt:recorder focused toggle", repeat = false } "Mod+Shift+Q" = { action = "spawn:noctalia msg panel-toggle session", repeat = false } "Mod+Shift+E" = "session-quit" "Mod+Escape" = { action = "shortcuts-inhibit-toggle", allow_when_inhibited = true, repeat = false } "Mod+Tab" = { action = "overview-toggle", repeat = false } # Screenshots (Noctalia; no per-window capture) "Mod+S" = { action = "spawn:noctalia msg screenshot-region", repeat = false } "Mod+Ctrl+S" = { action = "spawn:noctalia msg screenshot-fullscreen", repeat = false } "Mod+Ctrl+Shift+S" = { action = "spawn:noctalia msg screenshot-fullscreen all", repeat = false } "Print" = { action = "spawn:noctalia msg screenshot-region", repeat = false } "Ctrl+Print" = { action = "spawn:noctalia msg screenshot-fullscreen", repeat = false } "Mod+F24" = { action = "spawn:voxtype record toggle --profile hermes", repeat = false } # ------------------------------------------------------------------------------ # Scratchpads (Hyprland special workspaces; rules.toml) "Mod+A" = "scratchpad-toggle:tern" "Super+Alt+Ctrl+H" = "scratchpad-toggle:tern" "Super+Alt+Ctrl+L" = "scratchpad-toggle:claude" "Super+Ctrl+A" = "scratchpad-toggle:claude" "Super+Alt+Ctrl+E" = "scratchpad-toggle:fastmail" "Super+Alt+Ctrl+M" = "scratchpad-toggle:beeper" "Super+Alt+Ctrl+B" = "scratchpad-toggle:beeper" "Super+Ctrl+H" = "scratchpad-toggle:home" "Super+Ctrl+L" = "scratchpad-toggle:lmstudio" # ------------------------------------------------------------------------------ # Apps: focus or launch. Spawns run through /bin/sh with the session PATH, # which lacks ~/.local/bin, hence the explicit path. "Super+Alt+Ctrl+J" = { action = "spawn:~/.local/bin/umbriel-launch '^(kitty|alacritty|com[.]mitchellh[.]ghostty)' kitty", repeat = false } "Super+Alt+Ctrl+K" = { action = "spawn:~/.local/bin/umbriel-launch '^brave-origin$' brave-origin", repeat = false } "Super+Alt+Ctrl+G" = { action = "spawn:~/.local/bin/umbriel-launch ghostty ghostty", repeat = false } "Super+Alt+Ctrl+O" = { action = "spawn:~/.local/bin/umbriel-launch '^obsidian$' obsidian", repeat = false } "Super+Alt+Ctrl+F" = { action = "spawn:~/.local/bin/umbriel-launch '^io[.]github[.]lgse[.]Strata$' gtk-launch io.github.lgse.Strata", repeat = false } "Super+Alt+Ctrl+W" = { action = "spawn:~/.local/bin/umbriel-launch '^tldraw-offline$' gtk-launch tldraw-offline", repeat = false } "Super+Alt+Ctrl+T" = { action = "spawn:~/.local/bin/umbriel-launch '^todoist' gtk-launch todoist", repeat = false } "Super+Alt+Ctrl+Y" = { action = "spawn:~/.local/bin/umbriel-launch '^(webapp-|chrome-|brave-.+__)' gtk-launch YouTube", repeat = false } "Super+Alt+Ctrl+Space" = { action = "spawn:~/.local/bin/umbriel-launch '^sticky-notest-canvas$' gtk-launch io.github.faridjaff.StickyNotesCanvas", repeat = false } "Super+Ctrl+G" = { action = "spawn:~/.local/bin/umbriel-launch '^gemini-desktop$' gemini-desktop", repeat = false } "Mod+Shift+G" = { action = "spawn:kitty --class=kitty-goliath --title=goliath --config ~/.config/kitty/goliath.conf", repeat = false } # ------------------------------------------------------------------------------ # Focus "Mod+H" = "window-focus-left" "Mod+L" = "window-focus-right" "Mod+J" = "window-focus-or-workspace-down" "Mod+K" = "window-focus-or-workspace-up" "Mod+BackSpace" = "window-focus-last" "Mod+WheelUp" = { action = "window-focus-left", cooldown_ms = 80 } "Mod+WheelDown" = { action = "window-focus-right", cooldown_ms = 80 } # Outputs "Mod+Left" = "output-focus-left" "Mod+Right" = "output-focus-right" "Mod+Up" = "output-focus-up" "Mod+O" = "output-focus-next" "Super+Ctrl+J" = "output-focus-next" "Super+Ctrl+K" = "output-focus-previous" # ------------------------------------------------------------------------------ # Move "Mod+Shift+H" = "column-move-left" "Mod+Shift+L" = "column-move-right" "Super+Ctrl+Shift+H" = "column-move-to-first" "Super+Ctrl+Shift+L" = "column-move-to-last" "Mod+Shift+J" = "column-move-to-workspace-next" "Mod+Shift+K" = "column-move-to-workspace-previous" "Mod+Shift+Down" = "column-move-to-output-right" "Mod+Shift+Up" = "column-move-to-output-left" "Mod+Shift+O" = "window-move-to-output-next" "Mod+Ctrl+Shift+J" = "window-move-to-output-next" "Mod+Ctrl+Shift+K" = "window-move-to-output-previous" # ------------------------------------------------------------------------------ # Size and state "Mod+R" = "window-cycle-primary-extent" "Mod+Shift+R" = "window-cycle-secondary-extent" "Alt+Shift+H" = "window-modify-primary-extent:-0.1" "Alt+Shift+L" = "window-modify-primary-extent:0.1" "Alt+Shift+J" = "window-modify-secondary-extent:-0.1" "Alt+Shift+K" = "window-modify-secondary-extent:0.1" "Mod+F" = { action = "window-toggle-maximize", repeat = false } "Mod+Shift+F" = { action = "window-toggle-maximize-to-edges", repeat = false } "Mod+Ctrl+F" = { action = "window-toggle-fullscreen", repeat = false } "Mod+C" = "column-center" "Mod+Ctrl+O" = { action = "window-toggle-floating", repeat = false } "Mod+W" = { action = "column-toggle-tabbed", repeat = false } "Mod+Q" = { action = "window-close", repeat = false } # ------------------------------------------------------------------------------ # Workspaces: Super+1–9 (Omarchy), Alt+Q…O → 1–8 (Hyprland) "Mod+1" = "workspace-switch:1" "Mod+2" = "workspace-switch:2" "Mod+3" = "workspace-switch:3" "Mod+4" = "workspace-switch:4" "Mod+5" = "workspace-switch:5" "Mod+6" = "workspace-switch:6" "Mod+7" = "workspace-switch:7" "Mod+8" = "workspace-switch:8" "Mod+9" = "workspace-switch:9" "Mod+Shift+1" = "window-move-to-workspace:1" "Mod+Shift+2" = "window-move-to-workspace:2" "Mod+Shift+3" = "window-move-to-workspace:3" "Mod+Shift+4" = "window-move-to-workspace:4" "Mod+Shift+5" = "window-move-to-workspace:5" "Mod+Shift+6" = "window-move-to-workspace:6" "Mod+Shift+7" = "window-move-to-workspace:7" "Mod+Shift+8" = "window-move-to-workspace:8" "Mod+Shift+9" = "window-move-to-workspace:9" "Alt+Q" = "workspace-switch:1" "Alt+W" = "workspace-switch:2" "Alt+E" = "workspace-switch:3" "Alt+R" = "workspace-switch:4" "Alt+Y" = "workspace-switch:5" "Alt+U" = "workspace-switch:6" "Alt+I" = "workspace-switch:7" "Alt+O" = "workspace-switch:8" "Alt+Shift+Q" = "window-move-to-workspace:1" "Alt+Shift+W" = "window-move-to-workspace:2" "Alt+Shift+E" = "window-move-to-workspace:3" "Alt+Shift+R" = "window-move-to-workspace:4" "Alt+Shift+Y" = "window-move-to-workspace:5" "Alt+Shift+U" = "window-move-to-workspace:6" "Alt+Shift+I" = "window-move-to-workspace:7" "Alt+Shift+O" = "window-move-to-workspace:8" # ------------------------------------------------------------------------------ # Hardware keys (Noctalia OSD) "XF86AudioRaiseVolume" = { action = "spawn:noctalia msg volume-up", allow_when_locked = true } "XF86AudioLowerVolume" = { action = "spawn:noctalia msg volume-down", allow_when_locked = true } "XF86AudioMute" = { action = "spawn:noctalia msg volume-mute", allow_when_locked = true, repeat = false } "XF86AudioMicMute" = { action = "spawn:noctalia msg mic-mute", allow_when_locked = true, repeat = false } "XF86AudioNext" = { action = "spawn:noctalia msg media next", allow_when_locked = true, repeat = false } "XF86AudioPrev" = { action = "spawn:noctalia msg media previous", allow_when_locked = true, repeat = false } "XF86AudioPlay" = { action = "spawn:noctalia msg media toggle", allow_when_locked = true, repeat = false } "XF86AudioPause" = { action = "spawn:noctalia msg media toggle", allow_when_locked = true, repeat = false } "XF86MonBrightnessUp" = { action = "spawn:noctalia msg brightness-up", allow_when_locked = true } "XF86MonBrightnessDown" = { action = "spawn:noctalia msg brightness-down", allow_when_locked = true }