hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
21.09k stars 882 forks source link

Closing a floating window that is partially on another monitor causes artifacts on such monitor #8138

Closed Steven-- closed 3 days ago

Steven-- commented 4 days ago

Already reported ? *

Regression?

No

System Info and Version

System/Version info ```sh 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: ghoul Release: 6.11.3-arch1-1 Version: #1 SMP PREEMPT_DYNAMIC Thu, 10 Oct 2024 20:11:06 +0000 GPU information: 00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] [8086:9a49] (rev 01) (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/steven/.config/hypr/hyprland.conf: Read Succeeded ################ ### MONITORS ### ################ # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=DP-1,2560x1440@144,auto,1.25,vrr,1 monitor=,preferred,auto,auto ################### ### MY PROGRAMS ### ################### # See https://wiki.hyprland.org/Configuring/Keywords/ # Set programs that you use $terminal = foot $fileManager = thunar $menu = rofi -show drun ############################# ### ENVIRONMENT VARIABLES ### ############################# # See https://wiki.hyprland.org/Configuring/Environment-variables/ #env = LIBVA_DRIVER_NAME,nvidia #env = XDG_SESSION_TYPE,wayland #env = GBM_BACKEND,nvidia-drm #env = __GLX_VENDOR_LIBRARY_NAME,nvidia #env = NVD_BACKEND,direct cursor { #no_hardware_cursors = true } #env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 env = TERMINAL,foot env = GTK_THEME,Adwaita:dark #env = AQ_NO_MODIFIERS,1 ################# ### AUTOSTART ### ################# # Autostart necessary processes (like notifications daemons, status bars, etc.) # Or execute your favorite apps at launch like this: # exec-once = $terminal # exec-once = nm-applet & # exec-once = waybar & hyprpaper & firefox exec-once = hyprpm reload exec-once = hypridle exec-once = waybar exec-once = nm-applet --indicator exec-once=[workspace special:magic silent] $terminal ##################### ### LOOK AND FEEL ### ##################### # Refer to https://wiki.hyprland.org/Configuring/Variables/ # https://wiki.hyprland.org/Configuring/Variables/#general general { gaps_in = 5 gaps_out = 10 border_size = 2 # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) # Set to true enable resizing windows by clicking and dragging on borders and gaps resize_on_border = true # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = true layout = dwindle } # https://wiki.hyprland.org/Configuring/Variables/#decoration decoration { rounding = 10 # Change transparency of focused and unfocused windows active_opacity = 1.0 inactive_opacity = 1.0 drop_shadow = false #true shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) # https://wiki.hyprland.org/Configuring/Variables/#blur blur { enabled = false #true size = 3 passes = 1 vibrancy = 0.1696 } } # https://wiki.hyprland.org/Configuring/Variables/#animations animations { enabled = true # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = myBezier, 0.05, 0.9, 0.1, 1.05 animation = windows, 1, 7, myBezier animation = windowsOut, 1, 7, default, popin 80% animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default } # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more dwindle { pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = true # You probably want this no_gaps_when_only = 2 } # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more #master { # new_is_master = true #} # https://wiki.hyprland.org/Configuring/Variables/#misc misc { force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( mouse_move_focuses_monitor = false vfr = true allow_session_lock_restore = true #enable_swallow = true #swallow_regex = ^foot$ new_window_takes_over_fullscreen = 2 } render { explicit_sync = 0 #explicit_sync_kms = 0 } ############# ### INPUT ### ############# # https://wiki.hyprland.org/Configuring/Variables/#input input { kb_layout = it kb_variant = kb_model = kb_options = kb_rules = numlock_by_default = true follow_mouse = 2 float_switch_override_focus = 0 sensitivity = 0 # -1.0 - 1.0, 0 means no modification. touchpad { natural_scroll = false } } # https://wiki.hyprland.org/Configuring/Variables/#gestures gestures { workspace_swipe = false } # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more device { name = epic-mouse-v1 sensitivity = -0.5 } #################### ### KEYBINDINGSS ### #################### # See https://wiki.hyprland.org/Configuring/Keywords/ $mainMod = SUPER # Sets "Windows" key as main modifier # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, Return, exec, $terminal bind = $mainMod SHIFT, Q, killactive, bind = $mainMod SHIFT, Delete, exit, bind = $mainMod, M, exec, $fileManager bind = $mainMod, V, togglefloating, bind = $mainMod, D, exec, $menu bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle bind = $mainMod, E, togglegroup, bind = $mainMod SHIFT, E, lockactivegroup, toggle #bind = $mainMod SHIFT, L, exec, loginctl lock-session bind = $mainMod SHIFT, L, exec, hyprlock --immediate bind = $mainMod, F, fullscreen, 1 bind = $mainMod SHIFT, F, fullscreen, 0 # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 bind = $mainMod, 3, workspace, 3 bind = $mainMod, 4, workspace, 4 bind = $mainMod, 5, workspace, 5 bind = $mainMod, 6, workspace, 6 bind = $mainMod, 7, workspace, 7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 9, workspace, 9 bind = $mainMod, 0, workspace, 10 # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 # Example special workspace (scratchpad) bind = $mainMod, S, togglespecialworkspace, magic bind = $mainMod SHIFT, S, movetoworkspace, special:magic # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow # will switch to a submap called resize #bind=$mainMod,R,submap,resize # will start a submap called "resize" #submap=resize # # sets repeatable binds for resizing the active window #binde=,right,resizeactive,10 0 #binde=,left,resizeactive,-10 0 #binde=,up,resizeactive,0 -10 #binde=,down,resizeactive,0 10 # #bindm = , mouse:272, resizewindow # # ## use reset to go back to the global submap #bind=,escape,submap,reset #bind=$mainMod,R,submap,reset # ## will reset the submap, which will return to the global submap #submap=reset # bindel=, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ bindel=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle bindl=, XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle bindel=,XF86MonBrightnessUp,exec,brightnessctl set +5% bindel=,XF86MonBrightnessDown,exec,brightnessctl set 5%- ############################## ### WINDOWS AND WORKSPACES ### ############################## # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules # Example windowrule v1 # windowrule = float, ^(kitty)$ # Example windowrule v2 # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. #windowrulev2 = unset noborder,fullscreen:1 # set bordercolor to red if window is fullscreen workspace=special:magic,gapsout:40 windowrulev2 = bordercolor rgb(8808FF) rgb(440088),xwayland:1 windowrulev2 = bordercolor rgb(FF0000) rgb(880808),fullscreen:1 # set bordercolor to red if window is fullscreen windowrulev2 = float,class:^(ipe)$,title:^(Ipe: Select) windowrulev2 = float,class:^(ipe)$,title:^(Ipe: waiting) windowrulev2 = noborder, onworkspace:s[false] w[t1],floating:0,fullscreen:0 #windowrule=move 0 0,title:.*gamescope.*$ #windowrule=move onscreen 0 0,.*steam.* #windowrule=monitor eDP-1,.*steam.* #windowrule=tile,.*steam.* plugin { hyprexpo { columns = 3 gap_size = 5 bg_col = rgb(111111) workspace_method = first r~1 # [center/first] [workspace] e.g. first 1 or center m+1 enable_gesture = true # laptop touchpad, 4 fingers gesture_distance = 300 # how far is the "max" gesture_positive = true # positive = swipe down. Negative = swipe up. } } # hyprlang noerror true bind = $mainMod, W, hyprexpo:expo, toggle # can be: toggle, off/disable or on/enable # hyprlang noerror false xwayland { force_zero_scaling = true } ======Config-End======== ```

Description

When a floating window that is overflowing to another monitor is closed, the part of the window that is on that monitor keeps being rendered and exhibits some artifacts.

How to reproduce

  1. Use two monitors and set both mouse_move_focuses_monitor = false and follow_mouse = 2
  2. Open a tiled window W on Monitor 2.
  3. Open a floating window F on Monitor 1 and drag it so that part of it shows on Monitor 2. Make sure that the workspace on Monitor 1 is currently active.
  4. Close F.
  5. Observe part of the window still being rendered on Monitor 2, on top of W.
  6. Move your mouse around monitor 2 and observe that the old window content flashes and that border around the window is glitchy.
  7. Click on W. Observe that W is redrawn and the artifacts disappear.

Crash reports, logs, images, videos

No response

ikalco commented 4 days ago

try this hl patch.txt

vaxerski commented 3 days ago

dupe #5669