Files
dotfiles/dot_config/umbriel/binds.toml
T

181 lines
9.8 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 }
"Super+Ctrl+Shift+BackSpace" = { action = "spawn:noctalia msg panel-toggle launcher /session", 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+Shift+B" = { action = "spawn:noctalia msg panel-toggle dunarand/bookmarks: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|chromium|firefox)$' 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
# niri's consume-or-expel, then on to the next output at the strip's end
# (umbriel-smart-move).
"Mod+Shift+H" = "spawn:~/.local/bin/umbriel-smart-move left"
"Mod+Shift+L" = "spawn:~/.local/bin/umbriel-smart-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"
# Nudge the focused floating window 50 logical px, vim directions (held keys
# repeat). window-move-by needs umbriel-git; the [cachyos] build lacks it.
"Alt+H" = "window-move-by:-50/0"
"Alt+J" = "window-move-by:0/50"
"Alt+K" = "window-move-by:0/-50"
"Alt+L" = "window-move-by:50/0"
"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" = { action = "spawn:~/.local/bin/umbriel-float-square", repeat = false }
"Mod+T" = { action = "window-toggle-floating", repeat = false }
# Super+W flips the active workspace between scrolling and dwindle (Hyprland's
# omarchy-toggle-layout). Super+G tabs the focused window with the windows
# stacked beside it, or stacks a tab group again (Hyprland's group key).
"Mod+W" = { action = "workspace-set-layout:toggle:scrolling,dwindle", repeat = false }
"Mod+G" = { 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 }