QA@IT

ブラウザ(Firefox17.0.1)に表示される txmt://open?url=file://.. というリンクを emacsclient で開くには

3765 PV

ブラウザ(Firefox17.0.1)に表示される以下の txmt://open?url=file://.. というリンクを emacsclient で開くにはどうすればよいでしょうか。OS は Mac ではなく Ubuntu です。このようなリンクは、たとえば、Rails のデバッグツール better_errors.gem で生成されます。

txmt://open?url=file://%2Fhome%2Fm%2Frepo%2Ffoo%2Fapp%2Fviews%2bar%2bazs%2Findex.html.erb&line=233

https://gist.github.com/185188 で network.protocol-handler.external.txmt を true, network.protocol-handler.app.txmt にリンク先のスクリプトへのパスを設定したのですが、実際にリンクをクリックすると、"アドレスのプロトコルが不明です。txmt というプロトコルはどのプログラムにも関連づけられておらず、Firefox でこのアドレスを開く方法が分かりません。" というエラーになります。

回答

最近の Firefox では network.protocol-handler.expose.txmtfalse に設定すると「プログラムの選択」ダイアログが出てくるので、そこで設定するようです。

詳細は http://kb.mozillazine.org/Register_protocol に書いてあるのですが、 Linux の場合、以下のようなことになっているようです。

Firefox のバージョンに関わらず GNOME の設定を利用する環境の場合は

gconftool-2 -s /desktop/gnome/url-handlers/txmt/command '/path/to/app %s' --type String
gconftool-2 -s /desktop/gnome/url-handlers/txmt/enabled --type Boolean true

で設定するようです。しかし、試した限りではこの設定ではききませんでした。
Mac から ssh -X ubuntuマシン で接続して firefox & で起動して試していた環境のせいかもしれないので、一応書いておきます。

Firefox 3.5 以上 (GNOME なし) だと network.protocol-handler.expose.txmtfalse にすると次に txmt: のリンクをクリックした時に何で開くかきいてくるので、そこで設定します。(後で設定し直す場合は設定ダイアログのプログラムのところです。)
この環境では network.protocol-handler.external.txmtnetwork.protocol-handler.txmt も無視されるようで、設定も prefs.js ではなく mimeTypes.rdf に保存されていました。

Firefox 3.0 以下では network.protocol-handler.external.txmtnetwork.protocol-handler.txmt で設定する方法だったようです。

編集 履歴 (0)
  • ```
    ~/txmt:/open?url=file:/%2Fhome%2Fm%2Frepo%2Ffoo....bar.rb&line=10
    ```

    といったページを開こうとしてしまいますが、たしかに network.protocol-handler.expose.txmt の設定で、emacsclient が起動するようになりました。もうすこし調べてみます。ありがとうございました。
    -

Mac OS XならemacsのURLスキームを登録するツールがあるようです。

Open "Txmt:" URLs From Rails Backtraces Using Emacs on OS X
http://www.sanityinc.com/articles/open-txmt-urls-from-rails-in-emacs-on-osx/

未検証なので、恐縮ですがURLの紹介だけにさせて下さい。
ご参考になれば幸い。。。

編集 履歴 (0)
  • Ubuntu ユーザなのです。OS 情報を質問に追記しておきました。お手数をお掛けしてしまい、すみません。 -
  • お気になさらず^^ -
ウォッチ

この質問への回答やコメントをメールでお知らせします。