$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, V, 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, vesktop 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 CONTROL ### # ###################### 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 ### # ################### # 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 = 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 #bindl = , Print, exec, screenshot --notify --copy --target all # lockscreen screenshot (only enable when needed) 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 # XF86Favorites key for recording # (don't question me, I had it free) bind = , 164, exec, quick-record --notify toggle bind = SUPER, 164, exec, quick-record toggle # ##################### # ### 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, layoutmsg, 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, # ################################################################ # ### OVERRIDE SPLIT DIRECTION FOR NEXT WINDOW (MANUAL TILING) ### # ################################################################ bind = SUPER_ALT, left, layoutmsg, preselect l bind = SUPER_ALT, right, layoutmsg, preselect r bind = SUPER_ALT, up, layoutmsg, preselect u bind = SUPER_ALT, down, layoutmsg, preselect d # ######################### # ### 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 FLOATING WINDOWS ### # ####################################### $myMoveSize = 100 $myMove = sh .config/hypr/scripts/move-window.sh $myMoveSize bind = SUPER_ALT, left, exec, $myMove l bind = SUPER_ALT, right, exec, $myMove r bind = SUPER_ALT, up, exec, $myMove u bind = SUPER_ALT, down, exec, $myMove d # ###################################################### # ### SWITCH WORKSPACE (SWAPPING TO CURRENT MONITOR) ### # ###################################################### 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 WINDOW TO WORKSPACE ### # ################################ 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 WINDOW TO WORKSPACE + FOCUS IT ### # ########################################### 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 (RELATIVE MOVEMENT) ### # ########################################## bind = SUPER_SHIFT, bracketleft, focusmonitor, -1 bind = SUPER_SHIFT, bracketright, focusmonitor, +1 # ####################### # ### WINDOW RESIZING ### # ####################### ## Mouse window resizing bindm = SUPER, $MOUSE_LMB, movewindow bindm = SUPER, $MOUSE_RMB, resizewindow ## Quick keyboard 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 resizing (submap) 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)$ # ####################### # ### ISOLATION GROUP ### # ####################### # Isolating group to prevent keybind capturing (for games etc) # SUPER + Fn + F12 (Favorites) bind = SUPER, XF86Favorites, exec, hyprctl dispatch submap isolate && notify-send "Keybind isolation" "Keybind isolation on" submap = isolate bind = SUPER, XF86Favorites, exec, hyprctl dispatch submap reset && notify-send "Keybind isolation" "Keybind isolation off" submap = reset # vi: ft=hyprlang