我正在尝试同时运行旧版 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=Firefox
Firefox 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"
耶!
因此现在每个启动器都按预期工作,其窗口连接到正确的启动器,并且不会创建新的幻影启动器。