Как отображать окна двух разных профилей Firefox под разными значками в панели?

Вопрос или проблема

Я создал два разных .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 файлы. Примеры конфигураций приведены ниже:

  1. Создание файла для профиля 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
  1. Создание файла для профиля 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

Применение

  1. Уникальные WM_CLASS: Как вы могли заметить, для каждого профиля в Exec строке прописан параметр --class, который задаёт уникальное значение WM_CLASS. Важно, чтобы это значение совпадало со значением в строке StartupWMClass.

  2. Пользовательский .desktop: Каждый .desktop файл размещается в каталоге ~/.local/share/applications, что позволяет пользователю вручную настроить запуск каждого профиля со своей иконкой и именем.

  3. Установка иконки: В строке Icon вы можете указать путь к уникальной иконке для каждого профиля, что визуально позволит различать их на панели задач.

После данной настройки, каждый профиль будет запускаться под своим собственным значком, а окна не будут группироваться стандартной системой. Это значительно упрощает рабочий процесс, особенно при необходимости одновременно работать с несколькими профилями Firefox и обеспечивает более интуитивно понятное управление окнами в многозадачной среде.

Подобные конфигурации легко адаптируются и к другим версиям Linux, где используется Firefox как deb-пакет или snap-пакет. Критически важно, чтобы установка производилась с учетом раздельного контроля за версиями Firefox, где это необходимо, что требует отдельного внимания к совместимости и обновлениям пакетов.

Эта методология не только повышает удобство использования, но и демонстрирует гибкость и возможности настраиваемости Linux-системы под конкретные нужды пользователей, которым важно разграничивать свои рабочие пространства.

Оцените материал
Добавить комментарий

Капча загружается...