179

Ubuntu 22.04 has a bug which is we can't share our screen on any platforms.

6
  • What does it look like when you can't share your screen? For me, on Ubuntu 22.04 LTS, I have the share screen button, and can click through fine to share a screen, and it switches as if it's about to share screen on the view for others. But it then doesn't share my screen, just the Teams view of my user icon. If, however, I leave the meeting and come back once or twice or sometimes 3-5 times, the screen share starts working. I'm using X11 by default, not wayland, because my laptop has an Nvidia GPU. Commented Sep 22, 2023 at 17:00
  • @CivMeierFan that's exactly what happens when I try to share using Zoom web browser. May I ask how do you fix it? Commented May 10 at 18:27
  • @intrigued_66 the issue for me was resolved by IT, somewhere in the network infrastructure. Last I heard, IT chalked it up to not enough network bandwidth for all the users at our site. I guess it could have been that, but why then once I started sharing the screen, I had no issues? IMHO it was probably instead the firewall blocking / throttling / timing out some URLs that Teams sharing uses under the hood. Which I suppose could be caused by limited bandwidth. Or, a Teams/OS upgrade could have fixed it. Commented May 10 at 21:10
  • @intrigued_66 I would try using iftop or something similar to watch what URLs Zoom is trying to talk to, and see if any of the speeds to them look really slow. Then talk to your network admin, who might be yourself looking at your router config. Commented May 10 at 21:18
  • @intrigued_66 One more note -- telltale sign for us that it was a network issue was that Windows Teams users started having the same problem, too. Commented May 10 at 21:20

13 Answers 13

210

The issue with Ubuntu 22.04 is that it now uses a display feature called wayland by default, while in versions prior to 21.04 Ubuntu defaulted to using xorg as its display server. Wayland does not support screen sharing by default (until now, at least!).

To check which display system your Ubuntu is using, please enter this command

echo $XDG_SESSION_TYPE

If the above command outputs wayland, your system is using wayland.

In order to use screen sharing, we have to disable wayland and enable xorg (x11). To do this,

Please go to this file

sudo nano /etc/gdm3/custom.conf

Uncomment this line.

WaylandEnable=false

Reboot your system.

Voila! You can share your screen. You can confirm this by re-entering this command.

echo $XDG_SESSION_TYPE

Now it should display x11.

If x11 is not shown yet, run the command below:

sudo systemctl restart gdm
21
  • 9
    Lifesaver, thank you. I've had this issue ever since upgrading to 22.04, I'm still shocked this question barely has any upvotes. Commented May 12, 2022 at 6:43
  • 5
    people using DisplayLink could have problems because of x11 compatibility (using 2 displays through a docking station, for example)
    – rogelio
    Commented Jun 9, 2022 at 20:45
  • 10
    The minimum qualification for using Ubuntu should be to be a stackexchange user lol. This is really bad practice they break functionality in a stable upgrade.
    – ahron
    Commented Aug 16, 2022 at 11:32
  • 15
    this gets you working with thirty year old tech, a more modern solution: see next answer (enabling chrome pipewire support)
    – bernstein
    Commented Aug 23, 2022 at 16:46
  • 19
    How could Wayland be shipped in a LTS with such a big problem?
    – nulll
    Commented Sep 15, 2022 at 13:53
60

Only works for web browser

Go to chrome://flags/#enable-webrtc-pipewire-capturer using the address bar of your browser.

enter image description here

Click the drop down menu, and click Enabled.

enter image description here

Finally Restart the browser

This will enable the browser to prompt screenshare access

10
  • 4
    This worked like a charm for me.
    – MCMZL
    Commented Aug 5, 2022 at 8:57
  • 4
    It worked perfectly for me and without the need of switching to Xorg. Commented Aug 24, 2022 at 4:32
  • 4
    Actually, it doesn't need to reboot the system, just restart the chrome. Commented Sep 9, 2022 at 1:56
  • 3
    This doesn't work for me using Chrome, Teams and Ubuntu 22.04 with Wayland and who know what other components are relevant to this
    – Hakaishin
    Commented Sep 28, 2022 at 9:47
  • 3
    The chrome://flags/#enable-webrtc-pipewire-capturer option is no longer there in latest Chrome ...
    – matanox
    Commented Feb 3 at 11:41
12

