Skip to main content

Overview

This configuration uses Super (Windows/Command key) as the main modifier key. Fish shell is configured with VI mode keybindings for command-line editing.

Hyprland Keybindings

Application Launchers

KeybindingActionApplication
Super + Shift + ReturnLaunch terminalKitty
Super + PApplication launcherRofi
Super + EFile managerNautilus
Super + Shift + NCode editorVS Code Insiders
Super + Shift + ONote takerObsidian
Super + Shift + PWeb browserZen Browser

Window Management

KeybindingAction
Super + Shift + CKill active window
Super + Shift + QExit Hyprland
Super + Alt + FToggle floating mode
Super + Shift + TToggle split direction
Super + RPseudo tile mode
Alt + TabFocus current or last window

Window Focus (VI-style)

KeybindingDirection
Super + HFocus up
Super + JFocus right
Super + GFocus down
Super + FFocus left

Window Movement

KeybindingDirection
Super + Shift + HMove window up
Super + Shift + JMove window right
Super + Shift + GMove window down
Super + Shift + FMove window left

Window Resizing

KeybindingAction
Super + Ctrl + HResize left (-20px)
Super + Ctrl + LResize right (+20px)
Super + Ctrl + KResize up (-20px)
Super + Ctrl + JResize down (+20px)

Workspaces

Switch to workspace:
  • Super + [1-9,0] - Switch to workspace 1-10
Move window to workspace:
  • Super + Shift + [1-9,0] - Move active window to workspace 1-10
Special workspace (scratchpad):
  • Super + S - Toggle scratchpad visibility
  • Super + Shift + S - Move window to scratchpad
Navigate workspaces:
  • Super + Mouse Wheel Up - Next workspace
  • Super + Mouse Wheel Down - Previous workspace

Multi-Monitor

KeybindingAction
Super + Alt + FMove workspace to left monitor
Super + Alt + JMove workspace to right monitor
Super + Alt + HMove workspace to monitor above
Super + Alt + GMove workspace to monitor below

System Controls

KeybindingAction
Super + VClipboard history (Rofi)
Super + Shift + VVolume control (pavucontrol)
Super + BToggle Waybar visibility
PrintScreenshot (area select)

Media Keys

KeyAction
XF86AudioRaiseVolumeVolume up 5%
XF86AudioLowerVolumeVolume down 5%
XF86AudioMuteToggle mute
XF86AudioMicMuteToggle mic mute
XF86MonBrightnessUpBrightness up 10%
XF86MonBrightnessDownBrightness down 10%
XF86AudioNextNext track
XF86AudioPrevPrevious track
XF86AudioPlay/PausePlay/pause

Mouse Bindings

BindingAction
Super + Left Click + DragMove window
Super + Right Click + DragResize window

Customizing Hyprland Keybindings

Location

~/.config/hypr/modules/keybindings.conf

Syntax

bind = MODIFIERS, KEY, ACTION, PARAMETERS
bindm = MODIFIERS, MOUSE_BUTTON, ACTION  # Mouse bindings
bindel = KEY, ACTION, PARAMETERS         # Repeat on hold
bindl = KEY, ACTION, PARAMETERS          # Works when locked

Examples

Launch an application:
bind = $mainMod SHIFT, RETURN, exec, kitty
bind = $mainMod, B, exec, firefox
Window actions:
bind = $mainMod, F, fullscreen,
bind = $mainMod SHIFT, C, killactive,
bind = $mainMod, SPACE, togglefloating,
Custom resize amount:
# Resize by 50px instead of 20px
bind = $mainMod CTRL, H, resizeactive, -50 0
bind = $mainMod CTRL, L, resizeactive, 50 0
Change main modifier:
# In hyprland.conf
$mainMod = ALT  # Use Alt instead of Super

Available Modifiers

  • SUPER / SUPER_L / SUPER_R - Windows/Command key
  • ALT / ALT_L / ALT_R - Alt key
  • CTRL / CONTROL - Control key
  • SHIFT - Shift key
Combine with spaces: SUPER SHIFT, CTRL ALT

Disabling Keybindings

Comment out lines with #:
# bind = $mainMod, E, exec, $fileManager

Fish Shell Keybindings

VI Mode

The configuration uses VI keybindings in insert mode:
# In ~/.config/fish/config.fish
fish_vi_key_bindings insert

VI Mode Keys

Normal mode (press Esc in command line):
KeyAction
hMove cursor left
lMove cursor right
bMove word backward
wMove word forward
0Move to line start
$Move to line end
ddDelete line
d$Delete to end of line
dwDelete word
iEnter insert mode
aEnter insert mode (after cursor)
AEnter insert mode (end of line)
vVisual mode
/Search command history
Insert mode (default):
  • Type normally
  • Press Esc to enter normal mode
  • Ctrl + C - Cancel current line
  • Ctrl + D - Exit shell

Switching to Emacs Mode

For traditional bash-style keybindings:
# In ~/.config/fish/config.fish
# Replace this line:
fish_vi_key_bindings insert

# With this:
fish_default_key_bindings

Custom Fish Keybindings

Create custom bindings in config.fish:
# Insert mode binding
bind -M insert \cf forward-word  # Ctrl+F to jump forward

# Normal mode binding  
bind -M default \cg end-of-line  # Ctrl+G to end of line

Fish Cursor Style

Customize cursor appearance:
# In config.fish
set fish_cursor_default block     # Normal mode: block
set fish_cursor_insert line       # Insert mode: line
set fish_cursor_visual underscore # Visual mode: underscore
set fish_cursor_replace_one underscore

Tool Integration Keybindings

Tmux

If using tmux with this configuration, you may want to coordinate prefix keys:
# Check current tmux prefix
tmux show-options -g prefix

Neovim

Neovim keybindings are separate and configured in ~/.config/nvim/. VI mode in Fish provides consistent muscle memory.

Quick Reference Card

Most Used Keybindings

Super + Shift + Return  →  Terminal
Super + P               →  App Launcher  
Super + Shift + C       →  Close Window
Super + [1-9]          →  Switch Workspace
Super + H/J/G/F        →  Navigate Windows (VI-style)
Alt + Tab              →  Last Window
Print                  →  Screenshot

Adding to Your Setup

  1. Edit keybindings: ~/.config/hypr/modules/keybindings.conf
  2. Reload Hyprland: Super + Shift + Q (logout) then log back in, or reload config
  3. Test binding: Try your new keybinding
  4. Check conflicts: Make sure your new binding doesn’t conflict with existing ones

Troubleshooting

Keybinding Not Working

  1. Check for conflicts with other bindings
  2. Verify the application is installed:
    which kitty  # Or whatever app you're launching
    
  3. Test the command directly:
    kitty  # Should launch the terminal
    
  4. Check Hyprland logs:
    hyprctl logs
    

Finding Key Names

Run wev or xev to see key names as you press them:
wev  # Wayland event viewer

Build docs developers (and LLMs) love