$MOUSE_LMB = mouse:272 $MOUSE_RMB = mouse:273 $MOUSE_MMB = mouse:274 $MOUSE_EX1 = mouse:275 $MOUSE_EX2 = mouse:276 # DE/WM control bind = SUPER_SHIFT, Q, exec, menuquit bind = SUPER_CTRL, L, exec, loginctl lock-session bind = SUPER_SHIFT, L, exec, wlogout -p layer-shell bind = SUPER_SHIFT, T, exec, toggle-idle # Programs bind = SUPER, R, exec, wofi --show drun bind = SUPER_SHIFT, Return, exec, wofi --show run bind = SUPER_SHIFT, C, exec, clipman pick -t wofi bind = SUPER, Return, exec, kitty bind = SUPER, X, exec, pcmanfm-qt bind = SUPER, B, exec, firefox bind = SUPER, S, exec, spotify bind = SUPER, D, exec, discord bind = SUPER, C, exec, qalculate-gtk bind = , XF86Calculator, exec, qalculate-gtk # Notifications bind = CTRL, grave, exec, dunstctl close bind = CTRL_SHIFT, grave, exec, dunstctl close-all bind = CTRL, period, exec, dunstctl history-pop bind = CTRL_SHIFT, period, exec, dunstctl context bind = SUPER_SHIFT, D, exec, toggle-notifications # Volume comtrol binde = SUPER, Down, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05- binde = SUPER, Up, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+ binde = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05- binde = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+ bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle bind = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle # Brightness control binde = SUPER, Right, exec, brightness -i 5% -n binde = SUPER, Left, exec, brightness -d 5% -n binde = , XF86MonBrightnessUp, exec, brightness -i 5% -n binde = , XF86MonBrightnessDown, exec, brightness -d 5% -n # Screenshots (with custom screenshot script) $SCREENSHOT_FORMAT = "${XDG_SCREENSHOTS_DIR:-$HOME/Pictures/Screenshots}/Screenshot_$(date +%Y-%m-%d_%H-%M-%S).png" $SCREENSHOT_DELAY = 2000 bind = , 642, exec, quick-record --notify toggle bind = SUPER, 642, exec, quick-record toggle bind = ALT, Print, exec, wl-copy --type image/png "$(hyprpicker)" && notify-send 'Picked color' "$(wl-paste) (saved to clipboard)" bind = , Print, exec, screenshot --notify --copy --target area bind = SUPER, Print, exec, screenshot --notify --copy --target area --edit bind = SHIFT, Print, exec, screenshot --notify --save $SCREENSHOT_FORMAT --target area bind = CTRL, Print, exec, screenshot --notify --copy --target area --delay $SCREENSHOT_DELAY bind = SUPER_SHIFT, Print, exec, screenshot --notify --save $SCREENSHOT_FORMAT --target area --edit bind = SUPER_CTRL, Print, exec, screenshot --notify --copy --target area --delay $SCREENSHOT_DELAY --edit bind = SUPER_SHIFT_CTRL, Print, exec, screenshot --notify --save $SCREENSHOT_FORMAT --target area --delay $SCREENSHOT_DELAY --edit # bind = , Print, exec, screenshot --save $SCREENSHOT_FORMAT --target all # Active window bind = SUPER, W, killactive, bind = SUPER, F, togglefloating, bind = SUPER, Space, fullscreen, 0 bind = SUPER_SHIFT, Space, fullscreen, 1 bind = CTRL_SHIFT, Space, exec, toggle-fakefullscreen bind = SUPER, P, exec, bash -c "if hyprctl activewindow | grep 'floating: 0'; then hyprctl dispatch togglefloating active; fi; hyprctl dispatch pin active" bind = SUPER_SHIFT, P, pseudo, bind = SUPER_SHIFT, S, togglesplit, # Window groups bind = SUPER, G, togglegroup, bind = ALT, tab, changegroupactive, f bind = ALT, grave, changegroupactive, b # Special workspace (scratchpad) bind = ALT, grave, movetoworkspace, special bind = SUPER, grave, togglespecialworkspace, # Move window focus bind = SUPER, h, movefocus, l bind = SUPER, l, movefocus, r bind = SUPER, k, movefocus, u bind = SUPER, j, movefocus, d # Move active window in direction bind = SUPER_ALT, h, movewindow, l bind = SUPER_ALT, l, movewindow, r bind = SUPER_ALT, k, movewindow, u bind = SUPER_ALT, j, movewindow, d # Move between workspaces, swapping to current monitor (like xmonad) bind = SUPER, 1, exec, swap-workspace 1 bind = SUPER, 2, exec, swap-workspace 2 bind = SUPER, 3, exec, swap-workspace 3 bind = SUPER, 4, exec, swap-workspace 4 bind = SUPER, 5, exec, swap-workspace 5 bind = SUPER, 6, exec, swap-workspace 6 bind = SUPER, 7, exec, swap-workspace 7 bind = SUPER, 8, exec, swap-workspace 8 bind = SUPER, 9, exec, swap-workspace 9 # Move windows to workspaces bind = SUPER_SHIFT, 1, movetoworkspacesilent, 1 bind = SUPER_SHIFT, 2, movetoworkspacesilent, 2 bind = SUPER_SHIFT, 3, movetoworkspacesilent, 3 bind = SUPER_SHIFT, 4, movetoworkspacesilent, 4 bind = SUPER_SHIFT, 5, movetoworkspacesilent, 5 bind = SUPER_SHIFT, 6, movetoworkspacesilent, 6 bind = SUPER_SHIFT, 7, movetoworkspacesilent, 7 bind = SUPER_SHIFT, 8, movetoworkspacesilent, 8 bind = SUPER_SHIFT, 9, movetoworkspacesilent, 9 # Move windows to workspaces and focus it there bind = ALT, 1, movetoworkspace, 1 bind = ALT, 2, movetoworkspace, 2 bind = ALT, 3, movetoworkspace, 3 bind = ALT, 4, movetoworkspace, 4 bind = ALT, 5, movetoworkspace, 5 bind = ALT, 6, movetoworkspace, 6 bind = ALT, 7, movetoworkspace, 7 bind = ALT, 8, movetoworkspace, 8 bind = ALT, 9, movetoworkspace, 9 # Cycle workspaces (relative movement) bind = SUPER, mouse_down, workspace, +1 bind = SUPER, mouse_up, workspace, -1 bind = SUPER, bracketleft, workspace, -1 bind = SUPER, bracketright, workspace, +1 # Cycle monitors bind = SUPER_SHIFT, bracketleft, focusmonitor, -1 bind = SUPER_SHIFT, bracketright, focusmonitor, +1 # Mouse window resizing bindm = SUPER, $MOUSE_LMB, movewindow bindm = SUPER, $MOUSE_RMB, resizewindow # Quick keyboard window resizing binde = ALT, right, resizeactive, 10 0 binde = ALT, left, resizeactive, -10 0 binde = ALT, up, resizeactive, 0 -10 binde = ALT, down, resizeactive, 0 10 binde = ALT, H, resizeactive, -10 0 binde = ALT, K, resizeactive, 0 -10 binde = ALT, J, resizeactive, 0 10 binde = ALT, L, resizeactive, 10 0 # Precise keyboard window resizing (group) bind = SUPER, slash, submap, resize submap = resize binde = , right, resizeactive, 10 0 binde = , left, resizeactive, -10 0 binde = , up, resizeactive, 0 -10 binde = , down, resizeactive, 0 10 binde = SUPER, right, resizeactive, 30 0 binde = SUPER, left, resizeactive, -30 0 binde = SUPER, up, resizeactive, 0 -30 binde = SUPER, down, resizeactive, 0 30 binde = SHIFT, right, resizeactive, 1 0 binde = SHIFT, left, resizeactive, -1 0 binde = SHIFT, up, resizeactive, 0 -1 binde = SHIFT, down, resizeactive, 0 1 binde = , H, resizeactive, -10 0 binde = , K, resizeactive, 0 -10 binde = , J, resizeactive, 0 10 binde = , L, resizeactive, 10 0 binde = , right, resizeactive, 10 0 binde = , left, resizeactive, -10 0 binde = , up, resizeactive, 0 -10 binde = , down, resizeactive, 0 10 binde = SUPER, H, resizeactive, -30 0 binde = SUPER, K, resizeactive, 0 -30 binde = SUPER, J, resizeactive, 0 30 binde = SUPER, L, resizeactive, 30 0 binde = SHIFT, H, resizeactive, -1 0 binde = SHIFT, K, resizeactive, 0 -1 binde = SHIFT, J, resizeactive, 0 1 binde = SHIFT, L, resizeactive, 1 0 bind = , escape, submap, reset bind = , return, submap, reset bind = SUPER, slash, submap, reset submap = reset # Global keybinds (passing keys to other programs) bind = CTRL, F10, pass, ^(com\.obsproject\.Studio)$ bind = CTRL, F10, pass, ^(com\.obsproject\.Studio)$ # Isolating group to prevent keybind capturing (for games etc) # SUPER + Fn + semicol bind = SUPER, code:94, exec, hyprctl dispatch submap isolate && notify-send "Keybind isolation" "Keybind isolation on" submap = isolate bind = SUPER, code:94, exec, hyprctl dispatch submap reset && notify-send "Keybind isolation" "Keybind isolation off" submap = reset # vi: ft=hypr