--- Begin Message ---
Subject: |
[PATCH 0/7] Improve screen sharing support under Wayland |
Date: |
Tue, 14 Dec 2021 22:45:02 +0100 |
Hello,
This patchset updates and improves various packages related to screen
sharing/screeshotting on Wayland, and especially wlroots-based
compositors.
I can get screensharing working in icecat on sway by manually starting
pipewire then wireplumber (and then xdg-desktop-portal-wlr followed by
xdg-desktop-portal if they're not installed in your profile, otherwise
your user DBus session will launch them automatically), and starting
icecat with
`LD_LIBRARY_PATH="$(./pre-inst-env guix build
pipewire)/lib:$LD_LIBRARY_PATH" icecat`
since the pipewire library is dlopened by libwebrtc rather than
statically or dynamically linked. We could possibly add this to the
icecat package, as it has a wrapper doing a similar thing for other
libraries.
Another way to test screensharing without icecat would be to use this
python script [1], using `guix shell python python-pygobject
gst-plugins-bad pipewire python-dbus -- python3 xdp-screen-cast.py`.
I also took the liberty to patch xdg-desktop-portal-wlr's
screenshotting process, as it simply execl'd to slurp and grim. Along
with an update to flameshot, I can use the latter properly on sway as
well.
Best,
Josselin
[1] https://gitlab.gnome.org/-/snippets/19
Josselin Poiret (7):
gnu: pipewire-0.3: Use new input style
gnu: pipewire-0.3: Update to 0.3.41
gnu: Add wireplumber
gnu: xdg-desktop-portal-wlr: Update to 0.5.0
gnu: xdg-desktop-portal-wlr: Use new input style
gnu: xdg-desktop-portal-wlr: Add binary dependencies
gnu: flameshot: Update to 0.10.2
gnu/local.mk | 1 +
gnu/packages/freedesktop.scm | 38 ++++++++++----
gnu/packages/image.scm | 4 +-
gnu/packages/linux.scm | 52 +++++++++++++++----
...g-desktop-portal-wlr-harcoded-length.patch | 28 ++++++++++
5 files changed, 100 insertions(+), 23 deletions(-)
create mode 100644
gnu/packages/patches/xdg-desktop-portal-wlr-harcoded-length.patch
--
2.34.0
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#52492: [PATCH 0/7] Improve screen sharing support under Wayland |
Date: |
Sun, 19 Dec 2021 13:22:22 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Hey Josselin,
Thanks for working on that. I fixed a few minor details and pushed the
series.
> I can get screensharing working in icecat on sway by manually starting
> pipewire then wireplumber (and then xdg-desktop-portal-wlr followed by
> xdg-desktop-portal if they're not installed in your profile, otherwise
> your user DBus session will launch them automatically), and starting
> icecat with
As discussed on #guix, we may need to find a way to start those services
automatically.
> since the pipewire library is dlopened by libwebrtc rather than
> statically or dynamically linked. We could possibly add this to the
> icecat package, as it has a wrapper doing a similar thing for other
> libraries.
Seems fair.
I also tried to run obs, this way:
--8<---------------cut here---------------start------------->8---
QT_QPA_PLATFORM=wayland obs
--8<---------------cut here---------------end--------------->8---
was prompted for a screen/window to capture using pipewire, but then I
have the following error, does that ring a bell?
--8<---------------cut here---------------start------------->8---
info: ------------------------------------------------
info: Loaded scenes:
info: - scene 'Scene':
info: - source: 'Window Capture (PipeWire)' (pipewire-window-capture-source)
info: ------------------------------------------------
qt.qpa.wayland: Wayland does not support QWindow::requestActivate()
info: [pipewire] available cursor modes:
info: [pipewire] - Metadata
info: [pipewire] - Always visible
info: [pipewire] - Hidden
Attempted path: share/obs/obs-studio/images/overflow.png
Attempted path:
/gnu/store/1fp8wl9y2i72ld59d1spw85xvw9l88ws-obs-27.0.1/share/obs/obs-studio/images/overflow.png
info: [pipewire] screencast session created
info: [pipewire] asking for window…
info: adding 42 milliseconds of audio buffering, total audio buffering is now
42 milliseconds (source: Mic/Aux)
warning: [pipewire] Failed to start screencast, denied or cancelled by user
info: PipeWire initialized (sender name: 1_1734)
info: User added source 'Screen Capture (PipeWire)'
(pipewire-desktop-capture-source) to scene 'Scene'
info: [pipewire] available cursor modes:
info: [pipewire] - Metadata
info: [pipewire] - Always visible
info: [pipewire] - Hidden
info: [pipewire] screencast session created
info: [pipewire] asking for desktop…
warning: [pipewire] Failed to start screencast, denied or cancelled by user
^Cinfo: ==== Shutting down ==================================================
--8<---------------cut here---------------end--------------->8---
Thanks,
Mathieu
--- End Message ---