Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

popin animations renders out of the center with out-of-graph-boundaries bezier curves #8058

Open
1 task done
macydnah opened this issue Oct 9, 2024 · 3 comments
Open
1 task done
Labels
bug Something isn't working

Comments

@macydnah
Copy link

macydnah commented Oct 9, 2024

Already reported ? *

  • I have searched the existing open and closed issues.

Regression?

Yes

System Info and Version

System/Version info
Hyprland, built from branch  at commit 4520b30d498daca8079365bdb909a8dea38e8d55  (version: bump to 0.44.1).
Date: Wed Oct 9 12:54:39 2024
Tag: v0.44.1, commits: 5309
built against aquamarine 0.4.2


flags: (if any)


System Information:
System name: Linux
Node name: HuaaaliP0NKH-ER0S
Release: 6.11.0-zen1-1-zen
Version: #1 ZEN SMP PREEMPT_DYNAMIC Thu, 19 Sep 2024 04:45:39 +0000


GPU information: 
00:02.0 VGA compatible controller [0300]: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0126] (rev 09) (prog-if 00 [VGA controller])


os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo


plugins:

======Config-Start======


Config File: /home/macydnah/.config/hypr/hyprland.conf: Read Succeeded
# ~/.config/hypr/hyprland.conf

# https://wiki.hyprland.org/Configuring/Keywords/
$mod = SUPER
$terminal = footclient
$floatingTerminal = footclient -a floating-foot -e tmux new-session -A -s shession
$fileManager = pcmanfm
$menu = ~/.config/rofi/launcher.sh
$bar = togglewaybar.sh

# https://wiki.hyprland.org/Configuring/Monitors/
#monitor = name, resolution, position, scale, transform, 0
monitor = ,preferred,auto,auto,transform,0
monitor = LVDS-1, 1366x768@60, 0x0, 1, transform, 0

exec-once = pcmanfm -d
exec-once = foot --server
exec-once = swaybg --output LVDS-1 --mode fill --image /usr/share/backgrounds/fgm.png

env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = GDK_BACKEND,wayland
env = LIBVA_DRIVER_NAME,i965
env = LIBVA_DRIVERS_PATH,/usr/lib/dri
env = MOZ_ENABLE_WAYLAND,1
env = QT_QPA_PLATFORM,wayland-egl
env = SDL_VIDEODRIVER,wayland
env = XDG_SESSION_TYPE,wayland
env = _JAVA_AWT_WM_NONREPARENTING,1
env = FLOATINGTERM,$floatingTerminal

# https://wiki.hyprland.org/Configuring/Variables/#general
general {
    border_size = 0
    no_border_on_floating = true
    gaps_in = 2
    gaps_out = 4
    gaps_workspaces = 40
    col.inactive_border = rgba(595959aa)
    #col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
    col.active_border = rgba(97d01add)
    layout = dwindle
    allow_tearing = true
}

# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
    rounding = 4
    active_opacity = 1.0
    inactive_opacity = 0.85
    drop_shadow = true
    shadow_range = 4
    shadow_render_power = 4
    col.shadow = rgba(1a1a1aee)
    col.shadow_inactive = rgba(00000000)
    dim_inactive = false
    dim_strength = 0.5
    dim_special = 0.2
    dim_around = 0.4
    #screen_shader = ~/.config/hypr/blue-light-filter.frag

    # https://wiki.hyprland.org/Configuring/Variables/#blur
    blur {
        enabled = true
        size = 4
        passes = 1
        ignore_opacity = true
        xray = true
        noise = 0.0117
        contrast = 0.8916
        brightness = 0.8172
        vibrancy = 0.1696
        vibrancy_darkness = 0.0
    }
}

