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
19.63k stars 828 forks source link

weird artifacts and rendering issues running brave-browser directly via it's ozone wayland renderer rather than xwayland #6524

Closed imgurbot12 closed 2 months ago

imgurbot12 commented 3 months ago

Bug or Regression?

Bug

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit ea2501d4556f84d3de86a4ae2f4b22a474555b9f (props: bump version to 0.41.0). Date: Mon Jun 10 07:23:06 2024 Tag: v0.41.0, commits: 4794 flags: (if any) System Information: System name: Linux Node name: thelio Release: 6.8.0-35-generic Version: #35-Ubuntu SMP PREEMPT_DYNAMIC Mon May 20 15:51:52 UTC 2024 GPU information: 0a:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev e7) (prog-if 00 [VGA controller]) os-release: PRETTY_NAME="Ubuntu 24.04 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=noble LOGO=ubuntu-logo plugins: hy3 by outfoxxed ver 0.1 ======Config-Start====== Config File: /home/andrew/.config/hypr/hyprland.conf: Read Succeeded # plugins plugin = /usr/local/lib/libhy3.so exec-once = hyprpm reload -n #** Monitors **# # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=,preferred,auto,auto #** Variables **# # Refer to https://wiki.hyprland.org/Configuring/Variables/ $term = wezterm $lock = dynlock -f $player = ~/.local/bin/mediactl $menu = rmenu -r run $deskmenu = rmenu -r drun $wifimenu = rmenu -r network $audiomenu = rmenu -r audio $powermenu = rmenu -r powermenu $screenshot = grim -t png - | tee ~/Pictures/Screenshots/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png | wl-copy $screenclip = slurp | grim -g - -t png - | tee ~/Pictures/Screenshots/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png | wl-copy $background = ~/Pictures/Backgrounds/neon-world.jpg $cl_high = rgb(b4befe) $cl_high2 = rgb(CED2E9) $cl_indi = rgb(d9d8d8) $cl_back = rgb(231f20) $cl_fore = rgb(d9d8d8) $cl_urge = 0xee2e24 #** AutoStart **# # autostart desktop elements exec-once = swaybg -i $background exec-once = hypridle exec-once = ~/.config/waybar/waybar.sh exec-once = redshift -c ~/.config/redshift.conf exec-once = swayosd-server --top-margin 0.1 --style ~/.config/swayosd/style.css exec-once = wclipd daemon -k exec-once = $player daemon # autostart common apps exec-once = brave-browser exec-once = vesktop || discord exec-once = signal-desktop exec-once = spotube || rhythmbox # autostart tray applets exec-once = sh -c 'killall warp-taskbar; warp-taskbar' exec-once = nm-tray exec-once = blueman-applet exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY #** Workspaces **# # workspaces workspace=1,defaultName: workspace=2,defaultName: workspace=3,defaultName: workspace=4,defaultName:ﱮ workspace=5,defaultName:5 workspace=6,defaultName:6 workspace=7,defaultName:7 workspace=8,defaultName:8 workspace=9,defaultName:9 workspace=10,defaultName:10 workspace=11,defaultName: workspace=12,defaultName: workspace=13,defaultName:13 workspace=14,defaultName:14 workspace=15,defaultName:15 workspace=16,defaultName:16 workspace=17,defaultName:17 workspace=18,defaultName: workspace=19,defaultName:19 workspace=20,defaultName: workspace=21,defaultName: workspace=22,defaultName: #** Windows **# # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules # default workspaces for common apps windowrulev2 = workspace 2, class:^(Brave-browser)$ windowrulev2 = workspace 11, class:^(Signal)$ windowrulev2 = workspace 11, class:^(discord)$ windowrulev2 = workspace 11, class:^(vesktop)$ windowrulev2 = workspace 18, class:^(VirtualBox Manager)$ windowrulev2 = workspace 18, class:^(virt-manager)$ windowrulev2 = workspace 21, class:^(spotube)$ windowrulev2 = workspace 21, class:^(rhythmbox)$ windowrulev2 = workspace 22, class:^(steam.*)$ # floating modifiers and tweaks windowrulev2 = float,class:^(rmenu)$ windowrulev2 = float,class:^(pavucontrol)$ windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. # opacity overrides # windowrulev2 = opacity 0.75,class:^(vesktop)$ #** Environment **# # See https://wiki.hyprland.org/Configuring/Environment-variables/ env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 #** Keybinds **# # See https://wiki.hyprland.org/Configuring/Keywords/ # See https://wiki.hyprland.org/Configuring/Binds/ $mainMod = SUPER # Sets "Windows" key as main modifier $shiftMod = SUPER_SHIFT # Application/tool shortcuts bind = $mainMod, RETURN, exec, $term bind = $mainMod, R, exec, $menu bind = $mainMod, D, exec, $deskmenu bind = $mainMod, ESCAPE, exec, $powermenu bind = $shiftMod, END, exec, $wifimenu bind = $shiftMod, S, exec, $audiomenu bind = $mainMod, Print, exec, $screenshot bind = $shiftMod, Print, exec, $screenclip # Notifications bind = $mainMod, N, exec, swaync-client --close-latest || dunstctl close bind = $shiftMod, N, exec, swaync-client --close-all || dunstctl close-all # Multimedia bind = $mainMod, M, exec, $player toggle-mic bind = $mainMod, COMMA, exec, $player set-volume -5 bind = $shiftMod, COMMA, exec, $player set-volume -1 bind = $mainMod, PERIOD, exec, $player set-volume +5 bind = $shiftMod, PERIOD, exec, $player set-volume +1 bindel = , XF86AudioRaiseVolume, exec, $player set-volume +5 bindel = , XF86AudioLowerVolume, exec, $player set-volume -5 bindl = , XF86AudioMute, exec, $player toggle-mute bindl = , XF86AudioPlay, exec, $player play-pause bindl = , XF86AudioNext, exec, $player next bindl = , XF86AudioPrev, exec, $player previous bindl = $mainMod, XF86AudioNext, exec, $player shift bindl = $mainMod, XF86AudioPrev, exec, $player unshift # Brightness Controls bind = $mainMod, BRACKET_LEFT, exec, lighctl -5 bind = $shiftMod, BRACKET_LEFT, exec, lightctl -1 bind = $mainMod, BRACKET_RIGHT, exec, lightctl +5 bind = $shiftMod, BRACKET_RIGHT, exec, lightctl +1 # Addtional Controls bindr =,CAPS_LOCK, exec, swayosd-client --caps-lock # Window controls bindn = ,mouse:272, hy3:focustab, mouse bind = $mainMod, W, hy3:changegroup, tab bind = $mainMod, E, hy3:changegroup, untab bind = $shiftMod, Q, killactive, bind = $shiftMod, E, exit, bind = $shiftMod, SPACE, togglefloating, bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle # Move focus with mainMod + arrow keys bind = $mainMod, left, hy3:movefocus, l bind = $mainMod, right, hy3:movefocus, r bind = $mainMod, up, hy3:movefocus, u bind = $mainMod, down, hy3:movefocus, d # Move windows with shitMod + arrow keys bind = $shiftMod, left, hy3:movewindow, l bind = $shiftMod, right, hy3:movewindow, r bind = $shiftMod, up, hy3:movewindow, u bind = $shiftMod, down, hy3:movewindow, 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 bind = $mainMod, F1, workspace, 11 bind = $mainMod, F2, workspace, 12 bind = $mainMod, F3, workspace, 13 bind = $mainMod, F4, workspace, 14 bind = $mainMod, F5, workspace, 15 bind = $mainMod, F6, workspace, 16 bind = $mainMod, F7, workspace, 17 bind = $mainMod, F8, workspace, 18 bind = $mainMod, F9, workspace, 19 bind = $mainMod, F10, workspace, 20 bind = $mainMod, F11, workspace, 21 bind = $mainMod, F12, workspace, 22 # 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, F1, movetoworkspace, 11 bind = $mainMod SHIFT, F2, movetoworkspace, 12 bind = $mainMod SHIFT, F3, movetoworkspace, 13 bind = $mainMod SHIFT, F4, movetoworkspace, 14 bind = $mainMod SHIFT, F5, movetoworkspace, 15 bind = $mainMod SHIFT, F6, movetoworkspace, 16 bind = $mainMod SHIFT, F7, movetoworkspace, 17 bind = $mainMod SHIFT, F8, movetoworkspace, 18 bind = $mainMod SHIFT, F9, movetoworkspace, 19 bind = $mainMod SHIFT, F10, movetoworkspace, 20 bind = $mainMod SHIFT, F11, movetoworkspace, 21 bind = $mainMod SHIFT, F12, movetoworkspace, 22 # 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 #** Others **# debug { disable_logs = false enable_stdout_logs = true } # https://wiki.hyprland.org/Configuring/Variables/#general general { gaps_in = 5 gaps_out = 3 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) col.active_border = $cl_high $cl_high2 45deg col.inactive_border = $cl_back # Set to true enable resizing windows by clicking and dragging on borders and gaps resize_on_border = false # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = true layout = hy3 } # 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 = true shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) # https://wiki.hyprland.org/Configuring/Variables/#blur blur { enabled = true size = 4 passes = 2 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 smart_split = false force_split = 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 = 1 # 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. :( # Window Swallowing enable_swallow = 1 swallow_regex=^(foot)$ } # https://wiki.hyprland.org/Configuring/Variables/#input input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = follow_mouse = 1 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 } plugin { hy3 { # disable gaps when only one window is onscreen # 0 - always show gaps # 1 - hide gaps with a single window onscreen # 2 - 1 but also show the window border no_gaps_when_only = 0 # default: 0 # policy controlling what happens when a node is removed from a group, # leaving only a group # 0 = remove the nested group # 1 = keep the nested group # 2 = keep the nested group only if its parent is a tab group node_collapse_policy = 2 # default: 2 # offset from group split direction when only one window is in a group group_inset = 10 # default: 10 # if a tab group will automatically be created for the first window spawned in a workspace tab_first_window = false # tab group settings tabs { # height of the tab bar height = 15 # default: 15 # padding between the tab bar and its focused node padding = 5 # default: 5 # the tab bar should animate in/out from the top instead of below the window from_top = false # default: false # rounding of tab bar corners rounding = 3 # default: 3 # render the window title on the bar render_text = true # default: true # center the window title text_center = false # default: false # font to render the window title with text_font = Sans # default: Sans # height of the window title text_height = 8 # default: 8 # left padding of the window title text_padding = 3 # default: 3 # active tab bar segment color col.active = $cl_high # default: 0xff32b4ff # urgent tab bar segment color col.urgent = $cl_urgent # default: 0xffff4f4f # inactive tab bar segment color col.inactive = $cl_back # default: 0x80808080 # active tab bar text color col.text.active = $cl_fore # default: 0xff000000 # urgent tab bar text color col.text.urgent = $cl_fore # default: 0xff000000 # inactive tab bar text color col.text.inactive = $cl_fore # default: 0xff000000 } # autotiling settings autotile { # enable autotile enable = true # default: false # make autotile-created groups ephemeral ephemeral_groups = true # default: true # if a window would be squished smaller than this width, a vertical split will be created # -1 = never automatically split vertically # 0 = always automatically split vertically # = pixel height to split at trigger_width = 0 # default: 0 # if a window would be squished smaller than this height, a horizontal split will be created # -1 = never automatically split horizontally # 0 = always automatically split horizontally # = pixel height to split at trigger_height = 0 # default: 0 # a space or comma separated list of workspace ids where autotile should be enabled # it's possible to create an exception rule by prefixing the definition with "not:" # workspaces = 1,2 # autotiling will only be enabled on workspaces 1 and 2 # workspaces = not:1,2 # autotiling will be enabled on all workspaces except 1 and 2 workspaces = all # default: all } } } ======Config-End======== ```

