
Мне нужно переопределить браузер по умолчанию для одного процесса. Этот процесс запускается вручную из скриптов npm. Чтобы добиться этого программно, я решил переопределить BROWSER
переменную окружения прямо перед скриптом. Но это не работает. Он крадет открытие общесистемного браузера по умолчанию. Я пробовал с xdg-open
, но это тоже не работает.
Короче говоря, я хочу, чтобы следующая команда открывала указанный URL в указанном браузере, а не в браузере по умолчанию.
BROWSER='path to desired browser' xdg-open 'any url'
PS: Хочу рассказать немного больше о своей проблеме. Я использую Firefox в качестве браузера по умолчанию на всех своих машинах и довольно привык к нему. Но недавно, отлаживая одно веб-приложение, я понял, что некоторые точки останова не используются инструментами разработки Firefox. Я установил Chromium, и его отладчик работал так, как и ожидалось. Я использую storybook для разработки и хотел бы открыть его в Chromium, при этом используя Firefox в качестве переменной по умолчанию для обычного повседневного использования.
решение1
Мне нужно было что-то подобное, но не ограничиваясь ситуациями, в которых уважается $BROWSER
, так как xdg-open
часто использовался неправильный профиль браузера.
Вот обходной путь с использованием следующих компонентов:
- Скрипт, который загружает
BROWSER
переменную и запускает нужный браузер. - Переопределение текущего
.desktop
профиля по умолчанию путем копирования его в~/.local/share/applications
каталог. - Измените
Exec
операторы в.desktop
файле, чтобы использовать пользовательский скрипт. - Установите
BROWSER
для переменной разумное значение по умолчанию в оболочке входа, чтобы иметь запасной вариант.
Шаг за шагом
~/bin
Я добавил в свой каталог скрипт под названием custom-browser
, который выглядит так:
$BROWSER "$@"
Во-вторых, найдите текущий .desktop
профиль с помощью:
xdg-settings get default-web-browser
Это дало мне firefox.desktop
, который я скопировал в свой домашний каталог пользователя:
cp /usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop
Я изменил Exec
операторы ~/.local/share/applications/firefox.desktop
для запуска /home/{user}/bin/custom-browser
.
Теперь я могу использовать:
BROWSER='chromium' xdg-open 'https://startpage.com'
BROWSER='firefox' xdg-open 'https://startpage.com'
Чтобы открыть разные браузеры на основе BROWSER
переменной. Надеюсь, это вам как-то поможет.
Мое использование
я используюdirenv
[1] для установки BROWSER
переменной на основе каталога, например, рабочие каталоги используют рабочий профиль для моего браузера.
Другой способ — запуск приложений, чтобы BROWSER=hardened-firefox signal-desktop
заставить приложение открывать ссылки в определенном браузере.
Примечания
- Скрипт необходим, поскольку
.desktop
файл не загружает переменные среды, поэтому добавлениеExec=$BROWSER %u
напрямую не работает. BROWSER
Вместо оболочки входа можно задать резервный вариант в скрипте.- Можно написать пользовательский
.desktop
файл и изменить значение по умолчанию с помощьюxdg-settings
/xdg-mime
вместо того, чтобы переопределять значение по умолчанию; мне показалось проще сделать все «правильно» с помощью переопределения. - При использовании браузеров, которые не используют URL в качестве первого позиционного параметра,
.desktop
может быть проще настроить его и работать с ним в скрипте. - Если
.desktop
профиля нет в/usr/share/applications
или переопределение в$HOME/.local/share/applications
не работает, попробуйтеальтернативные пути[2] или обратитесь к документации вашего дистрибутива.
Ссылки
решение2
export BROWSER='path to desired browser' && xdg-open 'any url'
должно сработать.