由于“Firefox 已在运行”错误,无法在 OpenSUSE 中使用 xdg-open 或 kde-open5 打开 Firefox 的多个实例

由于“Firefox 已在运行”错误,无法在 OpenSUSE 中使用 xdg-open 或 kde-open5 打开 Firefox 的多个实例

当我从命令行尝试时

$ 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

相关内容