web-dev-qa-db-ja.com

Linuxで特定のURLを特定のWebブラウザにリダイレクトする方法はありますか?

Ubuntu12.10のデフォルトブラウザとしてChromeを使用しています。ビジネス目的でFirefoxを使用する必要があります(私の仕事に関連する特定のWebサイトはFirefoxでのみ機能します)。Ubuntuを強制する方法はありますか? Chromeを他のすべてのタスクのデフォルトブラウザとして維持しながら、特定の種類のURL(おそらく通常の式で定義されている)にFirefoxを使用するには?おそらくバックグラウンドで実行されるシェルスクリプトとして?Iこれをシステム全体で機能させ、Chrome自体やPDF/ODTなどからのリンクをカバーします。

私は解決策を探しましたが、他のブラウザで特定のリンクを開くためのボタンを追加するFirefox拡張機能であるOpenWith以外に何も見つかりませんでした。これは、事前にFirefoxを開く必要があり、まったく役に立ちません。

誰かアイデアはありますか? Linuxの場合は Choosy のようなものですか?

4
jraxxo

「お気に入り」プログラムでリソースを開くLinuxの実行可能ファイルは、xdg-openと呼ばれます。やや複雑ですが、xdg-mime installを使用してルールを追加できます。ただし、特定のURLのようなものに対してこれを実行できるかどうかはわかりません。

これは、特定のデスクトップ環境がデフォルトのプログラムを開くために異なる実行可能ファイルとメソッドを使用するという点でさらに複雑になります。たとえば、KDEにはkde-openがありますが、すべてのKDEアプリケーションがこれを使用しているわけではないようです。

とにかく、シェルスクリプトとファイル内のドメイン/ URLのリストを使用するだけで、これは部分的に機能しました。あなたはそれをあなたの好みに微調整することができます。

注:デスクトップ環境によっては、mayが他の実行可能ファイルに対してこのプロセスを繰り返す必要がある場合があります。たとえば、Gnomeにはgvfs-open、KDEにはkde-open、XFCEにはexo-openがあります。 (それでも、すべてのアプリケーションで機能するとは限りません。)

注:シェルスクリプトは、システムにインストールされているpcregrepに依存します。

  1. xdg-open実行可能ファイルを見つける

    which xdg-open
    
  2. ホームフォルダに新しいディレクトリを作成します

    mkdir -p ~/.local/bin
    
  3. ~/.bashrcファイルに以下を追加します

    〜/ .bashrc

    export PATH="${HOME}/.local/bin:${PATH}"
    
  4. 新しく作成したフォルダにシェルスクリプトを作成します。 (システムに適したものになるように、必ず上位4つの変数を編集してください!)

    〜/ .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" ${*}
    
  5. ホームフォルダにドメインのリストを作成します

    〜/ domains.txt

    stackexchange.com
    stackoverflow.com
    superuser.com
    
  6. ログアウトしてから再度ログインすると、設定が有効になります

7
hololeap