hyprwm / xdg-desktop-portal-hyprland

xdg-desktop-portal backend for Hyprland
BSD 3-Clause "New" or "Revised" License
305 stars 48 forks source link

screensharing works, but no windows available in the window selector #16

Closed bklaase closed 1 year ago

bklaase commented 1 year ago

On latest commit: b03b1c2 Hyprland itself is build from git today as well.

Not sure how to debug this one, but sharing entire screens works flawlessly. However on a clean start on the window sharing tab it is empty:

image

When I play arround with restarting xdg-desktop-portal-hyprland.service and xdg-desktop-portal.service after a long raindance it starts working. And keeps working, for multiple sessions. But then on reboot, it's broken again.

Log from xdg-desktop-portal-hyprland.service:
Jan 19 15:57:41 haplo xdg-desktop-portal-hyprland[79468]: 2023/01/19 15:57:41 [ERROR] - wlroots: no output / window found

Log from xdg-desktop-portal.service Jan 19 15:57:27 haplo xdg-desktop-por[81748]: No skeleton to export

bklaase commented 1 year ago

And it works after restarting both services a number of times: image

No clue in the logs. Except I see now that the error I posted is from canceling the dialog, when no windows where present, not from being unable to load any windows, so it's even more useless for debugging.

Any tips on how to provide more information?

vaxerski commented 1 year ago

yeah I have noticed that too, kinda seems like sometimes binding to the foreign_toplevel protocol either fails or doesnt really work. odd.

vaxerski commented 1 year ago

should be fixed with ee73fca9cc6ba126b5555dae44e08704a7e183a7 please verify

bklaase commented 1 year ago

On latest hyprland, and latest xdph. on share coredumps:

Feb 01 20:00:39 oponn2 systemd[527]: xdg-desktop-portal-hyprland.service: Failed with result 'core-dump'.
Feb 01 20:00:39 oponn2 systemd[527]: xdg-desktop-portal-hyprland.service: Main process exited, code=dumped, status=11/SEGV
Feb 01 20:00:39 oponn2 systemd-coredump[60150]: [🡕] Process 60146 (xdg-desktop-por) of user 1000 dumped core.

                                                Stack trace of thread 60146:
                                                #0  0x000055aa9183a6db buildWindowList (xdg-desktop-portal-hyprland + 0xd6db)
                                                #1  0x000055aa9183a861 xdpw_wlr_chooser (xdg-desktop-portal-hyprland + 0xd861)
                                                #2  0x000055aa91835e50 setup_outputs (xdg-desktop-portal-hyprland + 0x8e50)
                                                #3  0x000055aa918367b4 method_screencast_select_sources (xdg-desktop-portal-hyprland + 0x97b4)
                                                #4  0x00007f4e617e19bd n/a (libsystemd.so.0 + 0x329bd)
                                                #5  0x00007f4e617f7c52 n/a (libsystemd.so.0 + 0x48c52)
                                                #6  0x000055aa918331a2 main (xdg-desktop-portal-hyprland + 0x61a2)
                                                #7  0x00007f4e614eb290 n/a (libc.so.6 + 0x23290)
                                                #8  0x00007f4e614eb34a __libc_start_main (libc.so.6 + 0x2334a)
                                                #9  0x000055aa91832905 _start (xdg-desktop-portal-hyprland + 0x5905)

                                                Stack trace of thread 60148:
                                                #0  0x00007f4e6154b4b6 n/a (libc.so.6 + 0x834b6)
                                                #1  0x00007f4e6154dcd0 pthread_cond_wait (libc.so.6 + 0x85cd0)
                                                #2  0x00007f4e5eda450e n/a (crocus_dri.so + 0x10c50e)
                                                #3  0x00007f4e5ed5489c n/a (crocus_dri.so + 0xbc89c)
                                                #4  0x00007f4e5eda443c n/a (crocus_dri.so + 0x10c43c)
                                                #5  0x00007f4e6154e8fd n/a (libc.so.6 + 0x868fd)
                                                #6  0x00007f4e615d0a60 n/a (libc.so.6 + 0x108a60)

                                                Stack trace of thread 60147:
                                                #0  0x00007f4e615d0096 epoll_wait (libc.so.6 + 0x108096)
                                                #1  0x00007f4e618b9789 n/a (libspa-support.so + 0x14789)
                                                #2  0x00007f4e618abb9b n/a (libspa-support.so + 0x6b9b)
                                                #3  0x00007f4e6171f177 n/a (libpipewire-0.3.so.0 + 0x42177)
                                                #4  0x00007f4e6154e8fd n/a (libc.so.6 + 0x868fd)
                                                #5  0x00007f4e615d0a60 n/a (libc.so.6 + 0x108a60)
                                                ELF object binary architecture: AMD x86-64
