niri 中 Zen Browser 无法进行 DMABUF 屏幕投屏怎么开启?
【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niri
在 niri 上投屏时,niri 的主投屏通道是 portals + pipewire,Firefox、Chromium、Electron、Telegram 等应用都支持,可以投屏整个显示器或单个窗口。但如果你使用 Zen Browser,会发现投屏无法开箱即用——这不是 niri 配置漏了什么东西,而是 Zen Browser 自身禁用了 DMABUF 屏幕捕获,导致投屏拿不到画面。这篇说明如何在 Zen Browser 里打开这个开关,让 niri 的投屏恢复正常。
现象与原因
文档中记录的问题现象是:Zen Browser 中 DMABUF 屏幕投屏被禁用(原文:"DMABUF screencasts are disabled in the Zen Browser"),因此在 niri 上直接投屏不工作。
对应条目见 Application-Issues 的 Zen Browser 一节,修复方法只有一步,且全部发生在浏览器内部,不需要改 niri 的配置文件:
open
about:configand setwidget.dmabuf.force-enabledtotrue
开启 DMABUF 投屏开关
- 打开 Zen Browser。
- 在地址栏输入
about:config并回车,进入浏览器配置页。 - 找到偏好项
widget.dmabuf.force-enabled,把它的值设为true。
这是文档给出的完整修复步骤。widget.dmabuf.force-enabled是 Zen Browser 自己的偏好项,与 niri 无关,改完对 niri 侧没有额外要求。
验证投屏是否恢复
修复本身针对的就是"投屏不工作"这一现象,所以验证方式就是重新走一遍 niri 的投屏流程:
- 通过 portals 触发一次投屏(文档列出的支持应用包括 OBS、Firefox、Chromium、Electron、Telegram 等);
- 确认投屏窗口对话框里可以选择目标——niri 支持投屏整个显示器,也支持投屏单个窗口(见 Screencasting 文档)。
如果你走的是"选择窗口"这条路径,投屏之前先让 Zen Browser 窗口处于可见状态,再从投屏对话框中选择它。
如果开启后仍无法投屏
此时问题多半不在widget.dmabuf.force-enabled上,而是 niri 投屏的环境依赖不满足。Screencasting 文档 列出的前提是:
- 一个可用的 D-Bus 会话;
- pipewire 已安装并可用;
xdg-desktop-portal-gnome已安装;- niri 以会话方式运行(通过
niri-session,或从显示管理器登录,而不是单独启动niri进程)。
文档说明在主流发行版上"这些通常会直接可用",但如果你是在 TTY 上手动启动的,需要用niri-session(systemd/dinit)或niri --session(其他 init)来启动,其中niri-session会把 niri 作为服务启动并拉起 portals 等图形会话服务所需的 graphical session target,见 Getting-Started。
替代路径:wlr-screencopy
如果 portals 链路一时凑不齐,niri 还支持wlr-screencopy协议,可以改用依赖该协议的投屏工具。这是 Screencasting 文档 给出的备选方案;具体用哪个工具由文档中提到的wlr-screencopy生态决定,niri 侧无需额外配置。
【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niri
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考