mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 19:32:43 +00:00
170 lines
9.0 KiB
TOML
170 lines
9.0 KiB
TOML
# 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 '^(com[.]mitchellh[.]ghostty|kitty|alacritty)' ghostty", 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
|
||
|
||
# At the strip's edge, H/L continue onto the output on that side.
|
||
"Mod+H" = "window-focus-or-output-left"
|
||
"Mod+L" = "window-focus-or-output-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 }
|
||
# Super+W flips the active workspace between scrolling and master (Hyprland's
|
||
# omarchy-toggle-layout); tabbing a column moves to Super+Shift+W.
|
||
"Mod+W" = { action = "workspace-set-layout:toggle:scrolling,master", repeat = false }
|
||
"Mod+Shift+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 }
|