{ wayland.windowManager.hyprland = { settings = { "$MOUSE_LMB" = "mouse:272"; "$MOUSE_RMB" = "mouse:273"; "$MOUSE_MMB" = "mouse:274"; "$MOUSE_EX1" = "mouse:275"; "$MOUSE_EX2" = "mouse:276"; "$XF86Favorites" = "164"; bind = [ # # Active window # "SUPER, W, killactive," "SUPER, F, togglefloating," "SUPER, Space, fullscreen, 0" "SUPER, Space, fullscreen, 1" # maximize "SUPER_SHIFT, S, layoutmsg, togglesplit" # # Programs # "SUPER, Return, exec, kitty" # TODO: requires programs # # DE/WM Control programs # # TODO: Requires programs "SUPER_SHIFT, L, exec, wlogout -p layer-shell" "SUPER_CTRL, L, exec, loginctl lock-session" # # Screenshots # # TODO: requires script # # Brightness control # "SUPER, Right, exec, brightness 5%+" "SUPER, Left, exec, brightness 5%-" ", XF86MonBrightnessUp, exec, brightness 5%+" ", XF86MonBrightnessDown, exec, brightness 5%-" # # Audio/Volume control # ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" # (rest in binde section) # # Notifications # # TODO: Requires notification daemon (dunst?) # # Window groups # "SUPER, G, togglegroup," "ALT, tab, changegroupactive, f" "ALT, grave, changegroupactive, b" # # Special workspace (scratchpad) # "ALT, grave, movetoworkspace, special" "SUPER, grave, togglespecialworkspace," # # Move window focus # "SUPER, h, movefocus, l" "SUPER, l, movefocus, r" "SUPER, k, movefocus, u" "SUPER, j, movefocus, d" # # Move active window in direction # "SUPER_ALT, h, movewindow, l" "SUPER_ALT, l, movewindow, r" "SUPER_ALT, k, movewindow, u" "SUPER_ALT, j, movewindow, d" # # Move floating windows # "SUPER_ALT, left, exec, hyprland-move-window 100 l" "SUPER_ALT, right, exec, hyprland-move-window 100 r" "SUPER_ALT, up, exec, hyprland-move-window 100 u" "SUPER_ALT, down, exec, hyprland-move-window 100 d" # # Override split direction for next window (manual tiling) # "SUPER_ALT, left, layoutmsg, preselect l" "SUPER_ALT, right, layoutmsg, preselect r" "SUPER_ALT, up, layoutmsg, preselect u" "SUPER_ALT, down, layoutmsg, preselect d" # # Switch workspace (swapping to current monitor) # "SUPER, 1, exec, hyprland-swap-workspace 1" "SUPER, 2, exec, hyprland-swap-workspace 2" "SUPER, 3, exec, hyprland-swap-workspace 3" "SUPER, 4, exec, hyprland-swap-workspace 4" "SUPER, 5, exec, hyprland-swap-workspace 5" "SUPER, 6, exec, hyprland-swap-workspace 6" "SUPER, 7, exec, hyprland-swap-workspace 7" "SUPER, 8, exec, hyprland-swap-workspace 8" "SUPER, 9, exec, hyprland-swap-workspace 9" # # Move window to workspace # "SUPER_SHIFT, 1, movetoworkspacesilent, 1" "SUPER_SHIFT, 2, movetoworkspacesilent, 2" "SUPER_SHIFT, 3, movetoworkspacesilent, 3" "SUPER_SHIFT, 4, movetoworkspacesilent, 4" "SUPER_SHIFT, 5, movetoworkspacesilent, 5" "SUPER_SHIFT, 6, movetoworkspacesilent, 6" "SUPER_SHIFT, 7, movetoworkspacesilent, 7" "SUPER_SHIFT, 8, movetoworkspacesilent, 8" "SUPER_SHIFT, 9, movetoworkspacesilent, 9" # # Move window to workspace + focus it # "ALT, 1, movetoworkspace, 1" "ALT, 2, movetoworkspace, 2" "ALT, 3, movetoworkspace, 3" "ALT, 4, movetoworkspace, 4" "ALT, 5, movetoworkspace, 5" "ALT, 6, movetoworkspace, 6" "ALT, 7, movetoworkspace, 7" "ALT, 8, movetoworkspace, 8" "ALT, 9, movetoworkspace, 9" # # Cycle workspaces (relative movement) # "SUPER, mouse_down, workspace, +1" "SUPER, mouse_up, workspace, -1" "SUPER, bracketright, workspace, +1" "SUPER, bracketleft, workspace, -1" # # Cycle monitors (relative movement) # "SUPER_SHIFT, mouse_down, focusmonitor, +1" "SUPER_SHIFT, mouse_up, focusmonitor, -1" "SUPER_SHIFT, bracketright, focusmonitor, +1" "SUPER_SHIFT, bracketleft, focusmonitor, -1" ]; # Mouse bindings bindm = [ # # Mouse window resizing # "SUPER, $MOUSE_LMB, movewindow" "SUPER, $MOUSE_RMB, resizewindow" ]; # Repeat bindings binde = [ # # Audio/Volume control # "SUPER, Down, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-" "SUPER, Up, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+" ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-" ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+" # (rest in bind section) # # Window resizing # "ALT, right, resizeactive, 10 0" "ALT, left, resizeactive, -10 0" "ALT, up, resizeactive, 0 -10" "ALT, down, resizeactive, 0 10 " "ALT, H, resizeactive, -10 0" "ALT, K, resizeactive, 0 -10" "ALT, J, resizeactive, 0 10" "ALT, L, resizeactive, 10 0" ]; }; # Used for submaps, which don't support `settings` extraConfig = '' # # Isolation group # # Useful 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 # # Precise keyboard window resizing # 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 ''; }; }