![由于“Firefox 已在运行”错误,无法在 OpenSUSE 中使用 xdg-open 或 kde-open5 打开 Firefox 的多个实例](https://linux22.com/image/185678/%E7%94%B1%E4%BA%8E%E2%80%9CFirefox%20%E5%B7%B2%E5%9C%A8%E8%BF%90%E8%A1%8C%E2%80%9D%E9%94%99%E8%AF%AF%EF%BC%8C%E6%97%A0%E6%B3%95%E5%9C%A8%20OpenSUSE%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20xdg-open%20%E6%88%96%20kde-open5%20%E6%89%93%E5%BC%80%20Firefox%20%E7%9A%84%E5%A4%9A%E4%B8%AA%E5%AE%9E%E4%BE%8B.png)
当我从命令行尝试时
$ kde-open5 http://unix.stackexchange.com/
$ xdg-open http://unix.stackexchange.com/
...几秒钟后,我在 X11 上看到一个对话框,告诉我 Firefox 正忙或没有响应。
另外,当我点击 Thunderbird 中的链接时,我会遇到同样的错误,这严重危害了我的工作流程,因为在这种情况下,我必须手动复制/粘贴链接到在 Firefox 中手动创建的新选项卡上。
在研究这个问题时,我发现类似的问题表明 Firefox 保留了一个锁定文件,以防止多个实例打开同一配置文件。虽然它确实有道理,但我的经验告诉我“它应该可以工作”,因为它总是可以在我之前安装的几个 Linux 上工作,并且当我在 /opt 下手动安装 Firefox 时它也可以工作。
那么...为什么 Firefox 会抱怨呢?与 OpenSUSE 有什么不同,它会阻止 Firefox 的行为像我使用其他发行版时那样? OpenSUSE 使 Firefox 的安装方式zypper
与手动安装的 Firefox(通过简单地扩展 .tar.gz 文件)有什么不同?
答案1
我已经规避了这个问题,现在与其他发行版以及与手动安装的 Firefox 相比,Firefox 的行为符合预期。我确实没有关于根本原因的完整解释,但至少我有一个解决方案。
研究 Firefox 配置
就我而言,我找到了以下文件:
$HOME/.mozilla/firefox/installs.ini:
[11457493C5A56847]
Default=jpxqfd4t.default-release-1609370879824
Locked=1
[F4BAF53E74A51272]
Default=jpxqfd4t.default-release-1609370879824
Locked=1
$HOME/.mozilla/firefox/profiles.ini:
[Profile0]
Name=default
IsRelative=1
Path=jpxqfd4t.default-release-1609370879824
[General]
StartWithLastProfile=1
Version=2
[Install11457493C5A56847]
Default=jpxqfd4t.default-release-1609370879824
Locked=1
[InstallF4BAF53E74A51272]
Default=jpxqfd4t.default-release-1609370879824
Locked=1
如何规避(或解决?)问题
我发现Locked=1
上面这些行很可疑。在我的行动没有任何基础的情况下,除非有一些猜测和勇气,我决定将这些行更改为Locked=0
。
$ cp $HOME/.mozilla/firefox/installs.ini $HOME/.mozilla/firefox/installs.ini.OLD
$ cp $HOME/.mozilla/firefox/profiles.ini $HOME/.mozilla/firefox/profiles.ini.OLD
$ sed 's/Locked=1/Locked=0/' $HOME/.mozilla/firefox/installs.ini.OLD > $HOME/.mozilla/firefox/installs.ini.OLD
$ sed 's/Locked=1/Locked=0/' $HOME/.mozilla/firefox/profiles.ini.OLD > $HOME/.mozilla/firefox/profiles.ini.OLD
$ killall firefox
问题解决了。
答案2
查看用于启动 Firefox 的完整命令行,发行版默认安装可能已添加,--no-remote
这将不允许来自 Firefox 外部的命令远程告诉它打开 URL。换句话说,--no-remote
意味着 Firefox 正在告诉所有外部进程”嘿!不要试图和我说话!” 很遗憾,Firefox 提供了相同的“***Firefox 已在运行,但没有响应。要打开新窗口,您必须首先关闭现有的 Firefox 进程或重新启动系统。***”错误消息。事实上,正是由于特定的 Firefox 配置文件的启动导致了问题。
firefox --new-instance --create-profile NewProfileName
firefox --new-instance -P NewProfileName
因此,--no-remote
决不应该使用它来启动“default-release”firefox 配置文件。然而,--no-remote
使用专用的 Firefox 配置文件(我们称之为“防火墙”)可以更安全地管理 LAN 内的网络设备和物联网设备。这样,操作系统就会启动诸如http://WeHijackIOT.com/不会在您的 LAN 中仅打开“防火墙”配置文件。
firefox --no-remote --create-profile FireWall
firefox --no-remote -P FireWall