Screen sharing under wayland

Has anyone got screensharing working under wayland using pipewire?

As far as I can tell, it should be possible to share the screen from Chrome / Chromium after installing the pipewire package and adding your user to the audio and video groups. Except that Chrom(e|ium) is still using libpipewire0.2 and Groovy only ships with libpipewire0.3.

Bonus points if you’ve made slack work.

"Switch back to Xorg" is not a viable answer here. Various things (notably pen input) don’t work correctly (in my configuration, anyway) in Xorg and are not going to any time soon.

Asked By: Tom

||

Install libpipewire0.2 and enable WebRTC with Pipewire flag in chromium.

Answered By: WaterWastage

You can install this package manually but you will have to check for updates manually here.

First, download the deb file (assuming you are using the amd64 version of Ubuntu):

wget 'http://mirrors.kernel.org/ubuntu/pool/universe/p/pipewire/libpipewire-0.2-1_0.2.7-1_amd64.deb'

Then, install the package:

sudo apt install ./libpipewire-0.2-1_0.2.7-1_amd64.deb

Since libpipewire0.3 uses a totally different set of files, there should be no conflict.

Again, you will have to manually check for updates. The current version is 0.2.7-1. When you see a newer version, just click on "amd64" under "Architecture" and then you can either click on one of the mirrors to download the file or copy the link and paste it into the terminal to use the wget command to use the same method as above. Just make sure to use the correct filename with the apt command so that you don’t install the wrong file (like an older downloaded version).

Finally, there is some additional information on the Archlinux wiki that you may want to check out where they mention that you might have to install xdg-desktop-portal and enable the chromium flag chrome://flags/#enable-webrtc-pipewire-capturer to get it to work.

Answered By: mchid

I should note for those who come after me that this is partly fixed in Ubuntu 21.04, with the following caveats:

  • Enabling WebRTC with pipewire works in Chrome / Chromium. To do so, open chrome://flags/#enable-webrtc-pipewire-capturer in chrome and change "WebRTC PipeWire support" to Enabled
  • Sharing through Slack works if you start Slack with slack --enable-features=WebRTCPipeWireCapturer
  • Sharing through Teams doesn’t work (yet – waiting for the Teams team to update the version of Electron they use)
  • Sharing on multiple monitors appears to do weird things. On my laptop, if try to share one of my external screens which has a different resolution, the other end gets a weird interlace-pattern version of my screen. It looks like pipewire is assuming that the resolution of the image it receives matches the resolution of the "first" screen on the system and messes up the video encoding accordingly.
Answered By: Tom

Arch with Gnome 41.3
Install:

  • libpipewire02
  • xdg-desktop-portal
    Enable chrome flag:
  • chrome://flags/#enable-webrtc-pipewire-capturer
Answered By: Mousam Jha

Managed to make screenshare work everywhere on Ubuntu 22.04 switching graphic driver from the default "X.Org X Server" to proprietary and tested option, in my case, from Nvidia (nvidia-driver-510).

if you are using sway(or antother composer using wlroots) and recent chrome (post 2023)

you have to update xdg-desktop-portal-wlr to version >= 0.7.0

install the dependancies

sudo apt install libpipewire-0.3-dev libinih-dev libgbm-dev
                 libdrm-dev libsystemd-dev scdoc

build it yourself from
https://github.com/emersion/xdg-desktop-portal-wlr/releases

then build

tar xf xdg-desktop-portal-wlr-0.*.tgz
cd xdg-desktop-portal-wlr-0.*
meson build
ninja -C build

and install

sudo ninja -C build install

restart chrome

enjoy screen sharing

ref https://forum.manjaro.org/t/screensharing-stopped-working-after-stable-update-2023-04-11-with-chromium-wayland-pipewire/138687

Answered By: thibault ketterer