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.25k stars 801 forks source link

screenshare is broken in discord (black screen) #6370

Closed heather7283 closed 2 months ago

heather7283 commented 2 months ago

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit 9994b73ad0af5c9ba5fc4058234cea77d0a1ddb1 (buffer: track asynchronous buffers and don't release them until unref). Date: Sat Jun 8 19:27:56 2024 Tag: v0.40.0-176-g9994b73a, commits: 4782 flags: (if any) System Information: System name: Linux Node name: FA506IH Release: 6.9.0-arch1-1-FA506IH Version: #4 SMP PREEMPT_DYNAMIC Tue, 04 Jun 2024 14:14:38 +0000 GPU information: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117M [GeForce GTX 1650 Mobile / Max-Q] [10de:1f99] (rev a1) (prog-if 00 [VGA controller]) 05:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Renoir [Radeon Vega Series / Radeon Vega Mobile Series] [1002:1636] (rev c7) (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/heather/.config/hypr/hyprland.conf: Read Succeeded monitor = eDP-1, 1920x1080, 0x0, 1 #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 # Source a file (multi-file configs) source = ~/.config/hypr/binds.conf # Keybinds source = ~/.config/hypr/windowrules.conf # Window rules source = ~/.config/hypr/environment.conf # Environment variables source = ~/.config/hypr/autostart.conf # Autostart input { kb_layout = us,ru # English and Russian layouts kb_options = grp:alt_shift_toggle,caps:none # Switch with Alt+Shift follow_mouse = 1 repeat_rate = 30 repeat_delay = 250 touchpad { natural_scroll = yes } } general { gaps_in = 0 gaps_out = 0 border_size = 1 col.inactive_border = rgba(343F44FF) col.active_border = rgba(475258FF) resize_on_border = true extend_border_grab_area = 7 layout = dwindle } decoration { rounding = 0 blur { enabled = false } drop_shadow = false } animations { enabled = no } misc { disable_splash_rendering = true disable_hyprland_logo = true background_color = 0x1E2326 mouse_move_enables_dpms = true key_press_enables_dpms = true focus_on_activate = true # Respect app focus requests } dwindle { pseudotile = yes preserve_split = yes no_gaps_when_only = 1 # disable borders when there is one window in the workspace } Config File: /home/heather/.config/hypr/binds.conf: Read Succeeded # Key binds config # Mian mod key is SUPER (Windows) $mainMod = SUPER # Launch applications bind = $mainMod, T, exec, if pgrep --exact "tmux: server"; then exec foot tmux attach; else exec foot tmux; fi bind = $mainMod_SHIFT, T, exec, foot bind = $mainMod_SHIFT, R, exec, foot-popup bind = $mainMod, W, exec, firefox bind = $mainMod, A, exec, foot-popup pulsemixer bind = $mainMod, R, exec, foot-popup ~/.config/scripts/drun-fzf/drun-fzf.sh bind = $mainMod, C, exec, foot-popup ~/.config/scripts/cliphist-fzf/cliphist-fzf.sh bind = $mainMod, B, exec, foot-popup ~/.config/scripts/firefox-history-fzf/firefox-history-fzf.sh # Window management # kill the process that owns active window if this process doesn't have any other windows opened bind = $mainMod, Q, exec, addr="$(hyprctl activewindow -j | jq -r ".address")"; pid="$(hyprctl clients -j | jq -r ".[] | select(.address == \""$addr"\").pid")"; if [ "$(hyprctl clients -j | jq -r "[.[] | select(.pid == $pid)] | length")" -le 1 ]; then hyprctl dispatch closewindow address:"$addr"; sleep 3; kill -TERM "$pid"; else hyprctl dispatch closewindow address:"$addr"; fi bind = $mainMod, O, togglefloating, bind = $mainMod, P, pin, bind = $mainMod, F, fullscreen,1 # maximize (keep panel) bind = $mainMod_SHIFT, F, fullscreen,0 # actual fullscreen bind = $mainMod, S, exec, grim - | tee ~/pictures/sshots/"$(date --iso-8601=ns)".png | wl-copy -t "image/png" bind = $mainMod_SHIFT, S, exec, grim -g "$(slurp)" - | tee ~/pictures/sshots/"$(date --iso-8601=ns)".png | wl-copy -t "image/png" bind = $mainMod_CTRL, S, exec, grim -g "$(slurp)" - | swappy -f - -o - | wl-copy bind = $mainMod, U, exec, hyprpicker -a -f hex # Cycle through open windows bind = $mainMod, N, cyclenext # Scroll through existing workspaces bind = $mainMod, L, workspace, r+1 bind = $mainMod, H, workspace, r-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow # Switch workspaces with mainMod + [9-0] 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 + [9-0] 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 # Audio control with pactl binde = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% binde = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% bind = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle bindr = , VoidSymbol, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle # Backlight control with brightnessctl binde = , XF86MonBrightnessDown, exec, brightnessctl --class=backlight s 10- binde = , XF86MonBrightnessUp, exec, brightnessctl --class=backlight s +10 # Turn display off # (XF86ScreenSaver doesn't work for some reason so we use the keycode) bind = , code:160, exec, sleep 0.5 && hyprctl dispatch dpms off # Bind F10 key to toggle player play/pause bind = , XF86TouchpadToggle, exec, playerctl play-pause Config File: /home/heather/.config/hypr/windowrules.conf: Read Succeeded # Window rules # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # Firefox Picture-in-Picture windowrulev2=float,title:Picture-in-Picture windowrulev2=pin,title:Picture-in-Picture windowrulev2=keepaspectratio,title:Picture-in-Picture windowrulev2=size 30% 30%,title:Picture-in-Picture windowrulev2 = suppressevent fullscreen maximize,title:Picture-in-Picture #windowrulev2=bordersize 1,title:Picture-in-Picture # Make firefox itself tiled windowrulev2 = tile,initialTitle:^(Mozilla Firefox)$,initialClass:^firefox$ # All other windows with `firefox` class (file dialogues, etc) should be floating windowrulev2 = float,initialClass:^firefox$,initialTitle:^(?!Mozilla Firefox$)(.*)$ windowrulev2 = size 60% 80%,initialClass:^firefox$,initialTitle:^(?!Mozilla Firefox$)(.*)$ windowrulev2 = suppressevent fullscreen maximize,initialClass:^firefox$,initialTitle:^(?!Mozilla Firefox$)(.*)$ # File browser windowrulev2 = float,class:^(xdg-desktop-portal-gtk)$ windowrulev2 = size 60% 80%,class:^(xdg-desktop-portal-gtk)$ # Resize Telegram window #windowrulev2=maxsize 472 1080,class:org.telegram.desktop,title:Telegram # Make telegram media viewer floating and fullscreen it windowrulev2=float,class:org.telegram.desktop,title:Media viewer windowrulev2=maximize,class:org.telegram.desktop,title:Media viewer # Telegram file picker windowrulev2 = float,initialClass:telegram-desktop,initialTitle:Choose Files windowrulev2 = size 60% 80%,initialClass:telegram-desktop,initialTitle:Choose Files # Pavucontrol windowrulev2=float,class:pavucontrol,title:Volume Control windowrulev2=pin,class:pavucontrol,title:Volume Control windowrulev2=size 40% 40%,class:pavucontrol,title:Volume Control # Polkit authentification #windowrulev2=float,class:org.kde.polkit-kde-authentication-agent-1 #windowrulev2=size 30% 40%,class:org.kde.polkit-kde-authentication-agent-1 # Ripdrag windowrulev2=pin,class:it.catboy.ripdrag # Float foot windows with foot-float class windowrulev2 = float,initialTitle:^foot-float$ windowrulev2 = size 720 504,initialTitle:^foot-float$ # Float imv windows with imv-float title windowrulev2 = float,initialTitle:^imv-float$ # Rules for foot-popup windows # assuming cell_width=9 and cell_height=21, 80 cells wide and 24 cells tall windowrulev2 = float,initialClass:^foot-popup$ windowrulev2 = center 1,initialClass:^foot-popup$ windowrulev2 = size 720 504,initialClass:^foot-popup$ windowrulev2 = pin,initialClass:^foot-popup$ windowrulev2 = stayfocused,initialClass:^foot-popup$ # Fat borders on floating windows windowrulev2 = bordersize 2,floating:1 windowrulev2 = center 1,floating:1 Config File: /home/heather/.config/hypr/environment.conf: Read Succeeded # Environment variables # Use AMD integrated GPU env = WLR_DRM_DEVICES,/dev/dri/by-name/amdgpu-card # Disable GTK accessibility bus env = GTK_A11Y,none env = NO_AT_BRIDGE,1 # Firefox settings env = MOZ_DISABLE_RDD_SANDBOX,1 # hwaccel refuses to work without this env = MOZ_DRM_DEVICE,/dev/dri/by-name/amdgpu-render # Wayland in QT apps env = QT_QPA_PLATFORM,wayland env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 # Nvidia, FUCK YOU env = VDPAU_DRIVER,radeonsi env = LIBVA_DRIVER_NAME,radeonsi # Nvidia cache directory (prevent creating ~/.nv) env = __GL_SHADER_DISK_CACHE_PATH,/home/heather/.cache/nv/ env = CUDA_CACHE_PATH,/home/heather/.cache/nv/ # npm cache directory env = npm_config_cache,/home/heather/.cache/npm # move .cargo out of ~ env = CARGO_HOME,/home/heather/.cache/cargo # move go out of ~ env = GOPATH,/home/heather/.cache/go # GTK2 config location env = GTK2_RC_FILES,/home/heather/.config/gtk-2.0/gtkrc # GTK theme #env = GTK_THEME,Adwaita:dark # Bash startup file for non-interactive shells env = BASH_ENV,/home/heather/.config/bash/non-interactive.sh # XDG user dirs env = XDG_CONFIG_HOME,/home/heather/.config/ env = XDG_DATA_HOME,/home/heather/.local/share/ env = XDG_STATE_HOME,/home/heather/.local/state/ env = XDG_CACHE_HOME,/home/heather/.cache/ Config File: /home/heather/.config/hypr/autostart.conf: Read Succeeded # Systemd services inherit hyprland environment exec-once = systemctl --user import-environment # Pipewire exec-once = systemctl --user restart pipewire.service exec-once = systemctl --user restart pipewire-pulse.service exec-once = systemctl --user restart wireplumber.service # Apps exec-once = systemctl --user restart hypridle.service exec-once = systemctl --user restart hyprpaper.service exec-once = systemctl --user restart dunst.service exec-once = systemctl --user restart ags.service # My scripts exec-once = systemctl --user restart cliphist.service exec-once = systemctl --user restart capslock-mic-indicator.service exec-once = systemctl --user restart profile-notify.service exec-once = systemctl --user restart foot-popup-server.service # Oneshot cmds exec-once = hyprctl setcursor Adwaita 20 exec-once = bash -c "while read -r dev; do hyprctl switchxkblayout $dev 0; done < <(hyprctl devices -j | jq -r '.keyboards[] | .name')" exec-once = foot -- tmux new-session ~/.config/scripts/tmux-first-session-init.sh ======Config-End======== ```

Bug or Regression?

Regression

Description

After updating to the latest commit, screenshare in discord is broken, resulting in black screen. I can reproduce this in both vesktop and discord inside firefox. Screenshare does, however, work in telegram desktop. OBS screen recording also works, but sometimes I need to select my monitor several times for it to work.

How to reproduce

  1. Open vesktop or browser version of discord inside firefox
  2. Join a channel and initiate screenshare
  3. Select any window or whole screen (it doesn't matter)
  4. Observe black screen being shared instead of your screen

Crash reports, logs, images, videos

vesktop logs:

[107768:0608/202553.873246:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 1 times!
[107768:0608/202555.164415:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 2 times!
[107734:0608/202600.634365:ERROR:egl_dmabuf.cc(608)] Failed to record frame: Error creating EGLImage - EGL_BAD_MATCH
[107734:0608/202600.634420:ERROR:shared_screencast_stream.cc(940)] Dropping DMA-BUF modifier: 144115206334822913 and trying to renegotiate stream parameters
'loop->recurse > 0' failed at ../pipewire/src/pipewire/thread-loop.c:426 pw_thread_loop_wait()
[2024-06-08 20:26:01.704] [venmic] [info] [patchbay] (get) running venmic 3.4.2
[2024-06-08 20:26:01.727] [venmic] [info] [patchbay] (handle) found default metadata: 40
[2024-06-08 20:26:01.727] [venmic] [info] [patchbay] (meta_update) speaker name: "alsa_output.pci-0000_05_00.6.analog-stereo"
[107734:0608/202605.827072:ERROR:egl_dmabuf.cc(608)] Failed to record frame: Error creating EGLImage - EGL_BAD_MATCH
[107734:0608/202605.827134:ERROR:shared_screencast_stream.cc(940)] Dropping DMA-BUF modifier: 144115206334822913 and trying to renegotiate stream parameters
'loop->recurse > 0' failed at ../pipewire/src/pipewire/thread-loop.c:426 pw_thread_loop_wait()

firefox only outputs one line: loop->recurse > 0' failed at ../pipewire/src/pipewire/thread-loop.c:426 pw_thread_loop_wait()

vaxerski commented 2 months ago

discord runs on xwayland and it's never had working screenshare, though? What discord are you using?

heather7283 commented 2 months ago

I am using https://github.com/Vencord/Vesktop. Now that you mention it, I think I forgot to add --ozone-platform="wayland" flag when doing initial testing. With this flag it does run on native wayland.

Screenshare doesn't work on native wayland either, however. I will attach updated logs (with --ozone-platform="wayland" this time) vesktop_log.txt

VDFOREVER commented 2 months ago

In the main branch xdg-desktop-portal-hyprland stopped running

heather7283 commented 2 months ago

I did more testing and I'm pretty sure it's not hyprland issue, as it does not go away when downgrading hyprland or installing stable release. It just happened to align with the time when I rebuilt hyprland (I noticed that there was a mesa update, so maybe that's the issue, but that's unrelated) Closing this, and sorry for wasting your time

s0mebodyhelpme commented 2 months ago

Happening to me on Vesktop on the latest commit, actually. It does not happen with the official release of Hyprland on Arch's official repositories.