For Slack in-app screen recording and screen sharing before version 4.33.90 (the entire video capture got broken in or around 4.33.90, so I'm unable to test screen recording):

  1. Quit the Slack app completely (use Quit from the tray icon).
  2. In the terminal:
slack --enable-features=WebRTCPipeWireCapturer
  1. See if it works.
  2. (Optional) Persist the change across reboots:
gedit admin:///usr/share/applications/slack.desktop

In text editor find a line that says:

Exec=/usr/bin/slack %U

Change the line to say:

Exec=/usr/bin/slack --enable-features=WebRTCPipeWireCapturer %U

That's it. Tested on Ubuntu 22.04LTS and:

$ slack --version
4.27.156

$ echo $XDG_SESSION_TYPE
wayland

$ dpkg -l | grep -i pipewire
ii  libpipewire-0.3-0:amd64                    0.3.48-1ubuntu1                         amd64        libraries for the PipeWire multimedia server
ii  libpipewire-0.3-common                     0.3.48-1ubuntu1                         all          libraries for the PipeWire multimedia server - common files
ii  libpipewire-0.3-modules:amd64              0.3.48-1ubuntu1                         amd64        libraries for the PipeWire multimedia server - modules
ii  libspa-0.2-modules:amd64                   0.3.48-1ubuntu1                         amd64        libraries for the PipeWire multimedia server Simple Plugin API - modules
ii  pipewire:amd64                             0.3.48-1ubuntu1                         amd64        audio and video processing engine multimedia server
ii  pipewire-bin                               0.3.48-1ubuntu1                         amd64        PipeWire multimedia server - programs
ii  pipewire-media-session                     0.4.1-2ubuntu1                          amd64        example session manager for PipeWire

Source: https://github.com/flathub/com.slack.Slack/issues/101#issuecomment-808430530

2
  • Slack (Snap 4.33.90 64-bit) appears to completely ignore this option. When I dump the logs for troubleshooting it does not show it as something that got configured. By setting the pipewire flag in chrome (above), I can share screens when I run Slack in a Chrome tab. It is just the electron app that doesn't work. Also, FWIW, the snap version of slack complains vociferously if you try to edit the desktop file (which is in the /opt/snap folder) even as root.
    – rotten
    Commented Sep 7, 2023 at 20:42
  • @rotten Yeah, thanks. Previously video capture didn't work, whereas now on 4.33.90 (electron non-snap) the whole process segfaults with a sole syslog line [0908/160234.011451:ERROR:elf_dynamic_array_reader.h(64)] tag not found which comes from crashpad (so it's probably a bug in crash handling, unrelated to the root cause).
    – kubanczyk
    Commented Sep 8, 2023 at 14:13
9

Since Wayland is not supporting screen share by default, there is already an experimental way with chrome browser.

First you need to export the metadata API from the pipewire media sessions.

sudo mkdir -p /etc/pipewire/media-session.d/
sudo cp /usr/share/pipewire/media-session.d/media-session.conf /etc/pipewire/media-session.d/
sudo sed -i 's/#metadata/metadata/g' /etc/pipewire/media-session.d/media-session.conf

At chrome experimental features enable the WebRTC PipeWire support

chrome://flags/#enable-webrtc-pipewire-capturer

Restart the browser and now you can share your screen.

2
  • Is this still a valid patch these days?
    – matanox
    Commented Feb 3 at 11:58
  • @matanster No, this experimental flag doesn’t exist anymore.
    – bfontaine
    Commented Feb 21 at 8:43
5

As mentioned this is a Security Feature of Wayland. You can either use XOrg or disable the save mode of Wayland by doing:

  1. Press Alt + F2
  2. Type lg and press enter
  3. Disable save mode by typing global.context.unsafe_mode=true and enter

This will work till you reboot/log out. I wrote a small Gnome Extension which does can disable the safe mode on demand. See https://github.com/julianpollmann/zoom-wayland-gnome-extension

8
  • that did not work for me
    – wranvaud
    Commented Jan 11, 2023 at 18:57
  • alt-f2 brings up the headphones volume control for me. lg as a command doesn't exist.
    – rotten
    Commented Sep 7, 2023 at 20:44
  • @polyte, this works for me. Useful since sharing appears broken again in 5.15.12.7665. NOTE: It appears your plugin simply logical NOTs the current value for global.context.unsafe_mode rather than setting it to true when the switch is on and false when it's off. This means if you previously manually set it to true before installing your plugin your state will be backwards (as I did). I suggest having the switch determine if you set it to true or false in the plugin to avoid this. I created a PR to change this (warning, untested :)).
    – stuckj
    Commented Sep 13, 2023 at 16:10
  • @rotten you might need to press a function (fn) key. Depends on your (laptop) keyboard. See wiki.gnome.org/Projects/GnomeShell/CheatSheet#Developer_tools
    – polyte
    Commented Sep 15, 2023 at 16:37
  • That does not work as a shortcut to open a text window on my laptop. alt/control/function or any combination of them. It is ok, I always have a dozen or more windows open already. The "lg" command does not exist on my machine either. It must be a separate package that needs to be installed.
    – rotten
    Commented Sep 18, 2023 at 22:16
