Files
dotfiles/dot_config/umbriel/binds.toml
T

170 lines
9.0 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 }
"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 }