vaxerski commented 1 year ago

should be fixed in 13db7db849e1e86289b3b0e296d47d08e4a80d56

bklaase commented 1 year ago

crash is gone, but issue persists:

image

vaxerski commented 1 year ago

can you open the picker, close it, and reopen it?

bklaase commented 1 year ago

When I do that, the windows are still not listed.
Tried restarting the service many times, can't get it to show up at all anymore.

vaxerski commented 1 year ago

huh. Odd.

vaxerski commented 1 year ago

it should be fixed with f8cdd28cc83deab6353645d232f031a6c1542543

RubberDuckShobe commented 1 year ago

I'm also still having the same problem, no windows show up in the picker but there's no errors in the log

vaxerski commented 1 year ago

can you verify you're on the latest -git and then show me the debug XDPH logs when you try to screenshare?

launch xdph with -l DEBUG for debug logs.

See my comment here: https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/19#issuecomment-1411800452

RubberDuckShobe commented 1 year ago

I did a clean re-install of the latest -git version with paru, should be all good there. Here are the logs when opening the picker and opening the window list:


2023/02/03 14:58:35 [DEBUG] - config: outputname:  (null)
2023/02/03 14:58:35 [DEBUG] - config: max_fps:  0.000000
2023/02/03 14:58:35 [DEBUG] - config: exec_before:  (null)
2023/02/03 14:58:35 [DEBUG] - config: exec_after:  (null)
2023/02/03 14:58:35 [DEBUG] - config: chooser_cmd: (null)
2023/02/03 14:58:35 [DEBUG] - config: chooser_type: default
2023/02/03 14:58:35 [DEBUG] - config: force_mod_linear: 0
2023/02/03 14:58:35 [DEBUG] - dbus: connected
2023/02/03 14:58:35 [DEBUG] - wlroots: wl_display connected
2023/02/03 14:58:35 [DEBUG] - pipewire: pw_loop created
2023/02/03 14:58:35 [DEBUG] - pipewire: establishing connection to core
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wl_shm  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: |-- registered to interface wl_shm (Version 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wl_drm  (Version: 2)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_linux_dmabuf_v1  (Version: 4)
2023/02/03 14:58:35 [DEBUG] - wlroots: |-- registered to interface zwp_linux_dmabuf_v1 (Version 4)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wl_compositor  (Version: 5)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wl_subcompositor  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wl_data_device_manager  (Version: 3)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwlr_export_dmabuf_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwlr_screencopy_manager_v1  (Version: 3)
2023/02/03 14:58:35 [DEBUG] - wlroots: |-- registered to interface zwlr_screencopy_manager_v1 (Version 3)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwlr_data_control_manager_v1  (Version: 2)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwlr_gamma_control_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_primary_selection_device_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wp_viewporter  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwlr_output_power_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register xdg_wm_base  (Version: 5)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wl_seat  (Version: 8)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wp_presentation  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register org_kde_kwin_idle  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwlr_layer_shell_v1  (Version: 4)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register org_kde_kwin_server_decoration_manager  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zxdg_decoration_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zxdg_output_manager_v1  (Version: 3)
2023/02/03 14:58:35 [DEBUG] - wlroots: |-- registered to interface zxdg_output_manager_v1 (Version 3)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwlr_output_manager_v1  (Version: 4)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwlr_input_inhibit_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_keyboard_shortcuts_inhibit_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zext_workspace_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_pointer_constraints_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_relative_pointer_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_virtual_keyboard_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwlr_virtual_pointer_manager_v1  (Version: 2)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwlr_foreign_toplevel_manager_v1  (Version: 3)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wp_drm_lease_device_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_tablet_manager_v2  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_idle_inhibit_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zxdg_exporter_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zxdg_importer_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zxdg_exporter_v2  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zxdg_importer_v2  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_pointer_gestures_v1  (Version: 3)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_text_input_manager_v3  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register zwp_input_method_manager_v2  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register xdg_activation_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register xwayland_shell_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register hyprland_toplevel_export_manager_v1  (Version: 2)
2023/02/03 14:58:35 [DEBUG] - hyprland: |-- registered to interface hyprland_toplevel_export_manager_v1 (Version 2)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wp_fractional_scale_manager_v1  (Version: 1)
2023/02/03 14:58:35 [DEBUG] - wlroots: interface to register wl_output  (Version: 4)
2023/02/03 14:58:35 [DEBUG] - wlroots: |-- registered to interface wl_output (Version 1)
2023/02/03 14:58:35 [DEBUG] - wayland: registry listeners run
2023/02/03 14:58:35 [DEBUG] - wlroots: linux_dmabuf_feedback_handle_main_device called
2023/02/03 14:58:35 [INFO] - xdpw: Using render node /dev/dri/renderD128
2023/02/03 14:58:35 [DEBUG] - wlroots: linux_dmabuf_feedback_format_table called
2023/02/03 14:58:35 [DEBUG] - wlroots: linux_dmabuf_feedback_tranche_target_devices called
2023/02/03 14:58:35 [DEBUG] - wlroots: linux_dmabuf_feedback_tranche_flags called
2023/02/03 14:58:35 [DEBUG] - wlroots: linux_dmabuf_feedback_tranche_formats called
2023/02/03 14:58:35 [DEBUG] - wlroots: linux_dmabuf_feedback_tranche_done called
2023/02/03 14:58:35 [DEBUG] - wlroots: linux_dmabuf_feedback_handle_done called
2023/02/03 14:58:35 [DEBUG] - wayland: xdg output listeners run
2023/02/03 15:00:39 [INFO] - dbus: create session method invoked
2023/02/03 15:00:39 [INFO] - dbus: request_handle: /org/freedesktop/portal/desktop/request/1_456/obs1
2023/02/03 15:00:39 [INFO] - dbus: session_handle: /org/freedesktop/portal/desktop/session/1_456/obs1
2023/02/03 15:00:39 [INFO] - dbus: app_id: 
2023/02/03 15:00:39 [INFO] - dbus: select sources method invoked
2023/02/03 15:00:39 [INFO] - dbus: request_handle: /org/freedesktop/portal/desktop/request/1_456/obs2
2023/02/03 15:00:39 [INFO] - dbus: session_handle: /org/freedesktop/portal/desktop/session/1_456/obs1
2023/02/03 15:00:39 [INFO] - dbus: app_id: 
2023/02/03 15:00:39 [INFO] - dbus: option types:1
2023/02/03 15:00:39 [INFO] - dbus: option multiple: 0
2023/02/03 15:00:39 [INFO] - dbus: option cursor_mode:2
2023/02/03 15:00:39 [WARN] - dbus: unknown option persist_mode
2023/02/03 15:00:39 [DEBUG] - dbus: select sources: found matching session /org/freedesktop/portal/desktop/session/1_456/obs1
2023/02/03 15:00:39 [INFO] - wlroots: capturable output: Samsung Electric Company model: LC24RG50: id: 46 name: HDMI-A-1
2023/02/03 15:00:39 [DEBUG] - Screencast: Picker: Running command "WAYLAND_DISPLAY=wayland-1 QT_QPA_PLATFORM="wayland" XCURSOR_SIZE=24 HYPRLAND_INSTANCE_SIGNATURE=32d56fec977b109aeecb06288a1b45cfe6b83117_1675424191 XDPH_WINDOW_SHARING_LIST="" hyprland-share-picker"```
vaxerski commented 1 year ago

patch.txt

what about with this patch?

RubberDuckShobe commented 1 year ago

After applying the patch and restarting the desktop portals as suggested in your comment, window sharing works!

vaxerski commented 1 year ago

patch pushed. Waiting on the reporter.

bklaase commented 1 year ago

Yes it works! also with the systemd unit! Thanks for figuring it out!

bklaase commented 1 year ago

damnit, restarting the unit (had to try) breaks it again.
testing

bklaase commented 1 year ago

Interesting that even when it doesn't work, debug output finds clients:

2023/02/03 19:14:17 [INFO] - wlroots: capturable output: LG Electronics model: LG HDR 4K: id: 46 name: HDMI-A-1
2023/02/03 19:14:17 [DEBUG] - Screencast: Picker: Running command "WAYLAND_DISPLAY=wayland-1 QT_QPA_PLATFORM="wayland" XCURSOR_SIZE=24 HYPRLAND_INSTANCE_SIGNATURE=445f8c71c50ed9cdd72299b2ddf696b7baeb1b03_1675438457 XDPH_WINDOW_SHARING_LIST="2981579680[HC  ]firefox[HT ]Meet - vcm-ztvi-gye — Mozilla Firefox[HE   ]2981579344[HC  ]Alacritty[HT   ]/usr/lib/xdg-desktop-portal[HE     ]2981576880[HC  ]Alacritty[HT   ]/usr/libexec/xdg-desktop-portal-hyprland -l DEBUG[HE       ]2981571072[HC  ]Alacritty[HT   ]zsh ~/dotfiles[HE  ]" hyprland-share-picker"
2023/02/03 19:14:21 [DEBUG] - Screencast: Invalid result from hyprland-share-picker:

(last line is from canceling)

vaxerski commented 1 year ago

should be fixed! 8707444cf572a489e66f8f8b07ec540e130eae16

bklaase commented 1 year ago

No, still (sometimes) broken; with this output:

2023/02/03 19:45:58 [INFO] - dbus: option multiple: 0
2023/02/03 19:45:58 [DEBUG] - dbus: select sources: found matching session /org/freedesktop/portal/desktop/session/1_30/webrtc_session2105407418
2023/02/03 19:45:58 [INFO] - wlroots: capturable output: LG Electronics model: LG HDR 4K: id: 46 name: HDMI-A-1
2023/02/03 19:45:58 [DEBUG] - Screencast: Picker: Running command "WAYLAND_DISPLAY=wayland-1 QT_QPA_PLATFORM="wayland" XCURSOR_SIZE=24 HYPRLAND_INSTANCE_SIGNATURE=445f8c71c50ed9cdd72299b2ddf696b7baeb1b03_1675438457 XDPH_WINDOW_SHARING_LIST="4075162528[HC>]firefox[HT>]Meet - vcm-ztvi-gye — Mozilla Firefox[HE>]4075162192[HC>]Alacritty[HT>]zsh ~[HE>]4075159728[HC>]Alacritty[HT>]/usr/libexec/xdg-desktop-portal-hyprland -l DEBUG[HE>]4075153920[HC>]Alacritty[HT>]zsh ~/dotfiles[HE>]" hyprland-share-picker"
2023/02/03 19:46:06 [DEBUG] - Screencast: Invalid result from hyprland-share-picker:
bklaase commented 1 year ago

It's weird, it seems better than it was. Less kill/retry rounds before it works again. Maybe just my imagination though

vaxerski commented 1 year ago

fixed above in 27118ee3d71bc31a37b1bbfa6531e59932f70682

bklaase commented 1 year ago

That did it!
restarted it over 10 times, and keeps working!