mozex+greasemonkeyでfirefoxから直接2chブラウザを起動する
mozexとは、プロトコル・スキーマ*1ごとにアプリケーションを設定できるFirefoxの拡張機能です。telnetやsshだけではなく、FTPクライアントやダウンローダー、HTML内のTEXTAREA部分でエディタを指定できたりします。また独自のプロトコル・スキーマを設定することも出来ます。
今回はその機能を使って2chのスレッドあるいは板のURIから、2chブラウザを直接起動させたいと思います。
最初に断っておきますが、2chブラウザはJane Doe Styleを使います。Live2chでも何とかならないかと頑張りましたが、できませんでした。その顛末は後述します。ホットゾヌやかちゅ〜しゃなども、おそらく無理だと思います。
まず、mozexをインストールしてください。mozdev.org - mozex: developmentからインストールできます。インストールしたら、再起動して拡張機能の設定を開いてください。そして、Universalタブをクリックし、Comma separated list of protocol schemesに h2chb 、Command (with no arguments)にJaneDoeStyleの実行ファイルの絶対パスを入れてください。*2
これで、mozexの設定は終りです。次はgreasemonkeyスクリプトをインストールします。このスクリプトは、2chの板やスレッドのURIをhttp://...からh2chb://...に変えるものです。また、2chブラウザ起動のためのリンクも生成します。こちら(4718.user.js)からインストールしてください。
// ==UserScript== // @name hop 2ch for Jane Style // @namespace http://d.hatena.ne.jp/Koumei_S/ // @description helps to make link to Jane (Doe) Style[2ch browser] at firefox with mozex[firefox extension]. // @include * // @exclude http://menu.2ch.net/bbsmenu.html // @version 1.0 // ==/UserScript== (function(){ if(location.host.match(/([^(info|irc|movie|shop|epg|find)]\.2ch\.net)|(\.bbspink\.com)|(machi\.to)$/)){ var linktojs = document.createElement("a"); var Strboardorthread; linktojs.setAttribute('href',location.href); linktojs.protocol='h2chb:'; if(is2chboard(location.pathname)){ Strboardorthread = '\u677f';//板 } else{ Strboardorthread = '\u30b9\u30ec\u30c3\u30c9';//スレッド } linktojs.innerHTML='<span style="color:#000000;font-weight:bold;">\u3053\u306e' + Strboardorthread + '\u3092Jane Style\u3067\u8868\u793a\u3059\u308b</span><br>'; //この(スレッド|板)をJane Styleで表示する document.body.insertBefore(linktojs,document.body.firstChild); } for(i=0;i<document.links.length;i++){ var link = document.links[i]; if(link.host.match(/([^(info|irc|movie|shop|epg|find)]\.2ch\.net)|(\.bbspink\.com)|(machi\.to)$/)){ link.protocol='h2chb:'; link.innerHTML = link.innerHTML.replace(/^http:/,"h2chb:"); } } })(); function is2chboard(Strpathname){ return Strpathname.match(/^\/.*\/$/); }
これで使えるようになります。あとは2chを開けば、左上にリンクが現われるので、それをクリックするとJane Doe Styleが起動します。もしくは2chへのリンクを開いても同じです。スクリーンショットを採りましたので、是非ご覧下さい。
hop 2ch作成中に気づいたこと
これもメモしておきます。
linkobject.setAttribute('href','2chb://' + location.host + '/');
ならばlinkobjectのhrefパラメータには、2chb://that.2ch.net/が入りそうなものだが、実際はhttp://that.2ch.net/2chb://that.2ch.net/というパラメータが入る。なぜか強制的にhttpから始まるようになる。2chb://ではなく、アルファベッドで始めるならば特に問題はない。RFCに規定があるのか?それともMozilla独自にやっているのか?
- 本当は拡張機能を使わないでやるつもりだった。http://www.xdelta.net/blog/FreeBSD/2006/01/24/p131やMozilla Suite : Issues : Integration - MozillaZine Knowledge Baseを参照しながら、about:configからprefs.jsをいじってやるつもりだったがなぜかできない。network.protocol-handler.appは勿論のこと、network.protocol-handler.expose,network.protocol-handler.external等もtrueにしたのだが。