From 7b3d6af230d65b5d15c88abf41fdc9264477af22 Mon Sep 17 00:00:00 2001 From: Andre Ramnitz Date: Wed, 23 Jul 2025 06:44:40 +0200 Subject: [PATCH] hypr: big update - order config sections like presented in the wiki - add some windowrules - improve workspaces.sh script (also support swww and hyprpaper simultaneously) - clean-up animations --- dot-config/hypr/fragments/animations.conf | 36 +++- dot-config/hypr/fragments/keybinds.conf | 34 ++-- dot-config/hypr/fragments/windowrules.conf | 17 +- dot-config/hypr/fragments/workspacerules.conf | 1 + dot-config/hypr/hyprland.conf | 179 +++++++++--------- dot-config/hypr/hyprpaper.conf | 4 +- dot-config/hypr/scripts/workspace.sh | 29 ++- 7 files changed, 169 insertions(+), 131 deletions(-) diff --git a/dot-config/hypr/fragments/animations.conf b/dot-config/hypr/fragments/animations.conf index 406494ba..5306d348 100644 --- a/dot-config/hypr/fragments/animations.conf +++ b/dot-config/hypr/fragments/animations.conf @@ -2,7 +2,14 @@ animations { enabled = yes - bezier = linear, 0, 0, 1, 1 + # Default curves + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 + + # Custom curves bezier = border, 1, 1, 1, 1 bezier = overshoot, 0.05, 0.9, 0.2, 1.00 @@ -26,15 +33,28 @@ animations { bezier = easeOutBounce, 0.5, 1, 0.89, 1 bezier = turboOut, 0.3, -0.3, 0, 1 - animation = windows, 1, 1, turboIn - animation = windowsIn, 1, 1, turboIn, popin 40% - animation = windowsOut, 1, 1, turboOut + # Default Animations + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fade, 1, 3.03, quick + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 1, 1.94, almostLinear, fade + animation = workspacesIn, 1, 1.21, almostLinear, fade + animation = workspacesOut, 1, 1.94, almostLinear, fade + animation = zoomFactor, 1, 7, quick + + # Custom Animations / Overrides animation = windowsMove, 1, 3, easeOutQuad - - animation = fade, 1, 1, easeInQuint - animation = border, 1, 1, easeInQuint animation = borderangle, 1, 60, border, loop - animation = workspaces, 1, 3, easeInOut, slidefade 50 } diff --git a/dot-config/hypr/fragments/keybinds.conf b/dot-config/hypr/fragments/keybinds.conf index f0f7ff07..2a6c5e67 100644 --- a/dot-config/hypr/fragments/keybinds.conf +++ b/dot-config/hypr/fragments/keybinds.conf @@ -38,7 +38,7 @@ bind = $mainmod Shift, V, exec, killall fuzzel || cliphist list bind = $mainmod, W, exec, killall -SIGUSR1 waybar bind = $mainmod SHIFT, W, exec, killall -SIGUSR2 waybar bind = $mainmod, grave, exec, ~/.config/hypr/scripts/RofiEmoji.sh -bind = $mainmod, Z, overview:toggle +bind = $mainmod, Z, centerwindow # scratchpad bind = $mainmod, I, togglespecialworkspace, overlay @@ -178,28 +178,22 @@ bind = $mainmod CTRL, 0, exec, ~/.config/hypr/scripts/workspac # mouse binds # ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── -binds { - drag_threshold = 50 - scroll_event_delay = 40 -} -input { - scroll_points = 3 -} - -# LMB = 272 // RMB = 273 - -bind = $mainmod, mouse_down, exec, ~/.config/hypr/scripts/workspace.sh - -bind = $mainmod, mouse_up, exec, ~/.config/hypr/scripts/workspace.sh + -bind = $mainmod, mouse_left, exec, ~/.config/hypr/scripts/workspace.sh - mv -bind = $mainmod, mouse_right, exec, ~/.config/hypr/scripts/workspace.sh + mv -bind = $mainmod, mouse_left, exec, ~/.config/hypr/scripts/workspace.sh - mv s -bind = $mainmod, mouse_right, exec, ~/.config/hypr/scripts/workspace.sh + mv s - # Move/resize windows with mainMod + LMB/RMB and dragging +# LMB = 272 // RMB = 273 bindm = $mainmod, mouse:272, movewindow bindm = $mainmod, mouse:273, resizewindow -bind = $mainmod SHIFT, mouse_down, exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor | awk '/^float.*/ {print $2 * 1.25}') -bind = $mainmod SHIFT, mouse_up, exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor | awk '/^float.*/ {print $2 * 0.75}') + +# Mouse zoom +bind = $mainmod, mouse_down, exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor | awk '/^float.*/ {print $2 * 1.25}') +bind = $mainmod, mouse_up, exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor | awk '/^float.*/ {print $2 * 0.75}') + +# Cycle through workspaces or move windows with a mouse wheel tilt +bind = $mainmod, mouse_left, exec, ~/.config/hypr/scripts/workspace.sh - +bind = $mainmod, mouse_right, exec, ~/.config/hypr/scripts/workspace.sh + +bind = $mainmod SHIFT, mouse_left, exec, ~/.config/hypr/scripts/workspace.sh - mv +bind = $mainmod SHIFT, mouse_right, exec, ~/.config/hypr/scripts/workspace.sh + mv +bind = $mainmod CTRL, mouse_left, exec, ~/.config/hypr/scripts/workspace.sh - mv s +bind = $mainmod CTRL, mouse_right, exec, ~/.config/hypr/scripts/workspace.sh + mv s # submaps diff --git a/dot-config/hypr/fragments/windowrules.conf b/dot-config/hypr/fragments/windowrules.conf index f525c257..832a3c71 100644 --- a/dot-config/hypr/fragments/windowrules.conf +++ b/dot-config/hypr/fragments/windowrules.conf @@ -10,9 +10,6 @@ # hide hyprbars on non-floating windows windowrule = plugin:hyprbars:nobar, ^floating:0 -# don't UW any window catchall -windowrule = maxsize 1440 1200, ^floating:1 - # handle plasma/kde/qt apps windowrule = float, class:^(org.kde.*)$ windowrule = float, class:^(ark.*)$ @@ -48,11 +45,17 @@ windowrule = workspace 5, class:^(gimp)$ windowrule = float, class:^(gimp)$ windowrule = tile, class:^(gimp)$, title:^(.*GIMP)$ +# handle krita +windowrule = workspace 5, class:^(krita)$ +windowrule = float, class:^(krita)$,title:.*(?=\sKrita) +windowrule = minsize 1280 800, class:^(krita)$,title:.*(?=\sKrita) +windowrule = focusonactivate, class:^(krita)$,title:.*(?=\sKrita) + # WIP: handle cava launched by .desktop file -windowrule = float,title:^(cava.*)$ -windowrule = noinitialfocus,title:^(cava.*)$ -windowrule = size 1024 600,title:^(cava.*)$ -windowrule = move 100% 100%,title:^(cava.*)$ +windowrule = float,class:^(cava|foot)$,title:cava +windowrule = noinitialfocus,^(cava|foot)$,title:cava +windowrule = size 1024 600,^(cava|foot)$,title:cava +windowrule = move 100% 100%,^(cava|foot)$,title:cava # handle browsers windowrule = tag +neverdim, class:^(firefox.*)$ diff --git a/dot-config/hypr/fragments/workspacerules.conf b/dot-config/hypr/fragments/workspacerules.conf index 190bb2d0..e1791795 100644 --- a/dot-config/hypr/fragments/workspacerules.conf +++ b/dot-config/hypr/fragments/workspacerules.conf @@ -9,3 +9,4 @@ workspace = 3, monitor:DP-1 workspace = 4, monitor:DP-1, gapsout:40, gapsin:20 workspace = 5, monitor:DP-1 workspace = 6, monitor:DP-1, float +workspace = special:magic, monitor:DP-1 diff --git a/dot-config/hypr/hyprland.conf b/dot-config/hypr/hyprland.conf index 4aec3da6..604552be 100644 --- a/dot-config/hypr/hyprland.conf +++ b/dot-config/hypr/hyprland.conf @@ -1,11 +1,9 @@ -# kak: filetype=conf:tabwidth=4:indentwidth=4:ai +# kak: filetype=conf:tabstop=4:indentwidth=4:ai # ░█░█░█░█░█▀█░█▀▄░█░░░█▀█░█▀█░█▀▄░░░█▀▀░█▀█░█▀█░█▀▀░▀█▀░█▀▀ # ░█▀█░░█░░█▀▀░█▀▄░█░░░█▀█░█░█░█░█░░░█░░░█░█░█░█░█▀▀░░█░░█░█ # ░▀░▀░░▀░░▀░░░▀░▀░▀▀▀░▀░▀░▀░▀░▀▀░░░░▀▀▀░▀▀▀░▀░▀░▀░░░▀▀▀░▀▀▀i # compiled plugins reside in /var/cache/hyprpm/[username]/ -debug:disable_logs = false # file logging. defaults to 1 for production - # flavours integration source=./base16-colors.conf @@ -26,11 +24,6 @@ monitorv2 { # other displays monitor=,preferred,auto-center-right,1,vrr,2 -# unscale XWayland -xwayland { - force_zero_scaling = true -} - exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-shutdown = setenv WAYLAND_DISPLAY= XDG_SESSION_TYPE= XDG_CURRENT_DESKTOP= @@ -43,32 +36,6 @@ exec-once = swww img /home/andy/Bilder/Wallpapers/3440x1440\ SW.png exec-once = hyprsunset exec-once = flatpak run ch.threema.threema-desktop -input { - kb_layout = us,de - kb_variant = de_se_fi, - kb_model = - kb_options = grp:alt_caps_toggle - kb_rules = - - follow_mouse = 1 - focus_on_close = 1 - - touchpad { - natural_scroll = no - } - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. -} - -cursor { - enable_hyprcursor = 1 - no_hardware_cursors = 0 - no_break_fs_vrr = 2 -} - -experimental { - xx_color_management_v4 = 1 -} - general { allow_tearing = 0 border_size = 2 @@ -110,6 +77,65 @@ master { inherit_fullscreen = false } +decoration { + rounding = 4 + dim_special = 0.3 + dim_inactive = true + dim_strength = 0.2 + blur { + enabled = true + special = true + popups = false + size = 3 + passes = 1 + noise = 0.0317 + contrast = 0.8916 + brightness = 0.7172 + vibrancy = 0.1696 + vibrancy_darkness = 0.1 + ignore_opacity = true + } + shadow { + enabled = true + range = 20 + render_power = 3 + sharp = false + ignore_window = true + color = 0xee$base01 + color_inactive = 0xee$base01 + offset = 1, 1 + scale = 0.9992 + } +} + +input { + kb_layout = us,de + kb_variant = de_se_fi, + kb_model = + kb_options = grp:alt_caps_toggle + kb_rules = + + follow_mouse = 1 + focus_on_close = 1 + + touchpad { + natural_scroll = no + } + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + off_window_axis_events = 2 # default = 1 + scroll_points = 3 +} + +device { + name = razer-razer-basilisk-v3 + sensitivity = -0.1 + accel_profile = custom 0.3308622437 0.000 0.224 0.449 0.673 0.997 1.335 1.672 2.010 2.348 2.685 3.186 3.699 4.212 4.725 5.237 5.750 6.263 6.776 7.288 7.801 8.314 8.827 9.339 9.852 10.365 10.878 11.390 11.903 12.416 13.476 +} + +gestures { + workspace_swipe = false +} + group { merge_groups_on_drag = 0 insert_after_current = 1 @@ -151,35 +177,26 @@ group { } } -decoration { - rounding = 4 - dim_special = 0.3 - dim_inactive = true - dim_strength = 0.2 - blur { - enabled = true - special = true - popups = false - size = 3 - passes = 1 - noise = 0.0317 - contrast = 0.8916 - brightness = 0.7172 - vibrancy = 0.1696 - vibrancy_darkness = 0.1 - ignore_opacity = true - } - shadow { - enabled = true - range = 20 - render_power = 3 - sharp = false - ignore_window = true - color = 0xee$base01 - color_inactive = 0xee$base01 - offset = 1, 1 - scale = 0.9992 - } +misc { + force_default_wallpaper = 1 # Set to 0 to disable the anime mascot wallpapers + key_press_enables_dpms = true + vfr = true #enable for battery savings + render_unfocused_fps = 60 + allow_session_lock_restore = 1 + initial_workspace_tracking = 1 + font_family = ZedMono NFP + enable_swallow = 1 + swallow_regex = ^(Alacritty|kitty|foot|footclient|konsole)$ +} + +binds { + drag_threshold = 50 + scroll_event_delay = 30 + workspace_center_on = 0 +} + +xwayland { + force_zero_scaling = true # unscale XWayland } render { @@ -191,24 +208,23 @@ render { new_render_scheduling = 1 } -misc { - force_default_wallpaper = 1 # Set to 0 to disable the anime mascot wallpapers - key_press_enables_dpms = true - vfr = true #enable for battery savings - render_unfocused_fps = 60 - allow_session_lock_restore = 1 - initial_workspace_tracking = 1 - font_family = ZedMono NFP +cursor { + enable_hyprcursor = 1 + no_warps = 0 + no_hardware_cursors = 0 + no_break_fs_vrr = 2 + warp_on_toggle_special = 1 } -device { - name = razer-razer-basilisk-v3 - sensitivity = -0.1 - accel_profile = custom 0.3308622437 0.000 0.224 0.449 0.673 0.997 1.335 1.672 2.010 2.348 2.685 3.186 3.699 4.212 4.725 5.237 5.750 6.263 6.776 7.288 7.801 8.314 8.827 9.339 9.852 10.365 10.878 11.390 11.903 12.416 13.476 +ecosystem { } -gestures { - workspace_swipe = false +experimental { + xx_color_management_v4 = 1 +} + +debug { + disable_logs = false # file logging. defaults to 1 for production } plugin { @@ -225,15 +241,6 @@ plugin { hyprbars-button = 0xaa$base0A, 20, 󰁌, hyprctl dispatch fullscreen 1 hyprbars-button = 0xaa$base0B, 20, , hyprctl dispatch pin active } - overview { - panelHeight = 200 - panelColor = 0xcc$base03 - panelBorderWidth = 2 - panelBorderColor = 0xee$base07 - workspaceActiveBorder = 0xee$base0A - workspaceInactiveBorder = 0xfa$base01 - workspaceBorderSize = 2 - } } diff --git a/dot-config/hypr/hyprpaper.conf b/dot-config/hypr/hyprpaper.conf index 0e615c9f..46af24d7 100644 --- a/dot-config/hypr/hyprpaper.conf +++ b/dot-config/hypr/hyprpaper.conf @@ -1,8 +1,8 @@ preload = ~/Bilder/Wallpapers-simple/beach.png preload = ~/Bilder/Wallpapers-simple/pulppixel22.png preload = ~/Bilder/Wallpapers-simple/WP.jpg -preload = ~/Bilder/Wallpapers-simple/radio.png -preload = ~/Bilder/Wallpapers-simple/ContentoCustomBackground.png +preload = ~/Bilder/Wallpapers-simple/Listen.png +preload = ~/Bilder/Wallpapers-simple/Big_Sur_Simple.png preload = ~/Bilder/Wallpapers-simple/AtariTimes.png preload = ~/Bilder/Wallpapers-simple/TronLightCycle1.png wallpaper = , ~/Bilder/Wallpapers-simple/beach.png diff --git a/dot-config/hypr/scripts/workspace.sh b/dot-config/hypr/scripts/workspace.sh index d2e990f9..61c9c875 100755 --- a/dot-config/hypr/scripts/workspace.sh +++ b/dot-config/hypr/scripts/workspace.sh @@ -24,28 +24,41 @@ else POSTCMD='' fi - case "$REQUESTED_WORKSPACE" in 1) - hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/beach.png" + hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; + if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi + hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/beach.png" ;; 2) - hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/pulppixel22.png" + hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; + if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi + hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/pulppixel22.png" ;; 3) - hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/WP.jpg" + hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; + if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi + hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/WP.jpg" ;; 4) - hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/radio.png" + hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; + if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi + hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/Listen.png" ;; 5) - hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/ContentoCustomBackground.png" + hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; + if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi + hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/Big_Sur_Simple.png" ;; 6) - hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/AtariTimes.png" + hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; + if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi + hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/AtariTimes.png" ;; *) - hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/TronLightCycle1.png" + hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE"; + if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi + hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/TronLightCycle1.png" ;; esac -- 2.51.2