Mozilla の UI は、XUL (後述)、XBL (他のチュートリアルのトピック)、JavaScript、CSS、そしてイメージファイルで構成されています。XUL、XBL、JavaScript、CSS はテキスト形式のファイルで、テキストエディタがあれば編集できます。イメージファイルは GIF か JPG か PNG フォーマットのファイルで、編集するには画像編集プログラムが必要です。
次に、UI を構成するファイルは JAR アーカイブにまとめられます。これはただの ZIP ファイルの拡張子を変えたもので、「manifest」というファイルを含んでいます。これは、アーカイブの内容について書いてある特別なフォーマットのファイルで、Mozilla はこのファイルを読んで行うべき処理を決定します。
JAR アーカイブはバイナリファイルですが、Mozilla の UI はマシンコードにコンパイルされるわけではありません。Mozilla は、起動する度にその UI をアーカイブ中のファイルからビルドします。そのため、アーカイブ中のファイルを変更してアプリを再起動するだけで、変更点の確認ができます。このため、Mozilla の UI はコンパイルベースのアプリケーションより修正が簡単になっています。
Mozilla の UI ファイルは通常 JAR アーカイブに格納されていますが、代わりにアーカイブされていない形の UI ファイルを使うこともできます。これは、コードを修正する前にアーカイブからファイルを取り出したり、修正した後にアーカイブへファイルを追加したりする必要がないので、拡張機能の開発者にとってとても有効な手段です。最初に一度だけアーカイブを解凍する必要がありますが、それだけで後は好きなだけ変更ができます。
Mozilla を修正可能にするには、まず最初に unzip ユーティリティを使って アーカイブから UI ファイルを取り出します。次に Mozilla の UI ファイルのレジストリを修正し、オリジナルの JAR アーカイブの代わりに、取り出したファイルを使うように設定します。もし以下の説明でうまく動かない場合は、Patch Maker を試してください。このツールは、アーカイブからファイルを取り出し、Mozilla のレジストリを書き換えるパッチを作ってくれます。
アーカイブは Mozilla がインストールされているディレクトリの chrome
サブディレクトリに格納されています。unzip ユーティリティを使って、ディレクトリにある .jar 拡張子のファイルをすべて解凍しましょう。.jar
ファイルが配置されているのと同じディレクトリ (chrome
ディレクトリ) に解凍したか確かめてください。bash ライクなシェルがある Unix ライクな OS では、chrome
ディレクトリで次のコマンドを実行すれば、この作業は完了します。
for file in *.jar; do unzip $file; done
DOS のようなシェルを持つ OS では、次のコマンドを実行すれば作業完了です。
for %file in (*.jar); do unzip %file
【訳注: 】 そのディレクトリにあるプラットフォーム固有のファイル — en-mac.jar
、en-unix.jar
、そして en-win.jar
— については、使っているプラットフォームに対応した物だけ解凍してください。【訳注: 上記のコマンドを実行した場合は、自分の使っているプラットフォームに対応した .jar ファイルをもう一度解凍して、ファイルを上書き (プロンプトに A と答える) してください】
ファイルを解凍したら、オリジナルの JAR アーカイブの代わりに 解凍されたファイルを使うように Mozilla chrome レジストリを修正します。chrome レジストリとは、主要な Mozilla コンポーネントとその UI ファイルが chrome
ディレクトリのどこに配置されているかが書かれているファイルです。これは chrome
ディレクトリの chrome.rdf
と installed-chrome.txt
のどちらか (または両方) にあたります。
このレジストリには、JAR アーカイブ内のディレクトリを指す jar:resource:/chrome/SOMETHING.jar!/SOMETHING-ELSE...
という形の URL がいくつも含まれています。この URL が解凍したファイルを指すように、まず先頭の jar:
を取り除き、次に真ん中ぐらいの SOMETHING.jar!
という部分を取り除きます。もし Perl が使えるなら、次のコマンドで行うことができます。
perl -pi.orig -e 's/(jar:)|(\/[^.\/]+\.jar!)//g' chrome.rdf installed-chrome.txt
例えば、jar:resource:/chrome/comm.jar!/content/necko/
という URL は resource:/chrome/content/necko/
に変更されます。
ここまできたら、修正した Mozilla を起動してみましょう。元々入っている Mozilla ではなく、新しくインストールして修正した Mozilla を起動していること、もし Windows を使っていて「高速起動」機能を有効にしているのなら、それを終了させたことを確認してください。Mozilla が立ち上がり、普通の Web ブラウザウインドウが出てきたなら、Mozilla を修正できるようになりました! [mention that if you have Perl, you can also do this with Patch Maker]