独立窗口管理器下无法录屏问题处理
我使用Labwc这个Wayland窗口管理器很久了,一开始在公司电脑Ubuntu环境下使用,后来自己组装了一个迷你主机,换成在Arch下使用。
整体来说,差不多打造了个适合自己的桌面环境,比直接使用Gnome、KDE等庞然大物可控多了。比如按 Win + Enter
键随时弹出终端,Win + H
隐藏,简直不要太爽,效率直接飙升。
各个桌面核心组件都由自己用心挑选,配置文件 github dotfiles 管理,电脑坏了,随时重装也能重新回到熟悉环境。
迷你主机是AMD的核显,打 Dota2,CS2 也没有问题。
一切看起来都很美好,但是.....
有一天晚上,我要和公司合作方解决一个问题时,对方要看我的终端实时操作,需要使用飞书下的屏幕共享功能。开启共享后麻烦出现了,对方反馈只能看到黑屏。
事发突然,我也没想到会有这一出。从没有测试过 Labwc + Arch
环境下的屏幕共享功能。简直当头一棒,赚钱恰饭可不能耽误,最后改用手机后置摄像头录屏幕解决, 不是摄像头对不准,就是光线太暗,过程可以说痛苦不堪。
再后来有个周末,我玩 Dota2 的时候,偶遇火枪买鞋后被系统自动卖掉了的 BUG,当时下载比赛录像录屏分享,打开 OBS,发现录屏也是不能使用的。
可见屏幕实时共享,或者说直播需求还是有的,这个问题必须解决。当你在网上搜索的时候,相关资料较少,甚至搞不清楚到底是哪个组件出问题了。
问题很小众:
- Linux 用户少;
- 使用独立窗口管理器的 Linux用户更少;
- 满足上述两个条件,同时还有屏幕共享需求的,少至更少。
1. 解决方法
解决起来很简单,安装 xdg-desktop-portal
相关包:
1sudo pacman -S xdg-desktop-portal
2sudo pacman -S xdg-desktop-portal-wlr
xdg-desktop-portal-wlr 是 xdg-desktop-portal 的一种后端实现,当你使用成熟的桌面环境Gnome/KED时,xdg-desktop-portal-gnome、xdg-desktop-portal-kde早就自动帮你预装好了。
因为Labwc是独立的窗口管理器,默认并不会包含xdg-desktop-portal-wlr,所以会黑屏或者无法直播。Wayland 环境下的屏幕共享一般通过Pipewire,调用 xdg-desktop-portal,再由其调用当前DE环境的 xdg-desktop-portal后端,完成整个链路。不同桌面环境后端实现不一样,参考这个列表
1➜ ~ echo $XDG_CURRENT_DESKTOP
2wlroots
从上面的环境变量输出中,可推理出wlroots对应的后端实现是 xdg-desktop-portal-wlr
,所以需要额外安装这个包。
1➜ ~ ls -al /usr/share/xdg-desktop-portal
2total 20
3drwxr-xr-x 1 root root 190 Jun 10 12:13 ./
4drwxr-xr-x 1 root root 5018 Jun 12 12:36 ../
5-rw-r--r-- 1 root root 24 Mar 24 10:58 gtk-portals.conf
6-rw-r--r-- 1 root root 32 May 9 04:32 hyprland-portals.conf
7-rw-r--r-- 1 root root 67 May 22 16:03 labwc-portals.conf
8drwxr-xr-x 1 root root 68 Jun 7 11:22 portals/
9-rw-r--r-- 1 root root 423 Jun 9 07:51 sway-portals.conf
10-rw-r--r-- 1 root root 24 Aug 9 2024 wlr-portals.conf
11➜ ~ ls -al /usr/share/xdg-desktop-portal/labwc-portals.conf
12-rw-r--r-- 1 root root 67 May 22 16:03 /usr/share/xdg-desktop-portal/labwc-portals.conf
13➜ ~ ls -al /usr/share/xdg-desktop-portal
14total 20
15drwxr-xr-x 1 root root 190 Jun 10 12:13 ./
16drwxr-xr-x 1 root root 5018 Jun 12 12:36 ../
17-rw-r--r-- 1 root root 24 Mar 24 10:58 gtk-portals.conf
18-rw-r--r-- 1 root root 32 May 9 04:32 hyprland-portals.conf
19-rw-r--r-- 1 root root 67 May 22 16:03 labwc-portals.conf
20drwxr-xr-x 1 root root 68 Jun 7 11:22 portals/
21-rw-r--r-- 1 root root 423 Jun 9 07:51 sway-portals.conf
22-rw-r--r-- 1 root root 24 Aug 9 2024 wlr-portals.conf
23➜ ~ cat /usr/share/xdg-desktop-portal/labwc-portals.conf
24[preferred]
25default=wlr;*
26org.freedesktop.impl.portal.Inhibit=none
27➜ ~ cat /usr/share/xdg-desktop-portal/sway-portals.conf
28[preferred]
29default=gtk
30org.freedesktop.impl.portal.ScreenCast=wlr
31org.freedesktop.impl.portal.Screenshot=wlr
32# xdg-desktop-portal-gtk's implementation uses org.gnome.SessionManager and
33# org.freedesktop.ScreenSaver, neither of which is implemented by Sway. This
34# will cause some programs (e.g. Firefox) to use Wayland's idle-inhibit
35# protocol instead, which sway does implement.
36org.freedesktop.impl.portal.Inhibit=none
可以读读arch的文档,XDG_CURRENT_DESKTOP 环境变量决定读取那个配置文件,配置文件控制使用哪个后端实现。文件不需要独立配置,安装包装好后,会自动处理。多理解一些,会学到一些边角知识。
XDG Desktop Portal 是什么
AI相关介绍如下:
1XDG Desktop Portal 是 Linux 开发领域中,Flatpak 生态系统的一个核心组件。它为应用程序提供了安全、统一的方式来访问系统资源,如文件选择器、截图工具、打印服务等。
2
3安全性:基于 D-Bus 协议,提供沙盒环境中的接口,使 Flatpak 应用能安全地与主机操作系统交互。每个请求都会经过权限检查,需用户明确批准,可防止未授权访问。
4统一接口:开发者通过 XDG Desktop Portal,可用相同的 API 实现各种功能,无需考虑具体 Linux 发行版差异,提高了代码可移植性,简化了开发工作。
5集成性:能与系统级服务(如文件管理器、打印机设置)无缝集成,让应用像原生应用一样工作,无需关注底层实现细节。
6桥接作用:作为应用程序和桌面环境之间的桥梁,允许 Flatpak 应用调用系统服务,如打开文件对话框或捕获屏幕截图,而无需直接与桌面环境交互,降低了耦合度。
7功能丰富:支持文件选择和保存、多媒体访问、打印服务、剪贴板共享、截图和录屏等功能。
8可扩展性和可定制化:设计时考虑了未来扩展,可方便地添加新的门户服务。不同的桌面环境还可提供自己的实现,保持桌面体验的一致性。
9社区支持:XDG Desktop Portal 是开源项目,由活跃的社区维护和更新,可不断改进性能和稳定性
截图和录屏是其提供功能之一。
XDG
是 X Desktop Group
的缩写,尽管 Wayland 已经大行其道了,估计相关名字因为历史缘故也不可能更改,单独解释是因为我是中文用户,不好记住,怪怪的。
结果截图
装好上述的包后,OBS上就会出现一个 屏幕采集(PipeWire)
的选项,否则不会出现,也就无法录屏直播。
飞书上我同时使用Linux桌面端和手机端,测试屏幕共享没有问题,懒得截图了;腾讯会议因为多端同时参会要开会员,没有测试。


版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。
相关文章:
- labwc环境启用wlogout
- Wayland环境自动切换壁纸
- Wayland 环境下gif录屏
- 应用启动器yofi使用配置
- Labwc更换定制皮肤
- 快速隐藏和呼出终端
- greetd和regreet使用教程
- Labwc 便捷配置
- 窗口管理器labwc使用记
- Arch linux如何顺畅连接蓝牙设备