5

I tried the global.context.unsafe_mode=true solution, but Google Meet was still showing black screens, so didn't test it any further.

What worked for me was switching to X11/Xorg, which I did by

  • logging off
  • clicking gear icon at bottom right
  • selecting "Ubuntu on Xorg"
  • logging back in
1
  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented May 31, 2022 at 19:49
4

I changed graphic drivers (in additional drivers menu) from xorg-server to Nvidia proprietary. It worked for me.

1
  • Replacing the Nvidia Nouveau driver with the proprietary one did the trick.
    – Sergey
    Commented May 17, 2023 at 15:32
4

I have a computer with a Nvidia EVGA Geforce GTX - 1660 Super graphic card with a Ubuntu 22.04.3 LTS OS and none of the above answers worked for my case. Neither the chrome flag, neither dismissing the safe mode of wayland and neither changing to use xorg on logon screen.

What did the job was going into Additional Drivers then select the option Using NVIDIA driver metapackage from nvidia-driver-535 (proprietary, tested) amongst many others (this one did the job at first so I didn't change anymore). Previously the selected one was the Using X.Org X server -- Nouveau display driver from xserver-xorg-video-nouveau (open source)

Hope it helps someone.

1
  • 1
    Same here. I had to run apt upgrades, then try and switch to this driver a couple of times before it would 'take' without an error. Then a restart was necessary before screen-sharing actually worked.
    – twhitney
    Commented Feb 6 at 20:21
1

Now the screen sharing in Wayland is available with the zoom client for Ubuntu.

https://support.zoom.us/hc/en-us/articles/205759689#:~:text=Resolved%20an%20issue%20regarding%20sharing%20content%20on%20Gnome%2041%20with%20Wayland%C2%A0

Check the release notes in 5.11.0 (3540) release.

3
  • Still not working. I'm on 5.12 and it is still broken. Changing to x11 was the only thing that worked. Commented Oct 4, 2022 at 22:38
  • I'm on 5.16 and it's still broken. Commented Mar 11 at 9:10
  • This is a....... joke. And the Linux community wonders why people pay to use Windows? Commented May 10 at 18:29
1

After struggling for days I found the solution from this thread only

I changed graphic drivers (in additional drivers menu) from xorg-server to Nvidia proprietary. It worked for me.

But there are many! So the following one worked for me (just so you guys save time and know this actually works).

And doing the wayland method used to break my display and turn it into -ve colours.

Using NVIDIA Server Driver metapackage from nvidia-driver-535-server (proprietary)

1

(On Ubuntu 22.04.3 LTS)

Deactivating wayland as the first answer suggests worked the best but you have to give up the much better touchpad uses.

Alternatively I found a solution here that works on the browser version, at least for Zoom and Google Meet. It requires installing the packages xdg-desktop-portal-gnome and gnome-remote-desktop and then rebooting:

sudo apt install xdg-desktop-portal-gnome gnome-remote-desktop
1
  • This worked for me like a charm. Thanks! Commented May 21 at 13:32
0

While reverting back to x11 did work for me, I wanted to find an alternative that allowed me to continue using Wayland. What ended up working was uninstalling the snap version of zoom and installing the .deb downloaded from Zoom's website

-1

I was resolved by going to chrome://flags/#enable-webrtc-pipewire-capturer and changing the value from Default to Enabled.

then

Search for the file.conf in /etc/gdm3/ in my case, Ubuntu 20, it's custom.conf

sudo nano /etc/gdm3/custom.conf

uncomment the line

#WaylandEnable=false to be WaylandEnable=false

then reboot

"uncommenting that line will use the Xorg display manager instead of Wayland "

3
  • Please do not copy and paste identical answers to different questions on AU. The system has detected this exact answer given to 3 slightly different questions.
    – andrew.46
    Commented Sep 19, 2022 at 23:16
  • Please do not copy and paste identical answers to different questions on AU. The system has detected this exact answer given to 3 slightly different questions.
    – andrew.46
    Commented Sep 19, 2022 at 23:16
  • This answer mixes two conflicting answers. Do not use it.
    – Jivan Pal
    Commented Apr 25, 2023 at 17:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .