通过 ssh X11 转发 snap firefox 不使用 X 用户的 pulseaudio 守护进程

通过 ssh X11 转发 snap firefox 不使用 X 用户的 pulseaudio 守护进程

我在不同的用户帐户下运行多个应用程序实例,包括 Firefox,所有实例都显示到同一个 X 服务器。

在过去,作为 X 用户,我仅执行了相当于以下的操作:ssh -X user2@localhost firefox

自从使用 snap firefox 切换到 22.04 后,firefox 就不再播放音频了。(需要说明的是,直接以 X 用户身份运行的 firefox 运行正常,但不再以 user2 身份通过 ssh 启动任何实例。)

最初,我甚至无法让 Firefox 通过 ssh 运行,但是我发现了一些提示,引导我将这些命令 Cargo-cult 到 user2 中~/.bash_aliases

export XAUTHORITY=~/.Xauthority
dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY

第一行允许 snap 与 X 服务器对话;第二行消除了启动缓慢的问题并且恢复了下载能力(下载只会报告失败(++ Ctrl),并且+另存为文件选择器对话框从未出现过)。ShiftYCtrlS

然而,虽然视频现在可以正常显示,但音频仍然无法正常工作。当以不同的 user2 通过 ssh(到本地主机)运行时,Snap 版本的 Firefox 要么找不到,要么无法连接到 X 用户运行的 pulseaudio 守护程序。

我发现一个建议,启动 Firefox 如下:

echo 'export PULSE_SERVER=<PATH>; /snap/firefox/current/user/lib/firefox/firefox' |\
snap run --shell firefox

可以解决问题,但对于我的情况这没有什么区别。

我设置<PATH>unix:/var/tmp/pulse-socket

(我认为)我配置了 X 用户的 pulseaudio 守护进程也在那里监听:

pacmd load-module module-native-protocol-unix auth-anonymous=1 socket=/var/tmp/pulse-socket

pax11publish显示合理信息。

以 user2 身份通过 ssh运行非 snap 应用程序(比如mpv video.mp4或 tar 版本zoom)无需进一步配置就可以正常工作(我猜他们找到并使用了 X root 窗口属性)。

我对 pulseaudio 了解不多(对 pipewire 了解更少,我在 Firefox snap 中看到了它的一些配置)。我对 dbus 几乎一无所知。


有没有简单的方法可以让“远程” Firefox snap 使用 X 用户的 pulseaudio 守护进程?

答案1

拼图中缺失的一块是/dev/snd/*

我的配置现在是:

以 root 身份:

setfacl -m u:user2:rw  /dev/snd/[chpst]*

作为用户2:

export XAUTHORITY=~/.Xauthority
dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY

此后firefox音频即可正确播放。

相关内容