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.65k stars 901 forks source link

XWayland fullscreen game turns black after switching back from another workspace #6570

Closed UjinT34 closed 5 months ago

UjinT34 commented 5 months ago

Bug or Regression?

Regression

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit d1340bd1d8eedd274283e0cb2568a3ed67b58c81 (keybinds: ignore missing keysyms if no other methods match). Date: Mon Jun 17 18:53:51 2024 Tag: v0.41.1-40-gd1340bd1, commits: 4858 flags: (if any) System Information: System name: Linux Node name: ujinhost Release: 6.9.3-gentoo-x86_64 Version: #1 SMP PREEMPT_DYNAMIC Sat Jun 1 17:46:01 MSK 2024 GPU information: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3080] [10de:2206] (rev a1) (prog-if 00 [VGA controller]) os-release: NAME=Gentoo ID=gentoo PRETTY_NAME="Gentoo Linux" ANSI_COLOR="1;32" HOME_URL="https://www.gentoo.org/" SUPPORT_URL="https://www.gentoo.org/support/" BUG_REPORT_URL="https://bugs.gentoo.org/" VERSION_ID="2.15" plugins: ======Config-Start====== Config File: /home/ujin/.config/hypr/hyprland.conf: Read Succeeded # # Please note not all available settings / options are set here. # For a full list, see the wiki # debug { disable_logs = true enable_stdout_logs = true #damage_tracking = 0 } cursor { no_hardware_cursors = true no_break_fs_vrr = true min_refresh_rate = 48 } opengl { nvidia_anti_flicker = false } #env=WLR_NO_HARDWARE_CURSORS,1 #env=WLR_DRM_NO_ATOMIC,1 env = XCURSOR_SIZE,30 env = XCURSOR_THEME,Qogir env=GBM_BACKEND,nvidia-drm env=__GLX_VENDOR_LIBRARY_NAME,nvidia env=__GL_GSYNC_ALLOWED,1 env=__GL_VRR_ALLOWED,1 #env=XWAYLAND_NO_GLAMOR,1 env=XDG_SESSION_TYPE,wayland env=MOZ_ENABLE_WAYLAND,1 env=MOZ_DISABLE_RDD_SANDBOX,1 env=LIBVA_DRIVER_NAME,nvidia env=QT_QPA_PLATFORMTHEME,kde env=SAL_USE_VCLPLUGIN,kf5 env=CLUTTER_BACKEND,wayland env=NVD_BACKEND,direct #env=GTK_USE_PORTAL,1 env=QT_STYLE_OVERRIDE,kvantum-dark #env=SDL_VIDEODRIVER,"wayland,x11" # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=DP-1,3440x1440@144,0x0,1 monitor=DP-2,3440x1440@144,0x0,1 #monitor=DP-3,3440x1440@144,0x0,1 monitor=DP-3,3840x2160@60,0x0,2 monitor=DP-4,3440x1440@144,0x0,1 #monitor=HDMI-A-1,disable #monitor=HDMI-A-1,1280x720@60,3440x0,1 monitor=HDMI-A-1,preferred,auto,1,mirror,DP-1 #monitor=,preferred,auto,auto layerrule = blur, waybar layerrule = ignorealpha, waybar layerrule = blur, gtk-layer-shell layerrule = ignorealpha, gtk-layer-shell layerrule = noanim, rofi layerrule = blur, rofi layerrule = dimaround, rofi misc { #vfr = false vrr = 2 no_direct_scanout = false enable_swallow = true render_ahead_of_time = false disable_hyprland_logo = true disable_splash_rendering = true #focus_on_activate = true initial_workspace_tracking = 2 } #exec-once = hyprctl plugin load ~/.local/lib/hyprland/hyprbars.so plugin { hyprbars { bar_height = 30 bar_text_size = 14 } } # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch exec-once = /usr/lib64/libexec/polkit-kde-authentication-agent-1 exec-once = /usr/bin/hyprland-per-window-layout #exec-once = ~/.cargo/bin/hyprland-per-window-layout #exec-once = eww daemon exec-once = mako #exec-once = waybar exec-once = eww daemon && eww open bar exec-once = nm-applet exec-once = hyprpaper exec-once = ~/bin/hyprland_ipc.sh exec-once = hyprctl setcursors Qogir 30 # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { kb_layout = us,ru kb_variant = kb_model = kb_options = grp:win_space_toggle kb_rules = follow_mouse = 1 touchpad { natural_scroll = no } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 4 gaps_out = 8 border_size = 1 col.active_border = rgba(62F05AFF) col.inactive_border = rgba(59595900) # col.group_border_active = rgba(33ccffee) rgba(00ff99ee) 45deg layout = dwindle resize_on_border = true } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 0 drop_shadow = yes shadow_range = 5 shadow_render_power = 1 col.shadow = rgba(00000033) # #62F05A dim_inactive = false blur { enabled = yes size = 8 passes = 2 popups = true #noise = 0 contrast = 1 brightness = 1 vibrancy = 0.1 vibrancy_darkness = 1 } } animations { enabled = yes # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = myBezier, 0.05, 0.9, 0.1, 1.05 bezier = inv, 0.1, 1.05, 0.05, 0.9 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, fade animation = specialWorkspace, 1, 2, default, slidevert } 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 preserve_split = yes # you probably want this } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more new_status = master always_center_master = true orientation = center } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = off } # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more #device:epic-mouse-v1 { # sensitivity = -0.5 #} # Example windowrule v1 # windowrule = float, ^(kitty)$ # Example windowrule v2 # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more #windowrule = workspace name:Games, ^(Steam)(.*)$ #windowrule = workspace name:Games, ^(steam)(.*)$ windowrule = float, ^(org.kde.yakuake)(.*)$ windowrule = move 0 0, ^(org.kde.yakuake)(.*)$ windowrule = size 100% 30%, ^(org.kde.yakuake)(.*)$ windowrule = float, ^(pavucontrol)(.*)$ windowrule = size 650 400, ^(pavucontrol)(.*)$ windowrule = move 100%-655 100%-435, ^(pavucontrol)(.*)$ windowrule = animation popin 90%, ^(pavucontrol)(.*)$ windowrule = workspace name:Games, ^(org.libretro.RetroArch)(.*)$ windowrule = forcergbx, ^(org.libretro.RetroArch)(.*)$ windowrule = fullscreen, ^(org.libretro.RetroArch)(.*)$ windowrulev2 = float, class:(electron), title:((Open File)|(Save As)) windowrulev2 = center 1, class:(electron), title:((Open File)|(Save As)) windowrulev2 = size 50% 80%, class:(electron), title:((Open File)|(Save As)) windowrulev2 = dimaround, class:(electron), title:((Open File)|(Save As)) windowrulev2 = float, class:(^$), title:(^$) # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, Q, exec, konsole bind = $mainMod, E, exec, dolphin bind = $mainMod, F, exec, firefox #bind = $mainMod, grave, exec, yakuake bind = $mainMod, S, exec, steam #bind = $mainMod, S, workspace, name:Games bind = $mainMod, R, exec, rofi -show drun bind = $mainMod, C, exec, rofi -show calc #bind = $mainMod, C, killactive, bind = ALT, F4, killactive, bind = $mainMod, M, exit, bind = $mainMod, G, togglegroup, bind = $mainMod SHIFT, G, lockgroups, toggle bind = CTRL, TAB, changegroupactive, f bind = $mainMod, V, togglefloating, bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle bind = ALT, tab, layoutmsg, swapwithmaster # master #bind = ALT, tab, layoutmsg, rollnext # master bind = $mainMod ALT, M, layoutmsg, addmaster # master bind = $mainMod, Print, exec, /home/ujin/bin/screenshot.sh # 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 workspace = 1,defaultName:Default workspace = 2,defaultName:Work workspace = 3,defaultName:Games workspace = 4,defaultName:Relax workspace = 6,defaultName:Wiki # 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, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $mainMod SHIFT, 0, movetoworkspace, 10 # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 bind = $mainMod, tab, workspace, e+1 bind = $mainMod SHIFT, tab, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow bind = $mainMod, grave, togglespecialworkspace bind = $mainMod SHIFT, grave, movetoworkspace, special exec = hyprctl keyword general:layout master ======Config-End======== ```

Description

XWayland fullscreen games render black screen after switching to another workspace and going back. Doesn't happen in windowed mode and doesn't happen with native wayland.

Happens since 2566d818848b58b114071f199ffe944609376270

How to reproduce

  1. start any xwayland game in fullscreen
  2. switch to another workspace
  3. switch back

Crash reports, logs, images, videos

No response

bubba-champion commented 5 months ago

https://github.com/hyprwm/Hyprland/issues/6375