Firefoxの拡張を書き換える
satoです。
Firefoxは様々な拡張がありますが、環境によって動かなかったり、キー操作が自分好みじゃなかったりする場合があります。
しかし拡張は意外と簡単に書き換えることができます。
※拡張を書き換える際は自己責任でお願いします。
・基礎知識
Firefoxの拡張であるxpi形式のファイルですが、実はzip形式で圧縮されたファイルを拡張子を変えただけです。
なので、適当なxpiをダウンロードして、拡張子をzipに書き換えて解凍してみると普通に解凍できます。
構成されているファイルはほとんどがテキスト形式なので、好きなエディタで編集することができます。
書き換えた後に、再度zip形式で圧縮し、Firefoxのアドオンウィンドウにドロップするとそのままインストールが可能です。
※自動でファイル名と同名のフォルダを作るような解凍ツールで解凍した場合は、自動で作られたフォルダを含めないで再圧縮してください。
・対応バージョンを書き換える
拡張の基本情報は、install.rdfに書かれています。
このファイルは、RSS等でおなじみのRDF形式のXMLファイルなので、XMLが読める方なら大体理解できると思います。
このファイルを見ると、
em:minVersion="1.5" em:maxVersion="2.0"
のような記述があると思います。これが対応バージョンの表記です。
例えば、Firefox3.0で動かすには、
em:minVersion="1.5" em:maxVersion="3.0.*"
のようにします。
このまま再圧縮するとFirefox3.0でも動く可能性がありますが、場合によってはFirefox自体が起動しなくなるようなケースもあるかもしれません。しかし非対応の拡張をどうしても使いたいという場合には有効だと思います。
ちなみに、Firefox3.0では拡張に関するセキュリティが強化されており、この方法で動くことは少ないと思います。動かす方法はありますが、今回は省略します。
・キーバインドを書き換える(Hit-a-Hintの例)
Firefoxのブラウザ内のリンクをキーボードのみで選択できるようになるHit-a-Hintという拡張があります。
キーボード派には非常に便利なのですが、デフォルトがスペースキーに割り当ててあるので、スペースキーでスクロールをしている場合には逆に不便になってしまいます。
昔はキーコンフィグ画面があったのですが、最近は何故かなくなってしまったようです。仕方がないので直接書き換えて見ます。(keyconfigという拡張を使う方法もありますが省略します)
Hit-a-Hintをzipとして解凍すると、chromeフォルダにchrome.jarというファイルがあります。
jarはJavaの圧縮形式ですが、これもzipと同じ形式です。なのでやはり拡張子をzipにして解凍します。
この中に、content\overlay.xulというファイルがあります。XML形式のファイルなので、テキストエディタで開きます。
開くと、
<key id="hahQuickToggle" key="l" modifiers="shift,accel" oncommand="hah.QuickToggle();" /> <key id="hahRegenHints" key="r" modifiers="shift,accel" oncommand="hah.RegenHints();" /> <key id="hahBlurFocused" key="j" modifiers="shift,accel" oncommand="hah.BlurFocused();" /><key id="hahStartKey" key="h" oncommand="hah.enterStartKey(event);" /> <key id="hahMagicKey" key=" " oncommand="hah.enterMagicKey(event);" />
<key id="hahBackspace" keycode="VK_BACK" oncommand="hah.enterBackSpace(event);" /> <key id="hahExitKey" keycode="VK_ESCAPE" oncommand="hah.enterExitKey(event, false);" /> <key id="hahEnterKey" keycode="VK_RETURN" oncommand="hah.enterExitKey(event, true);" />
のような記述が見えると思います。これがキーバインドそのものなので、直接編集して保存し、再度順番に圧縮していけば好きなキーバインドが出来上がります。
キーに関する詳細は、XUL:key - MDCを参照してください。
・まとめ
Firefoxの拡張は
-zip圧縮形式
-JavaScript
-XUL(XML)
でほとんどが構成されています。
ほとんどの環境で編集が可能なので、例えば日本語言語ファイルを作って公開なども簡単にできます。(公開する場合はライセンスに注意してください)
プログラミング環境としても面白いと思うので、興味のある方は拡張作成にも挑戦してみてください。