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
20.07k stars 852 forks source link

Tearing doesn't work anymore on xwayland apps #6287

Closed vpertys closed 4 months ago

vpertys commented 4 months ago

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit df6ebe358b30ee7b49f296e05763e5e4b0edce98 (pointer: Include monitor scaling in HW hotspot calculation (6283)). Date: Fri May 31 17:38:52 2024 Tag: v0.40.0-145-gdf6ebe35, commits: 4751 flags: (if any) System Information: System name: Linux Node name: l5p Release: 6.9.2-1-cachyos-bore Version: #1 SMP PREEMPT_DYNAMIC Mon, 27 May 2024 11:27:34 +0000 GPU information: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] [10de:2560] (rev a1) (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/vpertys/.config/hypr/hyprland.conf: Read Succeeded source = ~/.config/hypr/conf/animations.conf source = ~/.config/hypr/conf/decoration.conf source = ~/.config/hypr/conf/general.conf #source = ~/.config/hypr/conf/general-wal.conf source = ~/.config/hypr/conf/misc.conf source = ~/.config/hypr/conf/devices.conf source = ~/.config/hypr/conf/input.conf source = ~/.config/hypr/conf/monitor.conf source = ~/.config/hypr/conf/nvidia.conf source = ~/.config/hypr/conf/layout.conf source = ~/.config/hypr/conf/apps.conf source = ~/.config/hypr/conf/binds.conf source = ~/.config/hypr/conf/navbinds.conf source = ~/.config/hypr/conf/env.conf source = ~/.config/hypr/conf/windowrules.conf source = ~/.config/hypr/conf/startup.conf Config File: /home/vpertys/.config/hypr/conf/animations.conf: Read Succeeded animations { enabled = yes bezier = myBezier, 0.05, 0.9, 0.1, 1.05 bezier = easeInOut, 0.76, 0, 0.24, 1 bezier = easeInQuad, 0.11, 0, 0.5, 0 bezier = easeOutQuint, 0.22, 1, 0.36, 1 animation = windows, 1, 4, easeOutQuint, slide animation = windowsOut, 1, 4, easeOutQuint, slide #popin 80% animation = border, 1, 8, default animation = borderangle, 1, 7, default animation = fade, 1, 4, default animation = workspaces, 1, 4, easeOutQuint animation = specialWorkspace, 0 } Config File: /home/vpertys/.config/hypr/conf/decoration.conf: Read Succeeded decoration { rounding = 10 blur { enabled = true size = 8 passes = 4 new_optimizations = true } drop_shadow = yes shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) } Config File: /home/vpertys/.config/hypr/conf/general.conf: Read Succeeded general { gaps_in = 5 gaps_out = 0,10,10,10 border_size = 2 col.active_border = rgb(00c8ec) col.inactive_border = rgba(595959aa) layout = master allow_tearing = true } Config File: /home/vpertys/.config/hypr/conf/misc.conf: Read Succeeded misc { force_default_wallpaper = -1 mouse_move_enables_dpms = true key_press_enables_dpms = true disable_splash_rendering = true disable_hyprland_logo = true vrr = 0 initial_workspace_tracking = 2 #middle_click_paste = false } xwayland { use_nearest_neighbor = false force_zero_scaling = true } debug:disable_logs = false Config File: /home/vpertys/.config/hypr/conf/devices.conf: Read Succeeded device { name = lenovo-lenovo-legion-m300-rgb-gaming-mouse accel_profile = flat sensitivity = 0 } device { name = lenovo-lenovo-legion-m300-rgb-gaming-mouse-1 accel_profile = flat sensitivity = 0 } Config File: /home/vpertys/.config/hypr/conf/input.conf: Read Succeeded input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = repeat_delay = 300 repeat_rate = 30 follow_mouse = 1 mouse_refocus = false float_switch_override_focus = 0 touchpad { disable_while_typing = yes natural_scroll = yes scroll_factor = 1 } sensitivity = 0 } gestures { workspace_swipe = true workspace_swipe_forever = true } Config File: /home/vpertys/.config/hypr/conf/monitor.conf: Read Succeeded monitor=eDP-1,2560x1600@165,0x0,1.333333 monitor=eDP-2,2560x1600@165,0x0,1.333333 Config File: /home/vpertys/.config/hypr/conf/nvidia.conf: Read Succeeded env = GBM_BACKEND,nvidia-drm env = __GLX_VENDOR_LIBRARY_NAME,nvidia env = NVD_BACKEND,direct env = LIBVA_DRIVER_NAME,nvidia opengl { nvidia_anti_flicker = true force_introspection = 2 } Config File: /home/vpertys/.config/hypr/conf/layout.conf: Read Succeeded dwindle { # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below force_split = 2 preserve_split = true # you probably want this smart_resizing = false no_gaps_when_only = no } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more new_is_master = true new_on_top = true no_gaps_when_only = false mfact = 0.525 drop_at_cursor = true } workspace = 1, monitor:eDP-1 workspace = 2, monitor:eDP-1 workspace = 3, monitor:eDP-1 workspace = 4, monitor:eDP-1 workspace = 5, monitor:eDP-1 workspace = 6, monitor:eDP-1 workspace = 7, monitor:eDP-1 workspace = 8, monitor:eDP-1 workspace = 9, monitor:eDP-1 Config File: /home/vpertys/.config/hypr/conf/apps.conf: Read Succeeded $terminal = foot $fileManager = foot lf $menu = fuzzel $browser = firefox $calculator = kcalc $logout = wlogout -p layer-shell $scripts = ~/.config/hypr/scripts Config File: /home/vpertys/.config/hypr/conf/binds.conf: Read Succeeded bind = SUPER, return, exec, $terminal bind = SUPER SHIFT, return, exec, $terminal --class kitty-float bind = SUPER, B, exec, $browser bind = SUPER, Q, killactive bind = SUPER, F, fullscreen, 0 bind = SUPER SHIFT, F, fullscreen, 1 bind = SUPER CTRL, F, fakefullscreen bind = SUPER, E, exec, $fileManager bind = SUPER, G, togglefloating bind = SUPER, space, exec, $menu bind = SUPER, D, exec, $menu bind = , XF86Calculator, exec, $calculator bind = SUPER, P, pseudo, # dwindle #bind = SUPER, J, togglesplit, # dwindle bind = CTRLALT, Delete, exec, $logout bind = , PRINT, exec, hyprshot -m output -m active bind = SHIFT, PRINT, exec, hyprshot -m region bind = SUPER, PRINT, exec, hyprshot -m window binde = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%- binde = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ binde = SHIFT, XF86AudioLowerVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 1%- binde = SHIFT, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 1%+ bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle binde = , XF86MonBrightnessDown, exec, brightnessctl set 5%- binde = , XF86MonBrightnessUp, exec, brightnessctl set +5% binde = SHIFT, XF86MonBrightnessDown, exec, brightnessctl set 1%- binde = SHIFT, XF86MonBrightnessUp, exec, brightnessctl set +1% bind = , XF86PowerOff, exec, hyprctl dispatch dpms off bind = SUPER, V, exec, cliphist list | fuzzel --dmenu --width 100 | cliphist decode | wl-copy bind = SUPER SHIFT, P , exec, hyprpicker -a -f hex bind = SUPER ALT, P , pin bind = SUPER ALT, M, exec, $scripts/kitty-cava bind = SUPER ALT, N, exec, $scripts/toggle-cava bind = , XF86AudioPlay, exec, playerctl --player=spotify play-pause bind = , XF86AudioNext, exec, playerctl --player=spotify next bind = , XF86AudioPrev, exec, playerctl --player=spotify previous bind = , XF86AudioStop, exec, playerctl --player=spotify stop bind = SUPER, backslash, togglespecialworkspace bind = SUPER SHIFT, backslash, movetoworkspace, special bind = SUPER SHIFT, T, exec, $scripts/toggle-tearing bind = SUPER SHIFT, G, exec, $scripts/toggle-gaps bind = SUPER CTRL SHIFT, G, exec, $scripts/toggle-gaps-only bind = SUPER CTRL SHIFT, A, exec, $scripts/toggle-fancy bind = SUPER ALT, L, exec, $scripts/toggle-ambientlight bind = SUPER ALT, R, exec, $scripts/toggle-rr bind = SUPER ALT, Up, exec, hyprctl keyword monitor eDP-1,preferred,auto,1.333333,transform,0 bind = SUPER ALT, Left, exec, hyprctl keyword monitor eDP-1,preferred,auto,1.333333,transform,1 bind = SUPER ALT, Down, exec, hyprctl keyword monitor eDP-1,preferred,auto,1.333333,transform,2 bind = SUPER ALT, Right , exec, hyprctl keyword monitor eDP-1,preferred,auto,1.333333,transform,3 bind = SUPER CTRL ALT, Up, exec, hyprctl keyword monitor eDP-1,preferred,auto,1.333333,transform,4 bind = SUPER CTRL ALT, Left, exec, hyprctl keyword monitor eDP-1,preferred,auto,1.333333,transform,5 bind = SUPER CTRL ALT, Down, exec, hyprctl keyword monitor eDP-1,preferred,auto,1.333333,transform,6 bind = SUPER CTRL ALT, Right , exec, hyprctl keyword monitor eDP-1,preferred,auto,1.333333,transform,7 bind = SUPER CTRL SHIFT, W, exec, $scripts/hackerman bindl = , switch:off:Lid Switch, exec, $scripts/lock Config File: /home/vpertys/.config/hypr/conf/navbinds.conf: Read Succeeded # Move focus with mainMod + arrow keys bind = SUPER, left, movefocus, l bind = SUPER, right, movefocus, r bind = SUPER, up, movefocus, u bind = SUPER, down, movefocus, d bind = SUPER, h, movefocus, l bind = SUPER, l, movefocus, r bind = SUPER, k, movefocus, u bind = SUPER, j, movefocus, d # Move active window with mainMod + shift + arrow keys bind = SUPER SHIFT, left, movewindow, l bind = SUPER SHIFT, right, movewindow, r bind = SUPER SHIFT, up, movewindow, u bind = SUPER SHIFT, down, movewindow, d bind = SUPER SHIFT, h, movewindow, l bind = SUPER SHIFT, l, movewindow, r bind = SUPER SHIFT, k, movewindow, u bind = SUPER SHIFT, j, movewindow, d # Resize active window with mainMod + ctrl + arrow keys binde = SUPER CTRL, left, resizeactive, -15 0 binde = SUPER CTRL, right, resizeactive, 15 0 binde = SUPER CTRL, up, resizeactive, 0 -15 binde = SUPER CTRL, down, resizeactive, 0 15 binde = SUPER CTRL, h, resizeactive, -15 0 binde = SUPER CTRL, l, resizeactive, 15 0 binde = SUPER CTRL, k, resizeactive, 0 -15 binde = SUPER CTRL, j, resizeactive, 0 15 # Switch workspaces with mainMod + [0-9] bind = SUPER, 1, workspace, 1 bind = SUPER, 2, workspace, 2 bind = SUPER, 3, workspace, 3 bind = SUPER, 4, workspace, 4 bind = SUPER, 5, workspace, 5 bind = SUPER, 6, workspace, 6 bind = SUPER, 7, workspace, 7 bind = SUPER, 8, workspace, 8 bind = SUPER, 9, workspace, 9 bind = SUPER, 0, workspace, 10 bind = SUPER, z, workspace, 11 bind = SUPER, x, workspace, 12 bind = SUPER, c, workspace, 13 bind = SUPER, s, workspace, 14 # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = SUPER SHIFT, 1, movetoworkspace, 1 bind = SUPER SHIFT, 2, movetoworkspace, 2 bind = SUPER SHIFT, 3, movetoworkspace, 3 bind = SUPER SHIFT, 4, movetoworkspace, 4 bind = SUPER SHIFT, 5, movetoworkspace, 5 bind = SUPER SHIFT, 6, movetoworkspace, 6 bind = SUPER SHIFT, 7, movetoworkspace, 7 bind = SUPER SHIFT, 8, movetoworkspace, 8 bind = SUPER SHIFT, 9, movetoworkspace, 9 bind = SUPER SHIFT, 0, movetoworkspace, 10 bind = SUPER SHIFT, z, movetoworkspace, 11 bind = SUPER SHIFT, x, movetoworkspace, 12 bind = SUPER SHIFT, c, movetoworkspace, 13 bind = SUPER SHIFT, s, movetoworkspace, 14 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = SUPER, mouse:272, movewindow bindm = SUPER, mouse:273, resizewindow bind = SUPER, n, centerwindow Config File: /home/vpertys/.config/hypr/conf/env.conf: Read Succeeded env = HYPRCURSOR_THEME,rose-pine-hyprcursor env = HYPRCURSOR_SIZE,28 env = XCURSOR_SIZE,28 env = GDK_SCALE,1.333 #env = QT_SCALE_FACTOR,1.333 env = QT_QPA_PLATFORMTHEME,qt6ct env = GTK_THEME,Breeze-Dark env = WLR_DRM_NO_ATOMIC,1 env = HYPRSHOT_DIR,/home/vpertys/Pictures/Screenshots env = STEAM_FORCE_DESKTOPUI_SCALING,1.333 env = QT_IM_MODULE,fcitx env = XMODIFIERS,@im=fcitx Config File: /home/vpertys/.config/hypr/conf/windowrules.conf: Read Succeeded windowrulev2 = animation popin 80%, floating:1 windowrulev2 = suppressevent maximize, class:.* windowrulev2 = workspace 11, initialClass:^(osu!.exe)$ windowrulev2 = workspace 11, class:^(osu!)$ windowrulev2 = workspace 12 silent, class:^(discord)$ windowrulev2 = workspace 12 silent, initialClass:^(vesktop)$ windowrulev2 = workspace 13 silent, class:^(com.rtosta.zapzap)$ windowrulev2 = workspace 13 silent, class:^(zapzap)$ windowrulev2 = workspace 13 silent, initialClass:^(ZapZap)$ windowrulev2 = workspace 13 silent, class:^(FFPWA-01HZ4VB725M6T8S13KY247A11E)$ windowrulev2 = workspace 14, class:^(Spotify)$ windowrulev2 = workspace 14, class:^(spotify)$ windowrulev2 = workspace 14, class:^()$,title:^(Spotify Free)$ windowrulev2 = immediate, initialClass:^(mcpelauncher-client)$ windowrulev2 = immediate, class:^(Minecraft)(.*)$ windowrulev2 = immediate, class:^(robloxplayerbeta.exe)$ windowrulev2 = immediate, class:^(osu)(.*)$ windowrulev2 = immediate, initialClass:^(osu!.exe)$ windowrulev2 = immediate, class:^(cs2)$ windowrulev2 = float, class:^(.*)(.exe)$ windowrulev2 = float, class:^(kitty-float)$ windowrulev2 = float, class:^(resolve)$,title:^(resolve)$ windowrulev2 = float, class:^(nm-connection-editor)$ windowrulev2 = float, class:^(Synthesizer V Studio Pro)$ windowrulev2 = float, class:^(org.qbittorrent.qBittorrent)$ windowrulev2 = float, class:^(OpenTabletDriver.UX)$ windowrulev2 = float, class:^(com.interversehq.qView)$ windowrulev2 = float, class:^(thunar)$,title:^(File Operation Progress)$ windowrulev2 = float, class:^(org.kde.polkit-kde-authentication-agent-1)$ windowrulev2 = float, class:^(org.kde.kcalc)$ windowrulev2 = float, class:^(zenity)$ windowrulev2 = tile, class:^(steam_app_1325860)$, windowrulev2 = tile, class:^(osu!.exe)$,title:^(osu!)$ windowrulev2 = tile, class:^(DesktopEditors)$ windowrulev2 = tile, class:^(resolve)$,title:^(DaVinci Resolve Studio)(.*)$ windowrulev2 = tile, class:^(OpenTabletDriver.UX)$ windowrulev2 = tile, class:^(ONLYOFFICE Desktop Editors)$ windowrulev2 = tile, class:^(Synthesizer V Studio Pro)$,title:^(Synthesizer V Studio Pro)(.*)$ windowrulev2 = tile, class:^(org.qbittorrent.qBittorrent),title:^(qBittorrent v)(.*)$ windowrulev2 = noinitialfocus, class:^(jetbrains-.*)$,title:^(win.*) windowrulev2 = noinitialfocus, class:^(Ardour-.*)$ windowrulev2 = nofocus, class:^(Toplevel)$,title:^(Ultimate Vocal Remover)$ windowrulev2 = nofocus, title:^()$,class:^(Audacity)$ windowrulev2 = nofocus, title:^(Wine System Tray)$ #windowrulev2 = opacity 0.9, class:^(com.rtosta.zapzap)$ #windowrulev2 = opacity 0.9, class:^(vesktop)$ windowrulev2 = stayfocused, title:^()$,class:^(steam)$ windowrulev2 = minsize 1 1, title:^()$,class:^(steam)$ windowrulev2 = keepaspectratio, class:^(diva.exe)$ windowrulev2 = move -20% -20%, title:^(Wine System Tray)$ windowrulev2 = fullscreen, class:^(mpv)$ windowrulev2 = animation popin, class:^(mpv)$ windowrulev2 = windowdance, class:^(notitg-v4.2.0.exe)$ windowrulev2 = size 40% 40% , class:^(kitty-float)$ windowrulev2 = center, class:^(kitty-float)$ windowrulev2 = workspace 9, class:^(vnyan.exe)$,initialTitle:^(VNyan)$ windowrulev2 = workspace 9, initialClass:^(System Animator \(Electron\))$ windowrulev2 = pin, initialClass:^(System Animator \(Electron\))$ windowrulev2 = noblur, initialClass:^(System Animator \(Electron\))$ windowrulev2 = noborder, initialClass:^(System Animator \(Electron\))$ windowrulev2 = noshadow, initialClass:^(System Animator \(Electron\))$ #windowrulev2 = noshadow, class:^(vesktop)$ layerrule = blur, ^(logout_dialog)$ layerrule = blur, ^(notifications)$ layerrule = blur, ^(launcher)$ layerrule = ignorezero, ^(notifications)$ layerrule = ignorezero, ^(launcher)$ layerrule = noanim, ^(selection)$ layerrule = animation popin 90%, ^(launcher)$ layerrule = animation slide, ^(waybar)$ layerrule = animation slide, ^(notifications)$ Config File: /home/vpertys/.config/hypr/conf/startup.conf: Read Succeeded exec-once = hyprpaper exec-once = /usr/lib/polkit-kde-authentication-agent-1 exec-once = /usr/bin/waybar exec-once = dunst exec-once = killall kdeconnectd exec-once = gsettings set org.gnome.desktop.interface text-scaling-factor 1.0 exec-once = systemctl --user restart opentabletdriver.service #exec-once = sh -c 'sleep 2; jamesdsp -t' exec-once = vesktop & firefoxpwa site launch 01HZ4VB725M6T8S13KY247A11E & fcitx5 exec-once = wl-paste --type text --watch cliphist store #Stores only text data exec-once = wl-paste --type image --watch cliphist store #Stores only image data #exec-once = wl-clip-persist --clipboard regular exec-once = wl-paste -pw wl-copy -pc exec-once = xmousepasteblock exec-once = udiskie ======Config-End======== ```

Bug or Regression?

Regression

Description

Tested on osu! and Minecraft, both report activelyTearing: false in hyprctl monitors. Worked before addd3e7f1aeb670dd91d26005aaeccce3efb1ae7.

How to reproduce

  1. Set general:allow_tearing to true and add immediate windowrule to an xwayland app
  2. Launch the app then fullscreen it
  3. App doesn't tear :(

Crash reports, logs, images, videos

No response

vaxerski commented 4 months ago

recheckSolitaryForMonitor in renderer.cpp, where does it bail out before reaching the end whenever it should tear? you can add logs like Debug::log(LOG, "1"); after every if to debug it I guess