适用于 Firefox 版本的不同启动器

适用于 Firefox 版本的不同启动器

我正在尝试同时运行旧版 Firefox 和最新版 Firefox。这很好用,我的.local/share/applications文件夹中有两个启动器,如下所示:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Firefox 29
Icon=custom.png
Exec=/usr/local/firefox-29/firefox --no-remote -P "Firefox 29"
StartupNotify=false

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Firefox Trunk
Icon=firefox.png
Exec=/usr/local/firefox-trunk/firefox %u -P Trunk --no-remote
StartupNotify=false

它可以工作,但是在我启动两个浏览器后,它们最终共享一个新图标。

我找到了一个名为的启动器指令StartupWMClass,并尝试使它们彼此不匹配......但是......事实证明两个应用程序都有完全相同的WMClass:

$ xprop WM_CLASS                         # then click on FF 29
WM_CLASS(STRING) = "Navigator", "Firefox"
$ xprop WM_CLASS                         # then click on FF trunk
WM_CLASS(STRING) = "Navigator", "Firefox"

有没有办法为应用程序指定 WMClass?

答案1

您无法WMClass为 Firefox 29 指定,但对于较新的版本,您可以使用--class=Something命令行参数指定。

因此我调整了 Firefox 主干启动器如下:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Firefox Trunk
Icon=firefox.png
Exec=/usr/local/firefox-trunk/firefox %u -P Trunk --no-remote --class=FirefoxTrunk
StartupNotify=false
StartupWMClass=FirefoxTrunk

...并添加了StartupWMClass=FirefoxFirefox 29 启动器,现在当我运行xprop WM_CLASS...

$ xprop WM_CLASS                         # then click on FF 29
WM_CLASS(STRING) = "Navigator", "Firefox"
$ xprop WM_CLASS                         # then click on FF trunk
WM_CLASS(STRING) = "Navigator", "FirefoxTrunk"

耶!

因此现在每个启动器都按预期工作,其窗口连接到正确的启动器,并且不会创建新的幻影启动器。

相关内容