# https://wiki.hyprland.org/Configuring/Variables/#animations
# file:///home/macydnah/.config/hypr/conf.d/bezier.conf
source = conf.d/bezier.conf
animations {
    enabled = true
    first_launch_animation = false
    
    # https://wiki.hyprland.org/Configuring/Animations/
    animation = windowsIn, 1, 4, overshot
    animation = windowsOut, 0, 4, default, popin 100%
    animation = windowsMove, 1, 4, easeOutExpo
    animation = layersIn, 1, 4, easeInOutBack
    animation = layersOut, 1, 4, easeOutExpo
    animation = fade, 1, 4, default
    animation = fadeIn, 1, 3, easeInBack
    animation = fadeOut, 1, 2, easeOutExpo
    animation = fadeSwitch, 1, 2, easeOutExpo
    animation = fadeShadow, 1, 2, easeOutExpo
    animation = fadeLayersIn, 1, 4, easeInOutBack
    animation = fadeLayersOut, 1, 4, easeOutExpo
    animation = border, 0
    animation = borderangle, 0
    animation = workspaces, 1, 6, default, slide
    #animation = workspacesIn, 1, 6, easeOutBack, slide
    #animation = workspacesOut, 1, 6, easeOutBack, fade
    animation = specialWorkspace, 1, 5, overshot, slidevert
}

# https://wiki.hyprland.org/Configuring/Variables/#input
input {
    kb_model = pc104
    kb_layout = us
    kb_variant = altgr-intl
    kb_options =
    kb_rules =

    sensitivity = 0.0
    accel_profile = adaptive
    force_no_accel = false
    scroll_method = 2fg
    follow_mouse = 2
    off_window_axis_events = 0

    # https://wiki.hyprland.org/Configuring/Variables/#touchpad
    touchpad {
        natural_scroll = true
        scroll_factor = 1.3
        tap_button_map = lrm
        clickfinger_behavior = false
        drag_lock = true
    }
}

# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
    workspace_swipe = true
    workspace_swipe_fingers = 3
    workspace_swipe_min_fingers = true
    workspace_swipe_distance = 150
    workspace_swipe_min_speed_to_force = 0
    workspace_swipe_cancel_ratio = 0.0
}

# https://wiki.hyprland.org/Configuring/Variables/#group
group {
    groupbar {
        enabled = true
        font_size = 8
        gradients = true
        height = 15
        stacked = false
        render_titles = true
        scrolling = false
        text_color = 0xffffffff
        col.active = 0x66ffff00
        col.inactive = 0x66777700
    }
}

# https://wiki.hyprland.org/Configuring/Variables/#misc
misc { 
    disable_hyprland_logo = true
    disable_splash_rendering = true
    font_family = SF Pro Display
    force_default_wallpaper = -1
    vfr = false
    mouse_move_enables_dpms = false
    key_press_enables_dpms = false
    animate_manual_resizes = false
    animate_mouse_windowdragging = false
    disable_autoreload = false
    enable_swallow = false
    mouse_move_focuses_monitor = false
    background_color = 0x777777
    new_window_takes_over_fullscreen = 2
    middle_click_paste = false
}

# https://wiki.hyprland.org/Configuring/Variables/#binds
binds {
    allow_workspace_cycles = true
    window_direction_monitor_fallback = true
}

# https://wiki.hyprland.org/Configuring/Variables/#opengl
opengl {
    nvidia_anti_flicker = false
    force_introspection = 1
}

# https://wiki.hyprland.org/Configuring/Variables/#cursor
cursor {
    inactive_timeout = 2
    hotspot_padding = 5
    no_warps = true
    persistent_warps = true
    zoom_factor = 1.000
    hide_on_key_press = false
}

# https://wiki.hyprland.org/Configuring/Dwindle-Layout/
dwindle {
    pseudotile = true
    force_split = 2
    preserve_split = true
    no_gaps_when_only = 0
    use_active_for_splits = true

    bind = $mod, P, pseudo
    bind = $mod, C, togglesplit
}

# https://wiki.hyprland.org/Configuring/Master-Layout/
master {
    new_status = master
}

