Как настроить браузер по умолчанию для конкретного домена?

Если URL совпадает с .*\.myemployer\.com.*, тогда я хочу, чтобы ссылка открывалась в хроме. В противном случае я хочу открыть его в смелый. Это возможно? Если да, то как?

4
задан 29 July 2019 в 01:26

3 ответа

Обратите внимание, что существует различие между text/html mimetype (это открывает фактические файлы HTML), и x-scheme-handler/http mimetype (это - URL HTTP). Я предполагаю, что Вы хотите настроить, как внешние приложения открывают HTTP/HTTPS URLs, так как Вы упоминаете домены. (Обратите внимание, что это для внешних приложений. Настройка, как конкретный браузер обрабатывает URL HTTP, является другой вещью в целом.)

Одна хитрая вещь о пользовательских обработчиках URL состоит в том, что существует по крайней мере четыре файла, в которых могли бы быть сохранены ассоциации, в зависимости от приложения / библиотека использование приложения:

Я делал некоторую работу над пользовательскими обработчиками URL в последнее время, таким образом, я адаптировал часть этого с этой целью. Вот инструкции:

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

    $ 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
    
  2. Запишите сценарий, который анализирует 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 часть.

  3. Протестируйте сценарий из текущего каталога.

    Это должно открыться 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/'
    
  4. Добавьте сценарий к Вашему $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
    
  5. Протестируйте сценарий из своего корневого каталога.

    Это должно открыться в Хроме:

    $ 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'
    
  6. Установите файл на рабочем столе. Вот тот, который я использовал:

    [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
    
  7. Сделайте исполняемый файл файла на рабочем столе.

    $ chmod +x $HOME/.local/share/applications/http-url-handler.desktop
    

    Это необходимо из-за предосторожности безопасности.

  8. Зарегистрируйте файл на рабочем столе с 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] группа.

  9. Проверьте, было ли это успешно зарегистрировано.

    $ 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
    
  10. Протестируйте некоторые 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'
    
  11. Обновите 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

2
ответ дан 1 December 2019 в 09:29

То, что Вы хотите, очень легко, Вы просто приближаетесь к нему от неправильного угла.

Создайте сценарий (просто изменяют 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

Затем, в этом сценарии оболочки как браузер по умолчанию.

Готово.

2
ответ дан 1 December 2019 в 09:29

После небольшого количества ввода по абсолютному адресу вокруг, я думаю компонент, который я ищу, часть 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 переотображениями также.

Если я получу эту работу, то я обновлю этот ответ с деталями.

1
ответ дан 1 December 2019 в 09:29

Другие вопросы по тегам:

Похожие вопросы: