Skip to Content
guides-3jkv7xdKeybindings

Last Updated: 3/12/2026


Keybindings

Keybindings are the heart of Hyprland’s keyboard-driven workflow. This guide covers how to define, customize, and organize your keybindings effectively.

Binding Syntax

The basic syntax for keybindings:

bind = MODIFIERS, KEY, ACTION, PARAMETERS
  • MODIFIERS: SUPER, ALT, CTRL, SHIFT, or combinations like SUPER SHIFT
  • KEY: Key name (letter, number, or special key like left, right, space)
  • ACTION: Command to execute (e.g., exec, killactive, workspace)
  • PARAMETERS: Action-specific arguments

Binding Types

Hyprland supports several binding types:

  • bind: Standard keybinding (press to trigger)
  • bindr: Trigger on key release
  • binde: Repeat while held
  • bindl: Trigger even when locked
  • bindel: Repeat while held, even when locked
  • bindm: Mouse binding (for dragging/resizing)

Essential Keybindings

Window Management

$mainMod = SUPER # Launch and close bind = $mainMod, Q, exec, $terminal bind = $mainMod, C, killactive, bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit # Window modes bind = $mainMod, V, togglefloating, bind = $mainMod, F, fullscreen, bind = $mainMod, P, pseudo, # Pseudotile (dwindle layout)

Focus Movement

# Arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d # Vim-style navigation bind = $mainMod, H, movefocus, l bind = $mainMod, L, movefocus, r bind = $mainMod, K, movefocus, u bind = $mainMod, J, movefocus, d

Window Movement

# Move windows between positions bind = $mainMod SHIFT, left, movewindow, l bind = $mainMod SHIFT, right, movewindow, r bind = $mainMod SHIFT, up, movewindow, u bind = $mainMod SHIFT, down, movewindow, d

Workspaces

# Switch to workspace bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 bind = $mainMod, 3, workspace, 3 bind = $mainMod, 4, workspace, 4 bind = $mainMod, 5, workspace, 5 bind = $mainMod, 6, workspace, 6 bind = $mainMod, 7, workspace, 7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 9, workspace, 9 bind = $mainMod, 0, workspace, 10 # Move window to workspace bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $mainMod SHIFT, 0, movetoworkspace, 10

Special Workspaces (Scratchpads)

# Toggle special workspace bind = $mainMod, S, togglespecialworkspace, magic # Move window to special workspace bind = $mainMod SHIFT, S, movetoworkspace, special:magic

Mouse Bindings

# Move/resize windows with mouse bindm = $mainMod, mouse:272, movewindow # Left mouse button bindm = $mainMod, mouse:273, resizewindow # Right mouse button # Scroll through workspaces bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1

Application Launchers

$terminal = kitty $fileManager = dolphin $menu = hyprlauncher bind = $mainMod, Q, exec, $terminal bind = $mainMod, E, exec, $fileManager bind = $mainMod, R, exec, $menu

Multimedia Keys

Volume Control

# Volume up/down bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- # Mute bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle

Brightness Control

bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+ bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-

Media Playback

# Requires playerctl bindl = , XF86AudioNext, exec, playerctl next bindl = , XF86AudioPause, exec, playerctl play-pause bindl = , XF86AudioPlay, exec, playerctl play-pause bindl = , XF86AudioPrev, exec, playerctl previous

Layout-Specific Bindings

Dwindle Layout

bind = $mainMod, J, layoutmsg, togglesplit # Toggle split direction bind = $mainMod, P, pseudo, # Pseudotile

Master Layout

bind = $mainMod, J, layoutmsg, swapwithmaster # Swap with master bind = $mainMod, K, layoutmsg, cyclenext # Cycle through slaves

Advanced Keybindings

Execute Shell Commands

bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit

Use hyprctl for Complex Actions

bind = $mainMod SHIFT, F, exec, hyprctl dispatch togglefloating && hyprctl dispatch centerwindow

Global Keybinds (Pass to Apps)

bind = , Print, pass, ^(discord)$ # Pass Print key to Discord

Organizing Keybindings

For large configs, split keybindings into a separate file:

~/.config/hypr/keybindings.conf:

$mainMod = SUPER # Window management bind = $mainMod, Q, exec, $terminal bind = $mainMod, C, killactive, # Workspaces bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 # ... more bindings

~/.config/hypr/hyprland.conf:

source = ~/.config/hypr/keybindings.conf

Common Modifier Keys

  • SUPER: Windows/Command key (most common for WM bindings)
  • ALT: Alt key (often used for app-specific shortcuts)
  • CTRL: Control key
  • SHIFT: Shift key

Combine modifiers:

bind = SUPER SHIFT, Q, exec, $terminal bind = CTRL ALT, Delete, exec, systemctl reboot

Keybinding Tips

  1. Use variables: Define $mainMod to easily change your primary modifier
  2. Group by function: Organize bindings by category (windows, workspaces, apps)
  3. Test incrementally: Add bindings one at a time and test them
  4. Avoid conflicts: Check for overlapping keybindings
  5. Document custom bindings: Use comments to explain non-obvious shortcuts

What’s Next

  • hyprctl CLI: Control Hyprland programmatically from the command line