Если URL совпадает с .*\.myemployer\.com.*
, тогда я хочу, чтобы ссылка открывалась в хроме. В противном случае я хочу открыть его в смелый. Это возможно? Если да, то как?
Обратите внимание, что существует различие между text/html
mimetype (это открывает фактические файлы HTML), и x-scheme-handler/http
mimetype (это - URL HTTP). Я предполагаю, что Вы хотите настроить, как внешние приложения открывают HTTP/HTTPS URLs, так как Вы упоминаете домены. (Обратите внимание, что это для внешних приложений. Настройка, как конкретный браузер обрабатывает URL HTTP, является другой вещью в целом.)
Одна хитрая вещь о пользовательских обработчиках URL состоит в том, что существует по крайней мере четыре файла, в которых могли бы быть сохранены ассоциации, в зависимости от приложения / библиотека использование приложения:
~/.config/mimeapps.list
(правильное место для внесения изменений)~/.local/share/application/mimeapps.list
(местоположение устаревшее)~/.local/share/application/defaults.list
(более старое местоположение устаревшее)~/.local/share/applications/mimeinfo.cache
(кэш)Я делал некоторую работу над пользовательскими обработчиками URL в последнее время, таким образом, я адаптировал часть этого с этой целью. Вот инструкции:
Проверьте в настоящее время регистрируемый файл на протоколы. Вот то, на что они похожи для меня:
$ gio mime x-scheme-handler/http
Default application for “x-scheme-handler/http”: firefox.desktop
Registered applications:
firefox.desktop
chromium-browser.desktop
Recommended applications:
firefox.desktop
chromium-browser.desktop
$ gio mime x-scheme-handler/https
Default application for “x-scheme-handler/https”: firefox.desktop
Registered applications:
firefox.desktop
chromium-browser.desktop
Recommended applications:
firefox.desktop
chromium-browser.desktop
Запишите сценарий, который анализирует URL и запускает соответствующий браузер.
Я предпочитаю использовать Python, так как он имеет библиотеки, чтобы проанализировать URL и отправить ошибки в системный журнал.
#! /usr/bin/env python3
import subprocess
import logging
import argparse
import syslog
import sys
try :
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
import os.path
def http_url(url):
if url.startswith('http://'):
return url
if url.startswith('https://'):
return url
else:
syslog.syslog(syslog.LOG_ERR, sys.argv[0] + ": not an HTTP/HTTPS URL: '{}'".format(url))
raise argparse.ArgumentTypeError(
"not an HTTP/HTTPS URL: '{}'".format(url))
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description='Handler for http/https URLs.'
)
parser.add_argument(
'-v',
'--verbose',
help='More verbose logging',
dest="loglevel",
default=logging.WARNING,
action="store_const",
const=logging.INFO,
)
parser.add_argument(
'-d',
'--debug',
help='Enable debugging logs',
action="store_const",
dest="loglevel",
const=logging.DEBUG,
)
parser.add_argument(
'url',
type=http_url,
help="URL starting with 'http://' or 'https://'",
)
args = parser.parse_args()
logging.basicConfig(level=args.loglevel)
logging.debug("args.url = '{}'".format(args.url))
parsed = urlparse(args.url)
if parsed.hostname == 'askubuntu.com':
browser = 'firefox'
else:
browser = 'chromium-browser'
logging.info("browser = '{}'".format(browser))
cmd = [browser, args.url]
try :
status = subprocess.check_call(cmd)
except subprocess.CalledProcessError:
syslog.syslog(syslog.LOG_ERR, sys.argv[0] + "could not open URL with browser '{}': {}".format(browser, args.url))
raise
Адаптируйте сценарий к своей симпатии, особенно исполняемый файл для brave
(Я не использовал его, таким образом, я не знаю), и имя хоста в if parsed.hostname
часть.
Протестируйте сценарий из текущего каталога.
Это должно открыться Firefox:
$ ./http_url_handler.py 'https://askubuntu.com/questions/1161752/how-can-i-configure-a-domain-specific-default-browser'
Это должно открыться Хромом:
$ ./http_url_handler.py 'https://superuser.com/questions/688063/is-there-a-way-to-redirect-certain-urls-to-specific-web-browsers-in-linux/'
Добавьте сценарий к Вашему $PATH
таким образом, файл на рабочем столе может найти его.
Я использую a bin
каталог как это:
$ mkdir ~/bin/
и добавьте это к ~/.profile
(обратите внимание, что необходимо будет выйти из системы и войти в систему снова для наблюдения изменений):
PATH="$HOME/bin:$PATH"
и наконец или копия или символьная ссылка сценарий к ~/bin
:
$ ln -s $PWD/http_url_handler.py ~/bin/
Если бы Вы сделали это правильно, то необходимо видеть это:
$ type -a http_url_handler.py
http_url_handler.py is /home/nathaniel/bin/http_url_handler.py
не это:
$ type -a http_url_handler.py
bash: type: http_url_handler.py: not found
Протестируйте сценарий из своего корневого каталога.
Это должно открыться в Хроме:
$ http_url_handler.py 'https://superuser.com/questions/688063/is-there-a-way-to-redirect-certain-urls-to-specific-web-browsers-in-linux'
Это должно открыться в Firefox:
$ http_url_handler.py 'https://askubuntu.com/questions/1161752/how-can-i-configure-a-domain-specific-default-browser'
Установите файл на рабочем столе. Вот тот, который я использовал:
[Desktop Entry]
Name=HTTP URL handler
Comment=Open an HTTP/HTTPS URL with a particular browser
TryExec=http_url_handler.py
Exec=http_url_handler.py %u
X-MultipleArgs=false
Type=Application
Terminal=false
NoDisplay=true
MimeType=x-scheme-handler/http;x-scheme-handler/https
Любой через desktop-file-install
:
$ desktop-file-install --dir=$HOME/.local/share/applications/ http-url-handler.desktop
или вручную копия http-url-handler.desktop
файл к надлежащему каталогу, который должен быть ~/.local/share/applications/
:
$ cp http-url-handler.desktop ~/.local/share/applications/
Это самые важные строки в файле на рабочем столе:
Exec=http_url_handler.py %u
MimeType=x-scheme-handler/http;x-scheme-handler/https
Сделайте исполняемый файл файла на рабочем столе.
$ chmod +x $HOME/.local/share/applications/http-url-handler.desktop
Зарегистрируйте файл на рабочем столе с x-scheme-handler/http
и x-scheme-handler/https
mimetypes.
$ gio mime x-scheme-handler/http http-url-handler.desktop
Set http-url-handler.desktop as the default for x-scheme-handler/http
$ gio mime x-scheme-handler/https http-url-handler.desktop
Set http-url-handler.desktop as the default for x-scheme-handler/https
Все это действительно делает изменить строки в ~/.config/mimeapps.list
под [Default Applications]
группа так, чтобы вместо этого:
x-scheme-handler/http=firefox.desktop
x-scheme-handler/https=firefox.desktop
это говорит это:
x-scheme-handler/http=http-url-handler.desktop
x-scheme-handler/https=http-url-handler.desktop
Можно также добавить его под [Added Associations]
группа с текстовым редактором, таким образом, это выглядит примерно так:
x-scheme-handler/http=http-url-handler.desktop;firefox.desktop;chromium-browser.desktop
x-scheme-handler/https=http-url-handler.desktop;firefox.desktop;chromium-browser.desktop
Некоторое более старое использование приложений ~/.local/share/application/mimeapps.list
, но это официально удерживается от использования. Однако xdg-mime
управляйте использует это местоположение так или иначе:
$ xdg-mime default http-url-handler.desktop x-scheme-handler/http
$ xdg-mime default http-url-handler.desktop x-scheme-handler/https
Существует также еще более старый названный файл устаревший defaults.list
это все еще используется некоторыми приложениями. Отредактируйте этот файл с текстовым редактором:
$ edit ~/.local/share/applications/defaults.list
и вручную добавьте эти строки:
x-scheme-handler/http=http-url-handler.desktop
x-scheme-handler/https=http-url-handler.desktop
под [Default Applications]
группа.
Проверьте, было ли это успешно зарегистрировано.
$ gio mime x-scheme-handler/http
Default application for “x-scheme-handler/http”: http-url-handler.desktop
Registered applications:
firefox.desktop
chromium-browser.desktop
Recommended applications:
firefox.desktop
chromium-browser.desktop
$ gio mime x-scheme-handler/https
Default application for “x-scheme-handler/https”: http-url-handler.desktop
Registered applications:
firefox.desktop
chromium-browser.desktop
Recommended applications:
firefox.desktop
chromium-browser.desktop
Если Вы также добавили к [Added Associations]
группа, это будет похоже на что-то вроде этого:
$ gio mime x-scheme-handler/http
Default application for “x-scheme-handler/http”: http-url-handler.desktop
Registered applications:
http-url-handler.desktop
firefox.desktop
chromium-browser.desktop
Recommended applications:
http-url-handler.desktop
firefox.desktop
chromium-browser.desktop
$ gio mime x-scheme-handler/https
Default application for “x-scheme-handler/https”: http-url-handler.desktop
Registered applications:
http-url-handler.desktop
firefox.desktop
chromium-browser.desktop
Recommended applications:
http-url-handler.desktop
firefox.desktop
chromium-browser.desktop
Проверить xdg-mime
также.
$ xdg-mime query default x-scheme-handler/http
http-url-handler.desktop
$ xdg-mime query default x-scheme-handler/https
http-url-handler.desktop
Протестируйте некоторые URL.
Это должно открыться в Хроме:
$ gio open 'https://superuser.com/questions/688063/is-there-a-way-to-redirect-certain-urls-to-specific-web-browsers-in-linux'
Это должно открыться в Firefox:
$ gio open 'https://askubuntu.com/questions/1161752/how-can-i-configure-a-domain-specific-default-browser'
Теперь протестируйте те же URL с xdg-open
:
$ xdg-open 'https://superuser.com/questions/688063/is-there-a-way-to-redirect-certain-urls-to-specific-web-browsers-in-linux/'
$ xdg-open 'https://askubuntu.com/questions/1161752/how-can-i-configure-a-domain-specific-default-browser'
Обновите mimeinfo кэш.
Некоторое чтение приложений ~/.local/share/applications/mimeinfo.cache
вместо ~/.config/mimeapps.list
. Так обновите кэш:
$ update-desktop-database ~/.local/share/applications/
Для удобства файлы находятся на GitHub здесь:
https://github.com/nbeaver/askubuntu-custom-http-url-handler
То, что Вы хотите, очень легко, Вы просто приближаетесь к нему от неправильного угла.
Создайте сценарий (просто изменяют Mozilla и хром к полным путям Google Chrome и храбрый.
#!/bin/bash
# Reading argument values using loop
isFound=0;
for argval in "$@"
do
#echo -n "$argval "
if [[ $argval == *myemployer* ]]; then
isFound=1;
break;
fi
done
if [[ isFound -eq 1 ]]; then
mozilla $@;
else
chrome $@;
fi
и сохраните этот сценарий оболочки (с изменениями как selectBrowser.sh
Затем, в этом сценарии оболочки как браузер по умолчанию.
Готово.
После небольшого количества ввода по абсолютному адресу вокруг, я думаю компонент, который я ищу, часть Gnome. Кажется, существует корреспонденция между типами пантомимы и приложения:
❯ gio mime text/html
Default application for “text/html”: chromium-browser.desktop
Registered applications:
firefox.desktop
chromium-browser.desktop
brave-browser.desktop
vim.desktop
nvim.desktop
org.gnome.gedit.desktop
Recommended applications:
firefox.desktop
chromium-browser.desktop
brave-browser.desktop
Здесь существует также некоторая информация: https://help.gnome.org/admin/system-admin-guide/stable/mime-types-application.html.en
После хорошей идеи от @RobertRiedl я могу зарегистрировать "браузер" на тексте/HTML mimetype, который является на самом деле просто небольшой программой, которая проверит строку и затем запустит желаемую программу. Я полагаю, что Вы могли использовать это для управления другими mimetype переотображениями также.
Если я получу эту работу, то я обновлю этот ответ с деталями.