####################
### KEYBINDINGS  ###
####################

# https://wiki.hyprland.org/Configuring/Binds/

# Volume/Brightness Control
bind = ,XF86AudioMute, exec, volfade.sh -m
bind = ,XF86AudioRaiseVolume, exec, volfade.sh -i
bind = ,XF86AudioLowerVolume, exec, volfade.sh -d
bind = $mod, XF86AudioRaiseVolume, exec, pavucontrol --tab=3
bind = $mod, XF86AudioLowerVolume, exec, pavucontrol --tab=3
binde = ,XF86MonBrightnessUp, exec, xbacklight -inc 3 -fps 60 -time 111 -perceived
binde = ,XF86MonBrightnessDown, exec, xbacklight -dec 3 -fps 60 -time 111 -perceived
bind = SHIFT, XF86MonBrightnessUp, exec, hyprctl keyword decoration:screen_shader ' '
bind = SHIFT, XF86MonBrightnessDown, exec, hyprctl keyword decoration:screen_shader ~/.config/hypr/blue-light-filter.frag
bind = $mod, XF86MonBrightnessUp, exec, hyprctl dispatch dpms on
bind = $mod, XF86MonBrightnessDown, exec, hyprctl dispatch dpms off
bind = $mod, Menu, exec, kblight

# Keybinds/shortcuts for applications
bind = $mod, Return, exec, $terminal
bind = $mod, grave, exec, togglescrat.sh
bind = $mod, A, exec, $menu
bind = $mod, B, exec, $bar
bind = $mod, E, exec, $fileManager
bind = $mod, N, exec, networkmanager_dmenu

# Window manager functions
bind = $mod, Q, killactive
bind = $mod, F, fullscreen, 0
bind = $mod, Tab, workspace, previous
bind = $mod, space, togglefloating,
bind = $mod, X, exec, togglehyprtab.sh 
bind = $mod SHIFT, Escape, exec, hyprctl dispatcher exit
bind = $mod, Escape, exec, hyprlock

# Navigation
bind = $mod, J, movefocus, l
bind = $mod, semicolon, movefocus, r
bind = $mod, K, movefocus, u
bind = $mod, L, movefocus, d
bind = $mod SHIFT, J, movewindow, l
bind = $mod SHIFT, semicolon, movewindow, r
bind = $mod SHIFT, K, movewindow, u
bind = $mod SHIFT, L, movewindow, d
bindm = $mod, mouse:272, movewindow
bindm = $mod, mouse:273, resizewindow

bind = $mod, 1, workspace, 1
bind = $mod, 2, workspace, 2
bind = $mod, 3, workspace, 3
bind = $mod, 4, workspace, 4
bind = $mod, 5, workspace, 5
bind = $mod, 6, workspace, 6
bind = $mod, 7, workspace, 7
bind = $mod, 8, workspace, 8
bind = $mod, 9, workspace, 9
bind = $mod, 0, workspace, 10

bind = $mod SHIFT, 1, movetoworkspace, 1
bind = $mod SHIFT, 2, movetoworkspace, 2
bind = $mod SHIFT, 3, movetoworkspace, 3
bind = $mod SHIFT, 4, movetoworkspace, 4
bind = $mod SHIFT, 5, movetoworkspace, 5
bind = $mod SHIFT, 6, movetoworkspace, 6
bind = $mod SHIFT, 7, movetoworkspace, 7
bind = $mod SHIFT, 8, movetoworkspace, 8
bind = $mod SHIFT, 9, movetoworkspace, 9
bind = $mod SHIFT, 0, movetoworkspace, 10
bind = $mod SHIFT, grave, movetoworkspace, special:magic

#############
### RULES ###
#############

# https://wiki.hyprland.org/Configuring/Window-Rules/#rules
# https://wiki.hyprland.org/Configuring/Window-Rules/#layer-rules
# https://wiki.hyprland.org/Configuring/Workspace-Rules/#workspace-rules

