每当我在桌面 Teams 客户端中单击 HTTP(S) 链接时,它会挂起大约 5 秒,然后收到一条错误消息:“Firefox 已在运行,但没有响应。要使用 Firefox,您必须先关闭现有进程,重新启动您的设备,或使用不同的配置文件。”
不用说,我的 Firefox 正在运行、响应并且打开了很多选项卡。我无意关闭它或使用不同的配置文件。
当我点击其他程序(如 Thunderbird、Telegram 等)中的任何链接时,没有这样的问题......
如果我在打开此消息的情况下执行“ps -ef”,我会看到以下进程树:
rakula 30542 30440 0 11:42 pts/10 00:00:00 /opt/firefox/firefox-bin https://URL <-- the "message" process
rakula 30440 23518 0 11:42 pts/10 00:00:00 /bin/sh /usr/bin/xdg-open https://URL
rakula 23518 1 0 11:14 pts/10 00:00:15 /opt/teams/teams --disable-namespace-sandbox --disable-setuid-sandbox
其中“https://URL”是我点击的链接。 “rakula”是我的用户名,我的 X11 会话在该用户下运行。
如果我从终端 (urxvt) 手动运行“/bin/sh /usr/bin/xdg-open https://URL”,它会按预期工作 - 在运行的 Firefox 窗口中打开一个新选项卡。我很困惑 - 我手动运行此命令和团队运行相同命令之间可能有什么区别 - 为什么后者的行为不同?
Gentoo Linux、dwm、Firefox 99、Teams 1.4.00.26453-r1 Firefox 是从 portage firefox-bin 包安装的,Teams 也是从 portage 安装的。此问题在不同版本的 Firefox 和 Teams 之间仍然存在。我在 Debian Linux 和 KDE 上没有遇到这个问题。
答案1
事实证明,TeamsDBUS_SESSION_BUS_ADDRESS=disabled:
出于某种未知原因进行导出。
我创建了一个简单的包装脚本并将其放入/usr/local/bin/firefox-wrapper.sh
:
#!/bin/bash
unset DBUS_SESSION_BUS_ADDRESS
/usr/bin/firefox-bin $*
并编辑/usr/share/applications/firefox-bin.desktop
,设置 Exec= 指向我的包装脚本。