diff --git a/home/.config/hypr/hyprland.conf b/home/.config/hypr/hyprland.conf index 3e9a83c..129ee4f 100644 --- a/home/.config/hypr/hyprland.conf +++ b/home/.config/hypr/hyprland.conf @@ -1,8 +1,16 @@ -# Should be configured per-profile -monitor = eDP-1, preferred, auto, 1 -workspace = eDP-1, 1 +################ +### MONITORS ### +################ + +# Should be configured per-profile +monitor = HDMI-A-2, 1920x1080@60, 0x0, 1 +monitor = eDP-1, 1920x1080@60, 1920x0, 1 +monitor = , preferred, auto, 1 + +################# +### AUTOSTART ### +################# -# Autostart exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = hypr-restart-portals @@ -16,61 +24,95 @@ exec-once = aa-notify -p exec-once = udiskie -A -T # exec-once = nm-applet --indicator -exec-once = webcord --start-minimized +exec-once = discord --start-minimized +# exec-once = webcord --start-minimized - -input { - kb_layout = us, sk - kb_variant = ,qwerty - kb_options = grp:alt_shift_toggle - numlock_by_default=true - - follow_mouse = 1 - - touchpad { - natural_scroll = no - } -} +######################### +### CATEGORY SETTINGS ### +######################### general { gaps_in = 5 gaps_out = 8 border_size = 2 + #col.active_border = 0xFF327BD1 # blue col.active_border = 0xFFFFA500 # orange - col.inactive_border = 0xFF000000 # black + # col.inactive_border = 0xFF000000 # black + col.inactive_border = 0xAA444444 # gray + + cursor_inactive_timeout = 10 + # no_cursor_warps = true + layout = dwindle } decoration { rounding = 8 - blur = 1 + + blur = true blur_size = 3 blur_passes = 2 - blur_new_optimizations = 1 + blur_new_optimizations = true - drop_shadow = 1 - shadow_ignore_window = 1 - shadow_offset = 2 2 - shadow_range = 4 - shadow_render_power = 1 - col.shadow = 0x55000000 + drop_shadow = true + shadow_range = 5 + shadow_render_power = 2 + shadow_ignore_window = true + shadow_offset = [0 0] + col.shadow = 0xE60F0F0F + col.shadow_inactive = 0x990F0F0F + + dim_inactive = false + dim_strength = 0.05 } animations { - enabled = 1 + enabled = true + animation = windows, 1, 3, default, popin 50% animation = border, 1, 4, default animation = fade, 1, 4, default animation = workspaces, 1, 3, default } -dwindle { - pseudotile = 1 - preserve_split = 1 - no_gaps_when_only = 0 +input { + kb_layout = us, sk + kb_variant = ,qwerty + kb_options = grp:alt_shift_toggle + + numlock_by_default=true + + follow_mouse = 1 } +gestures { + workspace_swipe = true + workspace_swipe_fingers = 3 + workspace_swipe_distance = 300 + workspace_swipe_invert = false + workspace_swipe_min_speed_to_force = 20 + workspace_swipe_cancel_ratio = 0.650000 +} + +misc { + disable_hyprland_logo = true + disable_splash_rendering = true +} + +dwindle { + pseudotile = false + preserve_split = true + no_gaps_when_only = false + + col.group_border_active = 0xFF8ec07c + col.group_border = 0xFF665c54 +} + +#################### +### WINDOW RULES ### +#################### + # Automatically move windows to their workspace windowrulev2 = workspace 2, class:^(firefox)$ windowrulev2 = workspace 4, class:^(discord)$ @@ -81,40 +123,37 @@ windowrulev2 = workspace 6, class:^(Stremio)$ windowrulev2 = float, class:^(qalculate-gtk)$ windowrulev2 = size 800 550, class:^(qalculate-gtk)$ -# Float some firefox windows (like bookmark menus) +# Float some firefox windows (like bookmark menus, or some extension windows) windowrulev2 = float, class:^(firefox)$,title:^(Revert Bookmarks)$ windowrulev2 = float, class:^(firefox)$,title:^(Library)$ -# TODO: Fix this -windowrulev2 = float, class:^(firefox)$,title:^(Page Info)(.*)$ +windowrulev2 = float, class:^(firefox)$,title:^(Extension: \(uBlock Origin\)) +#################### +### KEY BINDINGS ### +#################### -# Mouse window resizing -bindm = SUPER, mouse:272, movewindow -bindm = SUPER, mouse:273, resizewindow +$MOUSE_LMB = mouse:272 +$MOUSE_RMB = mouse:273 +$MOUSE_MMB = mouse:274 +$MOUSE_EX1 = mouse:275 +$MOUSE_EX2 = mouse:276 -# Compositor commands -bind = SUPER, Space, fullscreen, -bind = SUPER, W, killactive, -bind = SUPER, F, togglefloating, -bind = SUPER, S, togglesplit, -bind = SUPER, G, togglegroup, -bind = SUPER_SHIFT, N, changegroupactive, f -bind = SUPER_SHIFT, P, changegroupactive, b -bind = SUPER, P, pseudo, +# DE/WM control bind = SUPER_SHIFT, Q, exec, menuprompt --yesno -p "Quit Hyprland?" && hyprctl dispatch exit "" - -# Utilities -bind = SUPER_CTRL, L, exec, swaylock -fF +bind = SUPER_CTRL, L, exec, loginctl lock-session bind = SUPER_SHIFT, L, exec, wlogout -p layer-shell bind = SUPER_SHIFT, T, exec, toggle-idle bind = SUPER_SHIFT, D, exec, toggle-notifications # Programs +bind = SUPER, R, exec, wofi --show drun +bind = SUPER_SHIFT, Return, exec, wofi --show run + bind = SUPER, Return, exec, alacritty bind = SUPER, X, exec, pcmanfm bind = SUPER, B, exec, firefox -bind = SUPER, R, exec, wofi --show drun -bind = SUPER_SHIFT, Return, exec, wofi --show run +bind = SUPER, C, exec, qalculate-gtk +bind = , XF86Calculator, exec, qalculate-gtk # Notifications bind = CTRL, grave, exec, dunstctl close @@ -137,15 +176,25 @@ binde = , XF86MonBrightnessUp, exec, brightness -i 5% -n binde = , XF86MonBrightnessDown, exec, brightness -d 5% -n # Screenshots -bind = ,Print, exec, grim -g "$(slurp)" - | wl-copy && notify-send "Screenshot" "Screenshot saved to clipboard" -bind = SUPER, Print, exec, grim -g "$(slurp)" - | swappy -f - -o - | wl-copy -bind = CTRL, Print, exec, echo "" | wofi --prompt "Set delay (ms)" --show dmenu | xargs -I _ sleep _e-3 && grim -g "$(slurp)" - | wl-copy -bind = SUPER_CTRL, Print, exec, echo "" | wofi --prompt "Set delay (ms)" --show dmenu | xargs -I _ sleep _e-3 && grim -g "$(slurp)" - | swappy -f - -o - | wl-copy -bind = SHIFT, Print, exec, wl-copy "$(hyprpicker)" && notify-send 'Picked color' "$(wl-paste) (saved to clipboard)" +bind = ,Print, exec, grim -g "$(slurp)" - | wl-copy --type image/png && notify-send "Screenshot" "Screenshot saved to clipboard" +bind = SUPER, Print, exec, grim -g "$(slurp)" - | swappy -f - -o - | wl-copy --type image/png +bind = CTRL, Print, exec, echo "" | wofi --prompt "Set delay (ms)" --show dmenu | xargs -I _ sleep _e-3 && grim -g "$(slurp)" - | wl-copy --type image/png +bind = SUPER_CTRL, Print, exec, echo "" | wofi --prompt "Set delay (ms)" --show dmenu | xargs -I _ sleep _e-3 && grim -g "$(slurp)" - | swappy -f - -o - | wl-copy --type image/png +bind = SHIFT, Print, exec, wl-copy --type image/png "$(hyprpicker)" && notify-send 'Picked color' "$(wl-paste) (saved to clipboard)" +bind = SUPER_SHIFT_CTRL, Print, exec, grim -# Global keybinds (passing keys to other programs) -bind = SUPER, F10, pass, ^(com\.obsproject\.Studio)$ -bind = SUPER, F10, pass, ^(com\.obsproject\.Studio)$ +# Active window +bind = SUPER, W, killactive, +bind = SUPER, F, togglefloating, +bind = SUPER, Space, fullscreen, +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, S, togglesplit, + +# Window groups +bind = SUPER, G, togglegroup, +bind = ALT, tab, changegroupactive, f +bind = ALT, grave, changegroupactive, b # Move between windows bind = SUPER, h, movefocus, l @@ -153,29 +202,6 @@ bind = SUPER, l, movefocus, r bind = SUPER, k, movefocus, u bind = SUPER, j, movefocus, d -# Window resizing -bind = SUPER, Q, 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 = , L, resizeactive, 10 0 -binde = , H, resizeactive, -10 0 -binde = , K, resizeactive, 0 -10 -binde = , J, resizeactive, 0 10 -bind = , escape, submap, reset -bind = SUPER, Q, submap, reset -submap = reset - -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 = , L, resizeactive, 10 0 -binde = ALT, H, resizeactive, -10 0 -binde = ALT, K, resizeactive, 0 -10 -binde = ALT, J, resizeactive, 0 10 - # Move between workspaces bind = SUPER, 1, workspace, 1 bind = SUPER, 2, workspace, 2 @@ -198,7 +224,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 @@ -210,7 +235,7 @@ bind = ALT, 7, movetoworkspace, 7 bind = ALT, 8, movetoworkspace, 8 bind = ALT, 9, movetoworkspace, 9 -# Cycle workspaces +# Cycle workspaces (relative movement) bind = SUPER, mouse_down, workspace, m+1 bind = SUPER, mouse_up, workspace, m-1 bind = SUPER, bracketleft, workspace, m-1 @@ -223,3 +248,59 @@ bind = SUPER_SHIFT, braceright, focusmonitor, r # Special workspace bind = ALT, grave, movetoworkspace, special bind = SUPER, grave, togglespecialworkspace, + +# 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 = , L, resizeactive, 10 0 +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 = 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 = SUPER, slash, submap, reset +submap = reset + +# Global keybinds (passing keys to other programs) +bind = SUPER, F10, pass, ^(com\.obsproject\.Studio)$ +bind = SUPER, F10, pass, ^(com\.obsproject\.Studio)$