Aru*_*aja 189

Ubuntu 22.04 的问题在于它现在默认使用名为wayland的显示功能,而在 21.04 之前的版本中 Ubuntu 默认使用 xorg 作为其显示服务器。Wayland 默认情况下不支持屏幕共享(至少到目前为止!)。

要检查您的 Ubuntu 使用的是哪个显示系统,请输入此命令

echo $XDG_SESSION_TYPE
Run Code Online (Sandbox Code Playgroud)

如果上述命令输出wayland,则您的系统正在使用 wayland。

为了使用屏幕共享,我们必须禁用 wayland 并启用 xorg (x11)。去做这个,

请转到此文件

sudo nano /etc/gdm3/custom.conf
Run Code Online (Sandbox Code Playgroud)

取消注释该行。

WaylandEnable=false
Run Code Online (Sandbox Code Playgroud)

重新启动您的系统。

瞧!您可以共享您的屏幕。您可以通过重新输入此命令来确认这一点。

echo $XDG_SESSION_TYPE
Run Code Online (Sandbox Code Playgroud)

现在它应该显示x11

如果x11尚未显示,请运行以下命令:

sudo systemctl restart gdm
Run Code Online (Sandbox Code Playgroud)

  • 这让您可以使用三十年前的技术,这是一种更现代的解决方案:请参阅[下一个答案](https://askubuntu.com/a/1421314/139044)(启用chrome pipeline支持) (15认同)
  • Wayland 怎么会在 LTS 中出现这么大的问题呢? (14认同)
  • 救星,谢谢你。自从升级到 22.04 以来我就遇到了这个问题,我仍然对这个问题几乎没有任何赞成票感到震惊。 (8认同)
  • 使用 Ubuntu 的最低资格应该是 stackexchange 用户,哈哈。这是非常糟糕的做法,他们会破坏稳定升级中的功能。 (8认同)
  • 使用 DisplayLink 的人可能会因为 x11 兼容性而遇到问题(例如,通过扩展坞使用 2 个显示器) (5认同)
  • 我认为这个答案的作者应该**警告**人们降级到 Xorg 可能会损害其他问题,例如[本例](https://askubuntu.com/q/1414283/980324)。 (3认同)
  • @gordon_freeman 在登录屏幕中选择用户后,右下角会出现一个类似齿轮的按钮。单击它,您可以选择“Ubuntu on Xorg”与“Ubuntu”(默认为 Wayland)。它会记住您的用户的此首选项。 (3认同)
  • 然后我的第二台显示器在重新启动后变成黑屏...... (2认同)
  • x11 的问题我有:触摸屏无法正常工作,任何对话框窗口都没有焦点 -> 这非常烦人。这不应该被接受的答案。 (2认同)

Jat*_*kar 58

仅适用于网络浏览器

转到chrome://flags/#enable-webrtc-pipewire-capturer使用浏览器的地址栏。

在此输入图像描述

单击下拉菜单,然后单击启用。

在此输入图像描述

最后重启浏览器

这将使浏览器提示屏幕共享访问

  • 这对我来说就像一个魅力。 (4认同)
  • 它对我来说非常有效,不需要切换到 Xorg。 (4认同)
  • 其实不需要重启系统,只需重启chrome即可。 (4认同)
  • 这对我使用 Chrome、Teams 和 Ubuntu 22.04 以及 Wayland 不起作用,谁知道还有哪些其他组件与此相关 (2认同)
  • 这在 Brave 浏览器中也对我有用。 (2认同)

kub*_*zyk 12

对于4.33.90 版本之前的Slack应用内屏幕录制和屏幕共享(整个视频捕获在 4.33.90 左右损坏,因此我无法测试屏幕录制):

  1. 完全退出 Slack 应用程序(Quit从托盘图标使用)。
  2. 在终端中:
slack --enable-features=WebRTCPipeWireCapturer
Run Code Online (Sandbox Code Playgroud)
  1. 看看是否有效。
  2. (可选)在重新启动后保留更改:
gedit admin:///usr/share/applications/slack.desktop
Run Code Online (Sandbox Code Playgroud)

在文本编辑器中找到一行:

Exec=/usr/bin/slack %U
Run Code Online (Sandbox Code Playgroud)

将行改为:

Exec=/usr/bin/slack --enable-features=WebRTCPipeWireCapturer %U
Run Code Online (Sandbox Code Playgroud)

就是这样。在 Ubuntu 22.04LTS 上测试并且:

Exec=/usr/bin/slack %U
Run Code Online (Sandbox Code Playgroud)

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


小智 8

由于 Wayland 默认不支持屏幕共享,因此 Chrome 浏览器已经有一种实验性的方式。

首先,您需要从 pipeline 媒体会话导出元数据 API。

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
Run Code Online (Sandbox Code Playgroud)

在 chrome 实验性功能中启用 WebRTC PipeWire 支持

chrome://flags/#enable-webrtc-pipewire-capturer
Run Code Online (Sandbox Code Playgroud)

重新启动浏览器,现在您可以共享屏幕了。


Fra*_*lvi 5

我尝试了该global.context.unsafe_mode=true解决方案,但 Google Meet 仍然显示黑屏,因此没有进一步测试。

对我有用的是切换到 X11/Xorg,我是这样做的

  • 注销
  • 单击右下角的齿轮图标
  • 选择“Xorg 上的 Ubuntu”
  • 重新登录