#workspace = special:magic,bordersize:2
windowrulev2 = suppressevent maximize,class:.*
layerrule = animation slide,waybar

windowrulev2 = float,class:^(org.pulseaudio.pavucontrol)$

# floating-foot
windowrulev2 = workspace special:magic,class:^(floating-foot)$
windowrulev2 = size 677 382,class:^(floating-foot)$
windowrulev2 = float,class:^(floating-foot)$
windowrulev2 = pseudo,class:^(floating-foot)$
windowrulev2 = tile,class:^(floating-foot)$
#windowrulev2 = bordercolor rgb(97d01a),class:^(floating-foot)$
#windowrulev2 = bordersize 2,class:^(floating-foot)$
#windowrulev2 = dimaround 0,class:^(floating-foot)$
windowrulev2 = noshadow 1,class:^(floating-foot)$

# mpv
windowrulev2 = noblur 1,class:^(mpv)$
windowrulev2 = nodim 1,class:^(mpv)$
windowrulev2 = noshadow 1,class:^(mpv)$
windowrulev2 = opaque 1,class:^(mpv)$
windowrulev2 = forcergbx 1,class:^(mpv)$
windowrulev2 = immediate 1, class:^(mpv)$
windowrulev2 = xray 0,class:^(mpv)$

# swayimg
windowrulev2 = immediate 1, class:^(swayimg)$

# rofi
layerrule = blur,rofi
#layerrule = ignorealpha 0,rofi
layerrule = ignorezero,rofi
layerrule = dimaround,rofi
layerrule = xray 1,rofi
layerrule = animation popin,rofi

# scrcpy
windowrulev2 = float,class:^(scrcpy)$,title:^(SM-G935F)$
windowrulev2 = size 32% 99%,class:^(scrcpy)$,title:^(SM-G935F)$
windowrulev2 = tile,class:^(scrcpy)$,title:^(SM-G935F)$
windowrulev2 = pseudo,class:^(scrcpy)$,title:^(SM-G935F)$

# V4L2 Viewer
#windowrulev2 = opaque,class:^(qvidcap)$,title:^(V4L2 Viewer)$
#windowrulev2 = forcergbx,class:^(qvidcap)$,title:^(V4L2 Viewer)$
#windowrulev2 = noblur,class:^(qvidcap)$,title:^(V4L2 Viewer)$
#windowrulev2 = nodim,class:^(qvidcap)$,title:^(V4L2 Viewer)$
#windowrulev2 = noshadow,class:^(qvidcap)$,title:^(V4L2 Viewer)$
#windowrulev2 = xray off,class:^(qvidcap)$,title:^(V4L2 Viewer)$
#windowrulev2 = float,class:^(qvidcap)$,title:^(V4L2 Viewer)$
#windowrulev2 = pseudo,class:^(qvidcap)$,title:^(V4L2 Viewer)$
#windowrulev2 = tile,class:^(qvidcap)$,title:^(V4L2 Viewer)$
windowrulev2 = opaque,class:^(qvidcap|qv4l2)$,title:(Viewer|Capture)
windowrulev2 = forcergbx,class:^(qvidcap|qv4l2)$,title:(Viewer|Capture)
windowrulev2 = noblur,class:^(qvidcap|qv4l2)$,title:(Viewer|Capture)
windowrulev2 = nodim,class:^(qvidcap|qv4l2)$,title:(Viewer|Capture)
windowrulev2 = noshadow,class:^(qvidcap|qv4l2)$,title:(Viewer|Capture)
windowrulev2 = xray off,class:^(qvidcap|qv4l2)$,title:(Viewer|Capture)
windowrulev2 = float,class:^(qvidcap|qv4l2)$,title:(Viewer|Capture)
windowrulev2 = pseudo,class:^(qvidcap|qv4l2)$,title:(Viewer|Capture)
windowrulev2 = tile,class:^(qvidcap|qv4l2)$,title:(Viewer|Capture)

