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

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

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

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

有人有什么想法吗?比如挑剔适用于 Linux?

答案1

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
    
  2. 在您的主文件夹中创建新目录

    mkdir -p ~/.local/bin
    
  3. 将以下内容添加到您的~/.bashrc文件中

    ~/.bashrc

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

    〜/ .local / bin / xdg-打开

    #!/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" ${*}
    
  5. 在您的主文件夹中创建域列表

    ~/域名.txt

    stackexchange.com
    stackoverflow.com
    superuser.com
    
  6. 注销并重新登录以使设置生效

相关内容