惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Vulnerabilities – Threatpost
有赞技术团队
有赞技术团队
小众软件
小众软件
O
OpenAI News
C
Cyber Attacks, Cyber Crime and Cyber Security
I
Intezer
NISL@THU
NISL@THU
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
MongoDB | Blog
MongoDB | Blog
阮一峰的网络日志
阮一峰的网络日志
Hacker News: Ask HN
Hacker News: Ask HN
D
Docker
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
C
CERT Recently Published Vulnerability Notes
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
M
MIT News - Artificial intelligence
Blog — PlanetScale
Blog — PlanetScale
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
Hacker News - Newest:
Hacker News - Newest: "LLM"
G
Google Developers Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
GRAHAM CLULEY
S
Schneier on Security
T
Tor Project blog
Spread Privacy
Spread Privacy
PCI Perspectives
PCI Perspectives
Microsoft Security Blog
Microsoft Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Fortinet All Blogs
L
Lohrmann on Cybersecurity
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
The Exploit Database - CXSecurity.com
TaoSecurity Blog
TaoSecurity Blog
Apple Machine Learning Research
Apple Machine Learning Research
T
Threat Research - Cisco Blogs
T
Troy Hunt's Blog
罗磊的独立博客

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记 迷你主机组装记 Labwc更换定制皮肤 树莓派跑分流代理 实用自动代理配置示例 九年老鼠标复活记 Openvpn示例 Mac下如何旋转webp图片 如何隐藏Vscode中Markdown PDF插件的头部内容 解决Linux下网络配置无法变更保存的问题 labwc环境启用wlogout Ubuntu下新官方微信尝鲜 简单检测用户是否开启广告屏蔽 Atuin ZFS下卡顿问题解决 Wine安装64位微信 Fish 和 Atuin使用记 Fastapi简单实现临时下载链接 Fastapi微信公众号开发简要 Hugo根据语种展示不同内容 如何修复Waybar微信图标错误 信封加密简要 Linux环境下维护公众号记录 快速隐藏和呼出终端 Wayland环境自动切换壁纸 SuperTuxKart 试玩 简单抓取雪球股票快讯 为什么你的kill命令不能列出信号表 Wine安装微信保姆教程 Hysteria科学上网简要 Ubuntu 23.10 钉钉无法启动解决方法 网站导航栏防止插入Adsense自动广告 Linux环境按键检测 Hugo文末添加最后修改时间 Wayland环境ksnip无法复制问题解决 我眼中的股票市场 Caddy简单图片防盗链 greetd和regreet使用教程 Wayland环境下截图加后期修改 Wayland 环境下gif录屏 Firefox的一些有趣功能 Ubuntu 切换系统语言 Firefox 标题栏高度调整 网站添加回到顶部功能 Hugo自定义字体 Labwc 便捷配置 Wofi使用教程 窗口管理器labwc使用记 文件共享软件Dufs推荐 Hugo静态站点接入Adsense广告 Fcitx5配置详解 Ubuntu安装chrome的方法总结 一种Xterm.js的全屏方案 Google网址收录api Python示例 手机听离线音乐 Snipe it资产导入 应用启动器yofi使用配置 Snipe it资产管理系统安装使用 Ubuntu开机启动加速 Vue3 vite TypeScript跨域等相关设置 Ubuntu手动升级Libreoffice Ubuntu设置alacritty为默认终端 简体文章批量转换为繁体 使用Inkscape调整svg图片大小 实用命令 使用mitmproxy给手机app抓包 Python中rstrip方法细解 Github同主机多仓库部署deploy key问题处理 Linux安装最新版本Python KeePassXC使用教程 Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法 Caddy日志配置轮转和格式化
独立窗口管理器下无法录屏问题处理
2025-06-12 · via mephisto.cc

我使用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 是开源项目,由活跃的社区维护和更新,可不断改进性能和稳定性

截图和录屏是其提供功能之一。

XDGX Desktop Group 的缩写,尽管 Wayland 已经大行其道了,估计相关名字因为历史缘故也不可能更改,单独解释是因为我是中文用户,不好记住,怪怪的。

结果截图

obs-live

装好上述的包后,OBS上就会出现一个 屏幕采集(PipeWire)的选项,否则不会出现,也就无法录屏直播。

飞书上我同时使用Linux桌面端和手机端,测试屏幕共享没有问题,懒得截图了;腾讯会议因为多端同时参会要开会员,没有测试。