Вопрос или проблема
Я создал два разных .desktop файл-запуска для двух различных профилей Firefox:
-
profile1.desktop
sudo gedit /usr/share/applications/firefox.desktop [Desktop Entry] Name=profile1 Keywords=profile1 Exec=firefox -P -no-remote profile1 Terminal=false X-MultipleArgs=false Type=Application Icon=profile1.png StartupNotify=true StartupWMClass=profile1
-
profile2.desktop
sudo gedit /usr/share/applications/firefox_profile2.desktop [Desktop Entry] Name=profile2 Keywords=profile2 Exec=firefox -P -no-remote profile2 Terminal=false X-MultipleArgs=false Type=Application Icon=profile2.png StartupNotify=true StartupWMClass=profile2
Затем я добавил каждый файл-запуск на панель (через правую кнопку мыши > добавить в избранное).
Я могу запускать каждый профиль из соответствующего значка-запуска на панели.
Все хорошо так далеко.
Однако, когда запускается profile2, его окно будет отображаться / группироваться под значком-запуска Firefox для profile1 (по умолчанию), что может быть довольно запутанным.
Мне бы очень хотелось отображать и группировать окна из разных профилей Firefox под разными элементами панели (т.е. значками на панели).
Я подозреваю, что проблема заключается в том, что поскольку оба файла .dekstop запускают разные процессы одной и той же команды /usr/bin/firefox, они автоматически группируются под каким-то firefox-значком на панели…
Кто-нибудь знает, как решить эту проблему?
У меня есть два профиля Firefox на моей установке 16.04 с двумя разными значками на панели.
Я создал два ярлыка на рабочем столе. Для первого команды запуска firefox %u
. Для второго команды запуска firefox -no-remote -P ScriptUser
. Когда я запускаю их, я получаю две разные инстанции Firefox. Я закрепил каждый на панели и дал им разные имена для удобства идентификации. Это работает для меня. Сейчас пытаюсь добиться того же, но в cairo-dock. Пока это оказывается менее простым.
Надеюсь, это поможет.
Работает на Ubuntu 22.04
Единственный способ, которым мне удалось создать 2 независимых ярлыка Firefox в Dock (один из них с другим значком), где его окна группируются с соответствующим значком, было установить deb-версию Firefox вместе с snap-версией Firefox.
##########################
#Отключите snap firefox
sudo snap disable firefox
sudo apt remove --autoremove firefox -y
##########################
#Установите .deb firefox
sudo add-apt-repository ppa:mozillateam/ppa -y
sudo apt-get update -y
sudo apt-get upgrade -y
#Установите приоритет обновлений firefox для .deb репозитория
sudo bash -c 'cat > /etc/apt/preferences.d/99mozillateamppa <<EOF
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501
Package: firefox*
Pin: release o=Ubuntu
Pin-Priority: -1
EOF'
sudo apt install -t 'o=LP-PPA-mozillateam' firefox -y
#deb-версия установлена в /usr/lib/firefox
###########################
# Включите snap firefox снова
sudo snap enable firefox
#########################
# измените значок firefox
old="Icon=firefox"
new="Icon=/path/to/your/icon"
sudo sed -i "/${old}/c ${new}" /usr/share/applications/firefox.desktop
# измените имя firefox .deb
old="Name=Firefox Web Browser"
new="Name=FirefoxSecond"
sudo sed -i "/${old}/c ${new}" /usr/share/applications/firefox.desktop
Чтобы открыть firefoxSecond (.deb):
firefox
Чтобы открыть firefox (snap):
snap run firefox
Теперь добавьте их в избранное!
Давным-давно я задал исходный вопрос.
И хотя я нашел решение, я полностью забыл, что задавал вопрос. Это было до тех пор, пока я не увидел недавний ответ Vitor Abella; спасибо за это напоминание!
На Ubuntu 20.04 LTS, магический способ, как заставить установку deb версии Firefox группировать окна различных профилей под соответствующими ярлыками на панели, заключался в явной установке атрибута WM_CLASS в строке Exec=...
файла .desktop с дополнением флага --class
. Атрибут флага --class
должен быть как, идентичен содержимому строки StartupWMClass=...
, так и уникален для различных профилей.
Вот как это сделать.
Создайте пользовательский файл .desktop для нужного профиля Firefox, например “profile1”:
gedit ~/.local/share/applications/firefox_profile1.desktop
Введите следующие строки:
[Desktop Entry]
Name=Firefox - profile1
Comment=Запускает Firefox с профилем 'profile1'
GenericName=Веб-браузер
Keywords=Интернет;WWW;Браузер;Веб;Обозреватель
Exec=firefox -p profile1 -no-remote --class Firefox-profile1
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/path/to/profile1_icon.png
Categories=GNOME;GTK;Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
StartupNotify=true
Actions=new-window;new-private-window;
StartupWMClass=Firefox-profile1
[Desktop Action new-window]
Name=Открыть новое окно
Exec=firefox -p profile1 --class Firefox-profile1 -new-window
NoDisplay=true
StartupWMClass=Firefox-profile1
[Desktop Action new-private-window]
Name=Открыть новое приватное окно
Exec=firefox -p profile1 --class Firefox-profile1 -private-window
NoDisplay=true
StartupWMClass=Firefox-profile1
Для любых дополнительных профилей, просто замените “profile1” на имя (и значок, если это необходимо,) profile2, profile3 и так далее. Имена профилей и их атрибуты WM_CLASS можно выбирать свободно, при условии, что они не содержат пробелов или необычных символов; им не обязательно быть действительно именованными “profile#”.
Тот же метод следует применить к snap установкам Firefox, которые являются пакетами по умолчанию в более новых версиях Ubuntu. Просто потребуется создать пользовательские файлы .desktop в папке: ~/.local/share/applications , строки Exec=...
которых вызывают символьную ссылку на последнюю snap-версию исполняемого файла Firefox.
.
Ответ или решение
Для решения задачи отображения окон различных профилей Firefox под разными значками на панели задач в операционной системе, такой как Ubuntu, необходимо создать отдельные .desktop файлы для каждого профиля, и внести в них определённые изменения. Это позволит каждому профилю Firefox иметь свою уникальную группу окон, видимую под своим уникальным значком, что существенно упрощает работу и снижает путаницу при переключении между ними. Приведу детальное объяснение, как это можно осуществить.
Теория
Основная проблема заключается в том, что операционная система группирует окна приложений по их WM_CLASS
. Даже если Firefox запускается с разными профилями, без дополнительных изменений он воспринимается системой как одно и то же приложение, т.к. WM_CLASS
остаётся одинаковым. Соответственно, окна не группируются отдельно. Для решения этой проблемы необходимо явно указать WM_CLASS
в конфигурации каждого профиля.
Пример
Предположим, у вас есть два профиля Firefox, которые нужно запускать независимо: "profile1" и "profile2". Для их конфигурации создадим отдельные .desktop файлы. Примеры конфигураций приведены ниже:
- Создание файла для профиля profile1:
gedit ~/.local/share/applications/firefox_profile1.desktop
Вставьте следующий текст:
[Desktop Entry]
Name=Firefox - profile1
Comment=Starts Firefox with 'profile1' profile
GenericName=Web Browser
Keywords=Internet;WWW;Browser;Web;Explorer
Exec=firefox -p profile1 -no-remote --class Firefox-profile1
Terminal=false
Type=Application
Icon=/path/to/profile1_icon.png
Categories=Network;WebBrowser;
StartupNotify=true
StartupWMClass=Firefox-profile1
- Создание файла для профиля profile2:
gedit ~/.local/share/applications/firefox_profile2.desktop
Вставьте следующий текст:
[Desktop Entry]
Name=Firefox - profile2
Comment=Starts Firefox with 'profile2' profile
GenericName=Web Browser
Keywords=Internet;WWW;Browser;Web;Explorer
Exec=firefox -p profile2 -no-remote --class Firefox-profile2
Terminal=false
Type=Application
Icon=/path/to/profile2_icon.png
Categories=Network;WebBrowser;
StartupNotify=true
StartupWMClass=Firefox-profile2
Применение
-
Уникальные
WM_CLASS
: Как вы могли заметить, для каждого профиля вExec
строке прописан параметр--class
, который задаёт уникальное значениеWM_CLASS
. Важно, чтобы это значение совпадало со значением в строкеStartupWMClass
. -
Пользовательский .desktop: Каждый .desktop файл размещается в каталоге ~/.local/share/applications, что позволяет пользователю вручную настроить запуск каждого профиля со своей иконкой и именем.
-
Установка иконки: В строке
Icon
вы можете указать путь к уникальной иконке для каждого профиля, что визуально позволит различать их на панели задач.
После данной настройки, каждый профиль будет запускаться под своим собственным значком, а окна не будут группироваться стандартной системой. Это значительно упрощает рабочий процесс, особенно при необходимости одновременно работать с несколькими профилями Firefox и обеспечивает более интуитивно понятное управление окнами в многозадачной среде.
Подобные конфигурации легко адаптируются и к другим версиям Linux, где используется Firefox как deb-пакет или snap-пакет. Критически важно, чтобы установка производилась с учетом раздельного контроля за версиями Firefox, где это необходимо, что требует отдельного внимания к совместимости и обновлениям пакетов.
Эта методология не только повышает удобство использования, но и демонстрирует гибкость и возможности настраиваемости Linux-системы под конкретные нужды пользователей, которым важно разграничивать свои рабочие пространства.