Description

Brave-Browser has a ton of rendering issues when running on native wayland within Hyprland including:

Here's a short video demonstrating a few of the issues. (I can't seem to upload it properly via github for whatever reason so here's an imgur link) https://imgur.com/a/O2NcCeK

How to reproduce

  1. Open Brave.
  2. Go to brave://flags
  3. Search for "ozone" and modify "Preffered Ozone Platform" and set it to "wayland"
  4. Allow a Restart of the Browser
  5. ???
  6. Profit image

Crash reports, logs, images, videos

No response

MightyPlaza commented 3 months ago

is this a regression? does it happen on sway, for example?

vaxerski commented 3 months ago

they mentioned it doesnt happen on sway

looks like fucked uv from looking at the corners

vaxerski commented 3 months ago

can't seem to repro running brave image

maybe it's some extension you're using? does it happen on a clean profile?

imgurbot12 commented 3 months ago

oh wtf, it does. Using the default profile worked. Changing the layout from hy3 back to dwindle fixes the issue. That's so bizzare. I'll post an issue with the plugin then. Iunno how it would even be possible to break it like that with a plugin but whatever lol.

That fixes vencord running ozone as well which didn't even launch up until now. Thanks!

vaxerski commented 3 months ago

lole

v4u6h4n commented 3 months ago

I actually have similar issues, and could only get it fixed by switching to the experimental vulkan renderer, but that introduces other graphical stretching when i change window sizes, which is present in the default profile. I am already on dwindle to, so dont think thatll help.

imgurbot12 commented 2 months ago

Apologies all, but after some further testing after a short discussion with @outfoxxed, and I'm not positive hy3 is the issue anymore. I'm even more confused on this bug because I can no longer replicate the exact issues I've had yesterday.

However, I have found something similar that I am able to replicate on the dwindle layout that is a problem so I'm reopening the issue for now: https://imgur.com/a/n1Mx0q9

Interestingly enough, this only happens the first time I try and open the settings page, closing and reopening the tab fixes the issue. I have to restart the browser to get the same effect again.

vaxerski commented 2 months ago

groovy

That looks more like a browser issue - it's just not drawing anything, that's what happens

imgurbot12 commented 2 months ago

It definitely should be drawing something lol. I can't pretend to know where the issue lies but it only happens in wayland mode and only in Hyprland.

imgurbot12 commented 2 months ago

My issues are magically fixed as of v0.41.2, I have no idea why but that's fine with me I guess lol. Apologies for being a bother, but thanks for your hard work on Hyprland. Have a good one!