GNOME путает названия нескольких различных установок Firefox

GNOME путает названия нескольких различных установок Firefox

Я использую GNOME на Debian Jessie и у меня есть разные установки Firefox:

  • версия ESR, входящая в комплект GNOME, которую я не могу удалить (так как это зависимость)
  • стабильная версия установлена ​​сспециальный репозиторий Debian
  • двоичные файлы от Mozilla (установлены в /opt/firefox/...), загруженные с их сайтакак объяснено здесь
  • версия для разработчиков (также в виде двоичных файлов) от Mozilla (установлена ​​в /opt/firefox-dev-edition)

Поэтому /usr/share/applicationsсуществуют различные файлы .desktop.

$ ls -la firefox*
-rw-r--r-- 1 root root 3640 Okt  4 21:29 firefox-bin.desktop
-rw-r--r-- 1 root root 3,6K Okt  2 08:06 firefox.desktop
-rw-r--r-- 1 root root 2,2K Aug 31 22:57 firefox-dev.desktop
-rw-r--r-- 1 root root 3,8K Sep 22 08:29 firefox-esr.desktop

Итак, все файлы имеют в основном такую ​​структуру:

[Desktop Entry]
Encoding=UTF-8
Name=Firefox
Name[bg]=Firefox
Name[ca]=Firefox
[...some more languages...]
Comment=Browse the World Wide Web
Comment[bg]=Сърфиране в Мрежата
Comment[ca]=Navegueu per el web
[...some more languages...]
X-GNOME-FullName=Firefox Web Browser
X-GNOME-FullName[bg]=Интернет браузър (Firefox)
X-GNOME-FullName[ca]=Navegador web Firefox
[...some more languages...]
Exec=<somePath> %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=<someIcon>
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;[...]
StartupWMClass=<someStartupClass>
StartupNotify=true

Итак, версия ESR имеет Name=Firefox ESRи, конечно же, также X-GNOME-FullName=Firefox ESR Web Browser. Важны следующие вещи:

Exec=firefox-esr %u
Icon=firefox-esr
StartupWMClass=Firefox

Я использовал этот файл (и файлы иконок, предоставленные Mozilla) для создания файла рабочего стола для версии разработчика, который выглядит следующим образом:

Exec=/opt/firefox-dev-edition/firefox %u
Icon=firefoxdev
StartupWMClass=FirefoxDev

Создается firefox.desktopустановкой с mozilla.debian.net и выглядит следующим образом:

Exec=/usr/lib/firefox/firefox %u
Icon=firefox
StartupWMClass=Firefox

Чтобы создать ярлык для бинарной версии Firefox, я скопировал firefox.desktopего и назвал firefox-bin.desktop. Я изменил NAME=и X-GNOME-FullName=оригинала firefox.desktop, чтобы отличить его от бинарной версии, и изменил firefox-bin.desktopна этот:

Exec=/opt/firefox/firefox %u
Icon=firefox
StartupWMClass=FirefoxBin

Также /usr/binесть различные двоичные файлы:

$ ls -la firefox*
-rwxr-xr-x 1 root root 113 Sep 22 08:29 firefox
lrwxrwxrwx 1 root root  30 Sep 22 08:40 firefox-esr -> ../lib/firefox-esr/firefox-esr
lrwxrwxrwx 1 root root  22 Okt  2 08:17 firefox.real -> ../lib/firefox/firefox

Итак, проблема в том, чтоGNOME по-прежнему путает эти установки Firefox. Все версии иногда помечаются как "Firefox ESR" на верхней панели, когда я их запускаю. Поэтому, когда я нажимаю на "Firefox", чтобы открыть его на короткое время на верхней панели, отображается "Firefox", но через несколько секунд он меняется на "Firefox ESR", хотя я могу подтвердить, что выполненная установка Firefoxнетверсия ESR.

Firefox изначально называется «Firefox», позже название меняется на «Firefox ESR»

Это происходит с Firefox, "Firefox Debian" и Firefox Developer Edition. Иногда даже Tor Browser получает метку "Firefox ESR", что указывает на то, что GNOME, возможно, просто использует имя исполняемого файла ( firefoxв данном случае), чтобы определить, какая программа запущена...

Так как же мне это исправить?

Редактировать:Для тестирования я создал символическую ссылку /opt/firefox/firefox -> /opt/firefox/firefoxbin.realи использовал этот «новый» файл в файле рабочего стола, но это ничего не изменило, так что имя исполняемого файла, похоже, не имеет значения.

Редактировать2:Кроме того , я теперь изменил StartupWMClassиз (который дублировался в ) на . После этого теперь GNOME всегда показывает мне "Firefox Debian" (имя, сохраненное в ) даже для всех других версий Firefox, даже для ESR. Изменение for не помогло.firefox-esr.desktopFirefoxfirefox.desktopFirefoxESRfirefox.desktopStartupWMClassfirefox.desktop

решение1

Ну что ж, я, пожалуй, отвечу на ваш вопрос.

Попробуйте использовать --classфлаг в Firefox. Если он соответствует относительному .desktopфайлу, различные экземпляры должны быть сгруппированы правильно. Например, в вашем файле .desktop:

Exec=firefox --class FirefoxDevel %u

У меня это работает для того же исполняемого файла Firefox, так что если ваши версии поддерживают этот флаг, то все должно быть в порядке.

Связанный контент