有没有办法将某些 URL 重定向到 Linux 中的特定 Web 浏览器?

jra*_*xxo 7 linux browser firefox url internet-filter

我在 Ubuntu 12.10 中使用 Chrome 作为我的默认浏览器。我需要将 Firefox 用于商业目的(与我的工作有关的某些网站仅适用于 Firefox)。有没有办法强制 Ubuntu 将 Firefox 用于某些类型的 URL(可能由正则表达式定义),同时将 Chrome 作为我所有其他任务的默认浏览器?也许作为在后台运行的 shell 脚本?我希望它在系统范围内工作,涵盖来自 Chrome 本身以及 PDF/ODT 等的链接。

我已经搜索了解决方案,但除了 OpenWith 之外我找不到任何东西,这是一个 Firefox 扩展,它添加了一个按钮来打开其他浏览器中的某些链接,这将再次要求我事先打开 Firefox,这对我没有任何帮助。

有没有人有任何想法?像Choosy for Linux 之类的东西?

hol*_*eap 9

Linux 中使用“最喜欢的”程序打开资源的可执行文件称为xdg-open. 这有点复杂,但您可以使用xdg-mime install. 但是,我不知道您是否可以针对特定 URL 之类的内容执行此操作。

这变得更加复杂,因为特定的桌面环境使用不同的可执行文件和方法来打开它们的默认程序。例如 KDE 有kde-open,但不是每个 KDE 应用程序似乎都使用它。

无论如何,我仅使用 shell 脚本和文件中的域/URL 列表就可以部分工作。您可以根据自己的喜好调整它。

注意:根据您的桌面环境,您可能需要对其他可执行文件重复此过程。例如,Gnome 有gvfs-open,KDE 有kde-open,XFCE 有exo-open。(即便如此,它也可能不适用于每个应用程序。)

注意: shell 脚本取决于pcregrep是否安装在您的系统上。

  1. 找到xdg-open可执行文件

    which xdg-open
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在您的主文件夹中创建一个新目录

    mkdir -p ~/.local/bin
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将以下内容添加到您的~/.bashrc文件中

    ~/.bashrc

    export PATH="${HOME}/.local/bin:${PATH}"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在新创建的文件夹中创建 shell 脚本。(请务必编辑前四个变量,以便它们适合您的系统!)

    ~/.local/bin/xdg-open

    #!/bin/bash
    
    DOMAIN_LIST_FILE=~/'domains.txt'
    OTHER_BROWSER='/path/to/other-browser' # For instance /usr/bin/firefox
    BROWSER_OPTIONS='' # Optional, for command line options passed to browser
    XDG_OPEN='/path/to/xdg-open'
    
    if echo "$1" | pcregrep -q '^https?://'; then
        matching=0
        while read domain; do
            if echo "$1" | pcregrep -q "^https?://${domain}"; then
                matching=1
                break
            fi
        done < "$DOMAIN_LIST_FILE"
    
        if [[ $matching -eq 1 ]]; then
            "$OTHER_BROWSER" $BROWSER_OPTIONS ${*}
            exit 0
        fi
    fi
    
    "$XDG_OPEN" ${*}
    
    Run Code Online (Sandbox Code Playgroud)
  5. 在您的主文件夹中创建域列表

    〜/域.txt

    stackexchange.com
    stackoverflow.com
    superuser.com
    
    Run Code Online (Sandbox Code Playgroud)
  6. 注销并重新登录以使设置生效

  • 如果您没有 pcregrep (无论那是什么:) ,请将 `pcregrep -q '^https?://'` 更改为 `grep -q '^http\?:\/\/'` (3认同)