![有没有办法将某些 URL 重定向到 Linux 中的特定 Web 浏览器?](https://linux22.com/image/1389565/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%B0%86%E6%9F%90%E4%BA%9B%20URL%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20Linux%20%E4%B8%AD%E7%9A%84%E7%89%B9%E5%AE%9A%20Web%20%E6%B5%8F%E8%A7%88%E5%99%A8%EF%BC%9F.png)
我在 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
安装在您的系统上。
查找
xdg-open
可执行文件which xdg-open
在您的主文件夹中创建新目录
mkdir -p ~/.local/bin
将以下内容添加到您的
~/.bashrc
文件中~/.bashrc
export PATH="${HOME}/.local/bin:${PATH}"
在新创建的文件夹中创建 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" ${*}
在您的主文件夹中创建域列表
~/域名.txt
stackexchange.com stackoverflow.com superuser.com
注销并重新登录以使设置生效