# vim: ft=hypr tabstop=4 shiftwidth=4 expandtab ai


Config File: /home/macydnah/.config/hypr/conf.d/bezier.conf: Read Succeeded
# ~/.config/hypr/conf.d/bezier.conf

# https://easings.net/
bezier = overshot, 0.05, 0.9, 0.1, 1.1
bezier = overshotIn, 0.05, 0.9, 0.1, 1.1
bezier = overshotOut, 0.05, -2.1, 0.1, 1

bezier = easeInSine, 0.12, 0, 0.39, 0
bezier = easeOutSine, 0.61, 1, 0.88, 1
bezier = easeInOutSine, 0.37, 0, 0.63, 1

bezier = easeInQuad, 0.11, 0, 0.5, 0
bezier = easeOutQuad, 0.5, 1, 0.89, 1
bezier = easeInOutQuad, 0.45, 0, 0.55, 1

bezier = easeInCubic, 0.32, 0, 0.67, 0
bezier = easeOutCubic, 0.33, 1, 0.68, 1
bezier = easeInOutCubic, 0.65, 0, 0.35, 1

bezier = easeInQuart, 0.5, 0, 0.75, 0
bezier = easeOutQuart, 0.25, 1, 0.5, 1
bezier = easeInOutQuart, 0.76, 0, 0.24, 1

bezier = easeInQuint, 0.64, 0, 0.78, 0
bezier = easeOutQuint, 0.22, 1, 0.36, 1
bezier = easeInOutQuint, 0.83, 0, 0.17, 1

bezier = easeInExpo, 0.7, 0, 0.84, 0
bezier = easeOutExpo, 0.16, 1, 0.3, 1
bezier = easeInOutExpo, 0.87, 0, 0.13, 1

bezier = easeInCirc, 0.55, 0, 1, 0.45
bezier = easeOutCirc, 0, 0.55, 0.45, 1
bezier = easeInOutCirc, 0.85, 0, 0.15, 1

bezier = easeInBack, 0.36, 0, 0.66, -0.56
bezier = easeOutBack, 0.34, 1.56, 0.64, 1
bezier = easeInOutBack, 0.68, -0.6, 0.32, 1.6

# vim: ft=hypr tabstop=4 shiftwidth=4 expandtab ai

======Config-End========

Description

Using complex bezier curves that goes out of the function limits, makes Hyprland to render popins animations out of the center, stretching the borders instead of the whole window.

It happens primarily in layer popin animations (e.g. opening rofi). I'm not solid sure if it happens in windows animations too, but it seems to me that it does. Anyways, it's pretty clear on layer popin animations.

This didn't happen on v0.43.0

How to reproduce

Add a bezier curve that it's function graph goes out of the limits. Then add a layer animation that uses said bezier:

bezier = easeInOutBack, 0.68, -0.6, 0.32, 1.6
animation = layersIn, 1, 4, easeInOutBack

I recommend the above as it shows the glitching in a clearer way but the overshot example bezier showed in Hyprland's wiki also applies, as it goes further the function's upper limit:

bezier = overshot, 0.05, 0.9, 0.1, 1.1

Crash reports, logs, images, videos

No crashes.

v0.43.0 (This is expected behavior)

hypr043.compressed.mp4

v0.44.0 (This renders out of the center and stretches borders)

hypr044.compressed.mp4

v0.44.1 (Idem)

hypr0441.compressed.mp4
@macydnah macydnah added the bug Something isn't working label Oct 9, 2024
@macydnah
Copy link
Author

macydnah commented Oct 10, 2024

Bisected:

595eb89 is the first bad commit

hypr595eb89f.compressed.mp4

@vaxerski
Copy link
Member

yes this is expected behavior unfortunately, and I don't think we can do much about it without sacrificing the major improvements the MR had.

@gksudolol
Copy link

I switched the layer bezier back to default and it's good enough I spose

layer.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants