現在、当サイト「mozilla.org 日本語版」の和訳文書は更新されておらず、mozilla.org の原文 よりも内容が古くなっている可能性があります。ご不便をお掛けしますが、最新の情報は原文をご確認ください。



Mozilla のカスタマイズ

このドキュメントの目的は、ユーザの好みにあわせてカスタマイズできる、あまり文書化されていない Mozilla の機能の一部について、いくつかのヒントを提供することです。

ここに載っているテクニックのほとんどがクロスプラットフォームです。このドキュメントが mozilla.org ドキュメントツリーの中でどこの URL にあるかということに惑わされないでください。(訳注: このドキュメントは unix ディレクトリにありますが、ここで扱っている Mozilla のカスタマイズは、プラットフォームに関係なく利用できるということです)

このドキュメントで扱っているトピックの一部です:

Mozilla をカスタマイズするその他の方法には 設定可能なセキュリティポリシー もあります。


ユーザ CSS (フォント、色、その他のスタイルの変更)

Mozilla のフォントや色の大部分は CSS (カスケーディングスタイルシート) によって管理されています。

これは Mozilla の chrome ディレクトリにある .css ファイルで設定されていますが、ユーザは userContent.cssuserChrome.css と呼ばれる 2 つのファイルでこれをオーバーライドすることができます。これらのファイルをユーザのプロファイルディレクトリ直下にある chrome サブディレクトリに置いてください。userChrome.css は Mozilla アプリケーションの UI クロームに関する CSS を管理し、userContent.css はウィンドウ内のコンテンツに関する CSS を管理します。

userChrome.css

これは userChrome.css で変更可能なものの一例です。

/* ダイアログやその他様々なテキストのフォントサイズ・フォントファミリーを設定 */
window {
  font-size: 3.5mm !important;
  font-family: helvetica !important;
}

/* Sidebar をウィンドウの右端に配置する */
window > hbox {
  direction:rtl;
}
window > hbox > * {
  direction:ltr;
}

/* パーソナルツールバー */
/*
 * 注意: パーソナルツールバー上のアイコンに影響を与えるルールは、フォルダコンテンツには当てはまりません。
 * これらは「ブックマークメニュー」のルールによって制御されています。
 */

/* パーソナルツールバーにあるブックマークアイコンを消す */
toolbarbutton.bookmark-item > .toolbarbutton-icon {
  display: none;
}

/* 他の手段: */
/* ブックマークフォルダのアイコンだけを選択する */
/*
.bookmark-item[type="menu"] > .toolbarbutton-icon {
  (ここに何か書きます)
}
 */

/* タブグループのアイコンだけを選択する */
/*
.bookmark-item.bookmark-group > .toolbarbutton-icon {
  (ここに何か書きます)
}
 */

/* 例: 普通のブックマークに付いているアイコンを消すだけなら */
/*
.bookmark-item:not(.bookmark-group):not([type="menu"]) > .toolbarbutton-icon {
  display: none;
}
 */

/* アイコンなし操作のための視覚的補助 */

/* タブグループのブックマークを斜体・茶色にする */
.bookmark-group > .toolbarbutton-text {
  font-style: italic;
  color: brown;
}

/* ブックマークフォルダを太字・濃紺色にする */
.bookmark-item[type="menu"] > .toolbarbutton-text {
  font-weight: 900;
  color: navy;
}

/* ブックマークメニュー */

/* ブックマークメニューの中にある「普通の」ブックマークアイコンを消す */
menuitem.bookmark-item > .menu-iconic-left {
  display: none;
}

/* その他の例: */

/* ブックマークメニューの中にあるブックマークフォルダのアイコンを消す */
menu.bookmark-item > .menu-iconic-left {
  display: none;
}

/* ブックマークメニューの中にあるブックマークグループのアイコンを消す */
menuitem.bookmark-group > .menu-iconic-left {
  display: none;
}

/* アイコンを消したブックマークメニューアイテムをデザインする (パーソナルツールバーのスタイルをまねする) */
/* ブックマークフォルダ */
menu.bookmark-item {
  color: navy !important;
  font-weight: 900 !important;
}

/* タブグループのブックマーク */
menuitem.bookmark-group {
  color: brown !important;
  font-style: italic !important;
}

/* 以下のようにすれば普通のブックマークを選択できます */
/*
menuitem.bookmark-item {
  (ここに何か書きます)
}
*/

/* タブブラウザのタブ */

/* タブブラウザのアイコンを消す */
/* 注意: いくつかのテーマでは、タブ並びの中に空白の縦方向の余白がいくつか残ってしまいます */

/* 常にすべてのタブアイコンを消す */
/*
.tabbrowser-tabs .tab-icon {
  display: none;
}
 */

/* 代わりに、デフォルトのタブブラウザアイコンだけを消す (それぞれの Web サイトが指定するアイコンは消さない) */
.tabbrowser-tabs *|tab:not([image]) .tab-icon {
  display: none;
}

/* タブの上にマウスが乗ったとき (常に) アイコンを表示 */
/*
.tabbrowser-tabs *|tab:hover .tab-icon {
  display: -moz-box;
}
 */

/* タブがロードされている間タブロードインジケータを表示 */
/*
.tabbrowser-tabs *|tab[busy] .tab-icon {
  display:-moz-box;
}
*/

/* タブ読み込み中にタブ読み込みインジケーターを表示 */
/*
.tabbrowser-tabs *|tab[busy] .tab-icon {
  display:-moz-box;
}
*/

/* タブのタイトルを 10 パーセント小さくする */
.tabbrowser-tabs .tab-text {
  font-size: 90%;
}

/* エディタ、メール ツールバーにある大きなアイコンを消す (bug 78843/94581) */
.toolbar-primary-icon {
  visibility: collapse;
}

/* メニューを大きくさっぱりと読みやすくする (昔の SGI 風)
 * menubar は 12 月 19 日以降のビルドでは使われていませんが、Netscape 6 には必要とされます。
 * 他のものは 12 月 19 日以降のビルドでも有効です。
 */
menubar, menubutton, menulist, menu, menuitem {
  font-family: helvetica !important;
  font-style: italic !important;
  font-weight: bold !important;
  font-size: 4mm !important;
}

/* 次の 2 つは「スライダー」としても「スクロールバー」としても動きません。
 * どうやらスクロールバーのサイズは、上下左右の矢印に使われている画像によって
 * 制御されているようです。
slider {
  height: 20px !important;
}
slider[align="vertical"] {
  width: 20px !important;
}
*/

/* 1 行のテキストフィールド */
input {
  /* テキストフィールドのフォントサイズ・フォントファミリーを設定 */
  font-family: clean !important;
  font-size: 13px !important;

  /* 背景色をちょっとさっぱりしたものに設定 */
  background-color: rgb(200, 255, 220) !important;

  /* キーバインディングを追加する
   * この方法の説明については「カスタムキーバインディング」以下をご覧ください。
   */
  -moz-binding: url("resource:///res/builtin/myHTMLBindings.xml#myInputFields") !important;
}

/* 複数行のテキストエリア */
textarea {
  background-color: rgb(200, 255, 220) !important;
}

/* ドロップダウンアドレスやオートコンプリート (自動補完) ウィンドウは灰色になっています。
 * これらを URL フィールドとより調和させ、もっと Netscape 4.x のようにするには:
 */

/* URL ドロップダウンボックス */
#ubhist-popup {
  background: white !important;
  border: 1px solid black !important;
  padding: 0px !important;
}

/* オートコンプリート (自動補完) テキストフィールド */
.textfield-popup {
  background: white !important;
  border: 1px solid black !important;
}

#ubhist-popup > .popup-internal-box, .textfield-popup > .popup-internal-box {
  border-left: 1px solid white !important;
  border-top: 1px solid white !important;
  border-right: 1px solid white !important;
  border-bottom: 1px solid white !important;
}

/* ツールチップにボーダーライン (1px) を追加 */
.tooltip-label {
  border: 1px solid !important;
}

/* メール
 *
 * メールウィンドウでこの他に変更できるものを見つけるには、
 * themes/modern/messenger 以下のソースツリーにあるファイルをご覧ください。
 */

/* メッセージペインのサブジェクトに使われているフォントを指定
 * (太字、固定幅フォントで幅が広すぎるので)
 */
.subjectvalue {
  font-family; helvetica !important;
  font-weight: normal !important;
}

/* スレッドとフォルダペインを読みやすくする */
treechildren {
  font-size: 14px !important;
}

/* メール & ニュース メッセージ (3 つの分割ウィンドウの右上にある部分ウィンドウ) の
 * 背景色を灰色から白色に変更
 */
outliner {
  background-color: white !important;
}

/* Chatzilla のステータスエリア */
.status-label {
  color: yellow !important;
}
.status-data {
  color: white !important;
}

userContent.css

これは userContent.css で変更可能なものの一例です。

/* ドロップダウンフォームの周りすべてに Netscape 4.x のように細い黒線を付ける */
:-moz-dropdown-list {
  border: 1px solid black !important;
  border-top-style: solid !important;
}

/* marquee の表示を無効にする */
marquee {
  -moz-binding: none; display: block; height: auto !important;
  /* これはただ display:none !important; とするよりもいいと思います。
   * なぜなら、こうすると今まで通り marquee の中にテキストが見え、
   * しかもスクロールをさせないですむのです。
   */
}
/*

/*
 * bug 103843/105547 が修正されるまで、新しいウィンドウを
 * ポップアップする一部のリンクをハイライトさせる便利な代替策:
 */
:link:hover[target="_blank"],:visited:hover[target="_blank"] {
  color: white !important; background: red !important;
}
:link:hover[target="_new"],:visited:hover[target="_new"] {
  color: white !important; background: red !important;
}

/*
 * 以下は Chatzilla 用です:
 */

/* Chatzilla のコンテンツエリアすべてのデフォルト */
.output-window {
  background: #555 !important;
  color: white !important;
  font-weight: bold !important;

  /* CSS シンタックスのテスト用:
  border-style: solid;
  border-width: thick;
  border-color: #0f0 !important;
   */
}

/* 自分が打ったメッセージ */
.msg-data[msg-user$="ME!"] {
  color: orange !important;
  background: #555 !important;
}

/* 自分以外のすべての人のメッセージを違う色にすることができます。
 * これによって会話が追いやすくなります。
 */
.msg-data[mark="odd"] {
  color: white !important;
  background: #666 !important;
}

/* 直接自分に対するメッセージ */
.msg-data[important] {
  color: yellow !important;
  /* background: gray !important; */
}

/* 参加者がチャンネルを出たときのメッセージ */
.msg-data[msg-type="QUIT"] {
  background: #444 !important;
  color: yellow !important;
}

/*
 * メールメッセージでは、ユーザが指定したスタイルが無視されます。
 * 詳しくは http://bugzilla.mozilla.org/show_bug.cgi?id=18427 をご覧ください。
 */
.moz-text-html font, .moz-text-html div, .moz-text-html body {
  font-size: inherit !important;
  font-family: inherit !important;
  color: inherit !important;
  background-color: inherit !important;
  background-image: inherit !important;
  text-align: inherit !important;
  text-indent: inherit !important;
}

Linux でフォントをもっと読みやすくする

多くの Linux 製品がフォントに関する問題を抱えています。特に、多くの Web ページに使われている Arial は、かたまりのよう見えて、要求されたサイズより小さいフォントになってしまうでしょう。

(その問題に関する) 議論の全文は bug 46415 にありますが、Redhat ユーザにとっての簡単な解決策はこのようになります:

読みにくい「Arial」フォントを使ったページを見つけたら - 例えば、この Arial font が、この段落にある他のテキストより小さく見えたり読みにくければ (訳注: この Verdana font と比べてみてください。よく分からなければ 原文 (英語) を参照してください) - 次のコマンドを試してください。

mv /usr/share/fonts/ISO8859-2 /usr/share/fonts.ISO8859-2

そして X からログアウトし、再度ログオンしてください。

必要ならば、次のコマンドでいつでもこれを取り消すことができます:

mv /usr/share/fonts.ISO8859-2 /usr/share/fonts/ISO8859-2

このあいまいな Linux フォントに関する優れた議論 も読むだけの価値があります。


キーバインディング

Mozilla キーバインディングの背景にあるいくつかの理論

(私は理論には関心がありません、コピーできる例だけ見せてください という方はこちらへスキップしてください)

修飾キー: アクセルキー

Mozilla は、クロスプラットフォームアプリケーションとして、異なるプラットフォーム上で別々の修飾キー (modifier key) を扱わなければなりません。Windows は Control キーをそのバインディングの大部分に使っています (例えば Ctrl + Q でアプリケーションを終了します)。Mac は Command キーを使っています (Cmd + Q は Windows における Ctrl + Q と同じ働きをします)。Unix は伝統的に Alt キーを使っています。なぜなら、Unix のアプリケーションは Control に Mozilla のウィンドウバインディングと矛盾する、他のバインディングを持っているからです。しかし、Windows バックグラウンドを持つ一部の Linux ユーザは Control を使いたいと思っています (Control はデフォルトです。理論上 Alt キーを好む人はたいてい経験豊富なユーザです)。そこで Mozilla では、ウィンドウバインディングに使われる修飾キーを アクセル (accel)キー と呼び、それは変更可能なものとなっています。

アクセルキーは 2 つの設定の組み合わせによって変更されます (隠し設定を付ける方法についての情報は 「設定」の項目 をご覧ください。) キーの値は nsIDOMKeyEvent.idl による VK_CONTROL と VK_ALT と VK_META ですが、残念なことに prefs ファイルでは (まだ) 記号は動きません。そこで、17 を Alt に、18 を Control に、 224 を Meta (あるいは Mac では Command) に、それぞれの数を使う必要があります。

ui.key.accelKey
整数: 第一アクセレータ修飾キーを設定します
ui.key.menuAccessKey
整数: メニューアクセスキーを設定します
ui.key.menuAccessKeyFocuses
ブール: 設定すると、メニューアクセスキーを押したときに、フォーカスがメニューシステムに移って、1 番目のメニュー (ふつうは [ファイル]) を強調表示します。これは、一部の Unix Window マネージャでは問題を起こすので、Unix ではデフォルトでオフになっています。
ui.key.generalAccessKey
整数: Web ページ内で使用するアクセスキーを設定します (これに関する議論は bug 128452 をご覧ください)

もっと具体的な例を挙げると、Unix ユーザは、アクセルキーを Alt に変えて、(Netscape 4.x のように) Alt によるメニューアクセスをオフにすると、これを実現できます。

user_pref("ui.key.accelKey", 18);
user_pref("ui.key.menuAccessKey", 0);

Mozilla ではキーバインディングがどのように働くか

Mozilla のキーバインディングは 2 つのメカニズム - XULXBL によって処理されます。XUL バインディングは XBL バインディングをオーバーライドすることもあります。これはバグ (bug 77976) として知られています。

XUL ベースのコマンドにカスタムキーバインディングを作成するには、mozilla/chrome/comm.jar ファイルを展開して、適切なバインディングを追加あるいは編集し、新たに comm.jar ファイルを圧縮してください。(XUL アクセレータのリバインドを簡単にする作業の経過については bug 102993 をご覧ください) このセクションの残りの部分では、カスタム XBL バインディングについて説明します。

Mozilla のデフォルト XBL バインディングは「****Bindings.xml」のような名前で chrome ファイルに入っています。特に、テキストフィールドやテキストエリア、ブラウザウィンドウ、エディタウィンドウ用のバインディングは htmlBindings.xml に入っています。さらに、プラットフォーム独自のバインディングがあり、それは platformHTMLBindings.xml ファイルに入っています。これらには、Unix の Emacs 風のテキスト編集キー、Windows の異なったスクロール処理、Mac の「やり直し」のための異なったバインディング、といったものが含まれています。

その他のウィンドウ用のキーバインディングが含まれたファイルには、treeBindings.xmltabBindings.xmlradioBindings.xml といったものがあります。私はメールウィンドウ用のバインディングがどこにあるのか知りません。これを見かけて知っている誰かがこのドキュメントを更新してくれることを望んでいます。

通常の Mozilla インストールでは、htmlBindings.xmlplatformHTMLBindings.xml ファイルは、インストールディレクトリの res/builtin 以下にあります。これらのファイルはそこで見ることができます。また、これらのファイルを編集して、独自のバインディングを追加することも可能です。

キーバインディングの典型的なセットはこのようなものです (分かりやすく編集してあります):

  <binding id="inputFieldsBase">
    <handlers>
    <!-- コピーをアクセルキー C に設定 -->
    <handler event="keypress" id="key_copy" key="c" modifiers="accel"
        command="cmd_copy"/>

    <!-- 左向きの矢印キー -->

    <handler event="keypress" id="key_left" keycode="VK_LEFT"
        command="cmd_charPrevious"/>

    </handlers>
  </binding>

これは 2 種類のキーハンドラを表しています。どちらも keypress イベントで働きます。(keydownkeyup イベントを扱うこともできますが、自分が何をしているのか知らない限り、これらは一般的にお勧めできません。)

1 番目のハンドラは コピー コマンドをアクセルキー C に関連付けています。キーを表示可能なアスキー文字で表すには、key= に続けて普通の文字を使ってください。アクセルキー は現在お使いのプラットフォームで第 1 位の修飾キーです。デフォルトの状態では、これは、Windows や Unix では Control に、Mac では Command に関連付けられていますが、別のキーを定義することもできます (下の アクセルキーの変更 をご覧ください)。その他に使用できる修飾キーには Control、Alt、Shift があり、最終的には Meta も含まれるでしょう (Meta はまだすべてのプラットフォームで実装されていません)。修飾キーはカンマで区切られます。例: modifiers="alt,shift"

2 番目のハンドラは キーコード 記号を使っており、表示不可能なアスキーではないキーが使われています。キー記号のリストは nsIDOMKeyEvent.idl にあります (キーコード名から DOM_VK_prefix を除いてください)。表示可能なアスキー文字の多くに相当するキーコードが一般的にあるということに気が付くでしょう。これら (例: keycode="VK_A") を使うことは強く思いとどまるべきですが、将来的にこれらの文字はなくなると思われます。これらの文字を使う唯一の理由は、keypress 以外のイベントに関するバインディングを定義することですが (keypress のみアスキーのキー値を返します)、これらを使う理由は現在のところありません。

カスタムキーバインディングの設定: サンプル

キーバインディングは、XBL の部品 (テキストフィールドやテキストエリアなど) か、ウィンドウ全体 (ブラウザウィンドウや Composer ウィンドウなど) かの、どちらのバインディングを設定するかによって、2 通りの方法で設定されます。

Mozilla ウィンドウのカスタムキーバインディング

userHTMLBindings.xml は壊れているようです。bug 201011 をご覧ください。以下のセクションは、このファイルの本来の働きを説明したものです:
エディタ、ブラウザウィンドウについては、userHTMLBindings.xml と呼ばれるファイルを作成し、Mozilla がインストールされているディレクトリにある res/builtin ディレクトリにそれを関連付けてください。(最終的に、私たちはこれをユーザの chrome ディレクトリに入れたいと思っていますが、まだこれは動作しません。この問題の解決への動きは bug 12911 をご覧ください。今のところは、あなたの chrome ディレクトリに本物のユーザバインディングファイルを保存し、そこから res/builtin ディレクトリへのシンボリックリンク (Windows ではショートカット、Mac ではエイリアス) を張ることをお勧めします。bug 201011 が修正されるまで、Mozilla のインストールディレクトリにある res/builtin/platformHTMLBindings.xml ファイルを編集して、個々のキーバインディングを追加・変更することで対応できます。

これは userHTMLBindings.xml のサンプルです:

<?xml version="1.0"?>

<!-- 正しく動かすためには、このファイルは Mozilla ツリーの中で -->
<!-- res/builtin/userHTMLBindings.xml という名前を付けられなければなりません。 -->

<bindings id="htmlBindings"
   xmlns="http://www.mozilla.org/xbl"
   xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <binding id="editorUser">
    <handlers>
      <handler event="keypress" key="w" modifiers="control"
       command="cmd_deleteWordBackward"/>
    </handlers>
  </binding>

  <binding id="browserUser">
    <handlers>
      <handler event="keypress" keycode="VK_BACK"
       command="cmd_scrollPageUp"/>
      <handler event="keypress" key="v" modifiers="alt"
       command="cmd_scrollPageUp"/>
      <handler event="keypress" key="v" modifiers="control"
       command="cmd_scrollPageDown"/>
    </handlers>

  </binding>

</bindings>

各部品のカスタムキーバインディング

テキストフィールドやテキストエリアといった部品については、myHTMLBindings.xml と呼ばれるファイルを作成し、それを res/builtin ディレクトリに置いてください。

myHTMLBindings.xml とは次のようなものです:

<?xml version="1.0"?>

<!-- 正しく動かすためには、このファイルは Mozilla ツリーの -->
<!-- res/builtin ディレクトリに置かなければなりません。 -->

<bindings id="htmlBindings"
   xmlns="http://www.mozilla.org/xbl"
   xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <binding id=myInputFields
   extends="resource:///res/builtin/platformHTMLBindings.xml#inputFields">

    <handlers>

    <handler event="keypress" key="g" modifiers="control"
        command="cmd_deleteWordBackward"/>
    <!-- (上の例を参考にして、好きなバインディングをここに挿入してください) -->

    </handlers>
  </binding>

</bindings>

ただし、部品については特別な手順があります。myHTMLBindings は自動的に認識されません。そのため、あなたの user.css ファイル (プロファイルディレクトリの chrome サブディレクトリにあります) に以下の行を追加する必要があります (これは、カスタムバインディングをプロファイルごとに分けて設定しなければならないということですので、気を付けてください)。

input {
  /* キーバインディングをいくつか追加します */
  -moz-binding: url("resource:///res/builtin/myHTMLBindings.xml#myInputFields") !important;
}

カスタムキーバインディングに使われる合法的なコマンド

キーバインディングではどんなコマンドが合法なのでしょうか? ウィンドウ内のコマンドハンドラで登録されているあらゆるものを使うことができます。ここに利用可能なコマンドの一部を挙げます。

nsDomWindowController コマンド (抜粋があるものは一般的に合法です)

  • cmd_copy
  • cmd_cut
  • cmd_paste
  • cmd_selectAll
  • cmd_selectNone
  • cmd_copyLink
  • cmd_copyImageLocation
  • cmd_copyImageContents
  • cmd_scrollTop
  • cmd_scrollBottom
  • cmd_scrollPageUp
  • cmd_scrollPageDown
  • cmd_scrollLineUp
  • cmd_scrollLineDown
  • cmd_scrollLeft
  • cmd_scrollRight
  • cmd_selectCharPrevious
  • cmd_selectCharNext
  • cmd_wordPrevious
  • cmd_wordNext
  • cmd_selectWordPrevious
  • cmd_selectWordNext
  • cmd_beginLine
  • cmd_endLine
  • cmd_selectBeginLine
  • cmd_selectEndLine
  • cmd_selectLinePrevious
  • cmd_selectLineNext
  • cmd_selectPagePrevious
  • cmd_selectPageNext
  • cmd_selectMoveTop
  • cmd_selectMoveBottom

エディタ コマンド (フォーカスがテキストを打てるところにあるときは合法です)

  • cmd_paste
  • cmd_pasteQuote
  • cmd_delete
  • cmd_deleteCharBackward
  • cmd_deleteCharForward
  • cmd_deleteWordBackward
  • cmd_deleteWordForward
  • cmd_deleteToBeginningOfLine
  • cmd_deleteToEndOfLine
  • cmd_delete
  • cmd_deleteCharBackward
  • cmd_deleteCharForward
  • cmd_deleteWordBackward
  • cmd_deleteWordForward
  • cmd_deleteToBeginningOfLine
  • cmd_deleteToEndOfLine
  • cmd_scrollTop
  • cmd_scrollBottom
  • cmd_moveTop
  • cmd_moveBottom
  • cmd_selectTop
  • cmd_selectBottom
  • cmd_lineNext
  • cmd_linePrevious
  • cmd_selectLineNext
  • cmd_selectLinePrevious
  • cmd_charPrevious
  • cmd_charNext
  • cmd_selectCharPrevious
  • cmd_selectCharNext
  • cmd_beginLine
  • cmd_endLine
  • cmd_selectBeginLine
  • cmd_selectEndLine
  • cmd_wordPrevious
  • cmd_wordNext
  • cmd_selectWordPrevious
  • cmd_selectWordNext
  • cmd_scrollPageUp
  • cmd_scrollPageDown
  • cmd_scrollLineUp
  • cmd_scrollLineDown
  • cmd_movePageUp
  • cmd_movePageDown
  • cmd_selectPageUp
  • cmd_selectPageDown

Composer コマンド (Composer のような HTML エディタにフォーカスがあるときは合法です) ここには挙げられていません。これは XBL バインディングからテストされていないためですが、理論上は動くはずです。

ブラウザのコマンドは、どの集中ロケーション (記憶場所) でも定義されていません。これらは以下のものを含む、多くのファイルに散在しています (「cmd_」あるいは「Browser:」で始まる文字列を探してください)。 linkToolbarOverlay.xulnavigator.jsnavigatorOverlay.xulpersonalToolbar.jsviewSourceOverlay.xulcontentAreaContextOverlay.xulutilityOverlay.jsviewZoomOverlay.xulplatformCommunicatorOverlay.xulbookmark.propertiesbookmarks-temp.jsbookmarks.xmlbookmarksOverlay.xulbookmarksTree.js

メール & ニュースのコマンドは以下のファイルに散在しています (こちらも、「cmd_」で始まる文字列を探してください)。 abCommon.jsaddressbook.xulcommandglue.jsmail3PaneWindowCommands.jsmailABOverlay.xulmailContextMenus.jsmailEditorOverlay.xulmailNavigatorOverlay.xulmailOverlay.xulmailWindowOverlay.jsmailWindowOverlay.xulmessageWindow.jsmessenger.xulplatformMailnewsOverlay.xulSearchDialog.jsMsgComposeCommands.jsmessengercompose.xulmsgCompSMIMEOverlay.js

もしどなたかブラウザやメール & ニュースのコマンドを調べる時間があって、きちんとしたリストを作っていただければ、それは大いに評価され、うれしいことに、このドキュメントの次の改訂に含まれるでしょう。


その他の便利な設定

はじめに、注意: 以下の設定 (prefs) は、たいてい [設定] ダイアログにユーザインターフェイスがありませんので、設定ファイルを編集して定義する必要があります。通常の設定は、ユーザのプロファイルディレクトリにある pref.js に保存されています (設定が変更されるたびに Mozilla によって上書きされます) が、ヒントとして: 上書きしたくない設定や JavaScript (たとえばコメント) は、同じディレクトリにある user.js と呼ばれるファイルに入れておくことができます。このファイルはユーザの管理下にあり、Mozilla に読み込みはされますが、上書きされることはありません。

user.js を使うときの注意: user.js でデフォルトと異なる値を定義された設定は prefs.js にも書き込まれます。そのため、user.js にある設定を削除したりコメントアウトしたりしても、当然 Mozilla が以前の設定を使うのをやめさせることにはなりません。もし user.js を変更したのに期待した結果が得られないときは、必ず prefs.js をチェックして、矛盾した値が定義されていないかどうか確かめてください。

ここに私が便利だと思っているいくつかの設定を挙げます。これは私が user.js で設定しているものです。アドレスバーに about:config と入力すれば、利用できる設定の完全なリストや、それらの現在の設定を見ることができます。

//
// user.js: Mozilla が上書きしない個人設定
//

////////////////////////////////////////////////////////////
// イライラを止める
////////////////////////////////////////////////////////////

// テキストの点滅を消す
user_pref("browser.blink_allowed", false);

// アニメーション画像モード: 標準、1 回のみ、なし
// この設定は現在 [プライバシーとセキュリティ] > [画像] に UI があります。
user_pref("image.animation_mode", "once");

// 現在のサーバから送られていない画像をブロックするための設定 UI を表示
// これは Mozilla ではデフォルトで表示されるようになっています。
user_pref("imageblocker.enable", true);

// イライラさせるオートコンプリート (自動補完) ポップアップを完全に消す
// (実際には UI があるのですが隠されています)
user_pref("browser.urlbar.autocomplete.enabled", false);
user_pref("browser.urlbar.showPopup", false);
user_pref("browser.urlbar.showSearch", false);

// ダウンロードマネージャを消す (0 = ダウンロードマネージャ、1 = シンプルなダイアログ?)
user_pref("browser.downloadmanager.behavior", 1);

// marquee タグを有効にする (デフォルトでは無効になっています):
user_pref("browser.display.enable_marquee", true);

////////////////////////////////////////////////////////////
// プラットフォームパリティ、UI の問題
////////////////////////////////////////////////////////////

// キーの変更: bug 22515 参照
// Motif 式のアクセスキー
user_pref("ui.key.accelKey", 18);
user_pref("ui.key.menuAccessKey", 0);
//user_pref("ui.key.menuAccessKeyFocuses", false);

// Windows 式のアクセスキー
//user_pref("ui.key.accelKey", 17);
//user_pref("ui.key.menuAccessKey", 18);
//user_pref("ui.key.menuAccessKeyFocuses", true);

// これをコメントアウトすると Unix 式の自動コピーが無効になります。
// (非 Unix プラットフォームでは、これを true にすると自動コピーが有効になります)
//user_pref("clipboard.autocopy", false);

// 中ボタン付きマウスの設定:
// Unix ではデフォルトで true に、その他のプラットフォームでは false になっています。
user_pref("middlemouse.paste", false);
user_pref("middlemouse.openNewWindow", true);
user_pref("middlemouse.contentLoadURL", false);
user_pref("middlemouse.scrollbarPosition", false);

// 新しい行を貼り付けたときの動作:
// 0 = 変更せず貼り付け、1 = 1 行目だけ貼り付け、2 = 空白に置き換え、3 = 新しい行を削除
//user_pref("editor.singleLine.pasteNewlines", 0);

// Netscape 6 ブランチのバグ:
// Unix ではフレームスタイルのドラッグアウト設定が初期化されません。
// そのため、テキストの 1 行下をドラッグしても、行の終わりで選択範囲が途切れません。
//pref("browser.drag_out_of_frame_style", 1);

////////////////////////////////////////////////////////////
// UI ルック & フィールの問題
////////////////////////////////////////////////////////////

// タブフォーカスモデル ビットフィールド:
// 1 = テキストコントロールをフォーカス、2 = 他のフォーム要素をフォーカス、
// 4 = リンクを追加
// ほとんどのユーザは 1、3 あるいは 7 が必要でしょう。
user_pref("accessibility.tabfocus", 1);

// これ以下のサイズのフォントを表示しない: bug 30910 参照
// これは新しいクロスプラットフォームの設定です。
// 古い Unix 専用の font.min-size 設定が軽視されていますが、まもなく取り除かれるでしょう。
// 今はこの設定のための UI があり、[表示] > [フォント] で見ることができます。
user_pref("font.minimum-size.x-western", 13);

// あるフォントの表示を禁止する: bug 104075 参照
// すべての Arial フォントを禁止します。なぜなら AbiWord は見にくいフォントを
// インストールし、それらはとても使えるいいフォントとは思えないからです。
user_pref("font.x11.rejectfontpattern", "fname=.*arial.*");

// rejectfontpattern 用のいくつかの代替書式:
// Some alternate forms for rejectfontpattern:
// "fname=.*arial.*;scalable=.*;outline_scaled=.*;\
// xdisplay=.*;xdpy=.*;ydpy=.*;xdevice=.*");
// "fname=-zz-abiword.*;scalable=false;outline_scaled=false;");
// 代わりに、受け取ったパターンがそのフォントに合わない場合、それを拒否する:
//user_pref("font.x11.acceptfontpattern", ".*");

// サブメニューの遅延 (表示待機時間) をかなり長く設定する
// どこかをクリックするまで、メニューが表示されたままの状態にします。
// これは、マウスがメニューから 1 ピクセルでも横にずれたり、
// メニューとサブメニューの間の線を横切るたびに (メニューが) 非表示になるのを防ぎ、
// もっと Motif のメニューみたいに動作するようにします。
user_pref("ui.submenuDelay", 7000);

// Type Ahead Find の設定:
user_pref("accessibility.typeaheadfind", true);
user_pref("accessibility.typeaheadfind.linksonly", true);
user_pref("accessibility.typeaheadfind.startlinksonly", false);
user_pref("accessibility.typeaheadfind.timeout", 5000);

// テキストの選択範囲の色を設定:
user_pref("ui.textSelectBackground", "green");
user_pref("ui.textSelectForeground", "white");
// Type Ahead Find の選択範囲の色は若干異なります:
user_pref("ui.textSelectBackgroundAttention", "blue");
// widgetSelectBackground がいつ、どのような状態で呼び出されるのかははっきりしません。ぜひ発見してください。
user_pref("ui.widgetSelectBackground", "orange");

////////////////////////////////////////////////////////////
// ポップアップウィンドウの制御
////////////////////////////////////////////////////////////

// ポップアップを無効にするための設定可能なセキュリティポリシーを使います。
// http://www.mozilla.org/projects/security/components/ConfigPolicy.html をご覧ください。
// 特定のサイトについて (JavaScript 内の) window.open を止める:
user_pref("capability.policy.popupsites.sites", "http://www.annoyingsite1.com http://www.popupsite2.com");
user_pref("capability.policy.popupsites.Window.open","noAccess");
// または、どのサイトでも window.open を止める:
user_pref("capability.policy.default.Window.open","noAccess");

// さらに重要 - JavaScript ウィンドウが読み込み時に新しいウィンドウをポップアップするのを無効にする
// (多くのポルノサイトやスパムサイトがやるようなものです):
user_pref("dom.disable_open_during_load", true);

// 「target=」で指定された新しいウィンドウのポップアップを無効にする
// これは現在、[設定] ダイアログの中にある [詳細] > [スクリプト & ウィンドウ] から設定できます。
user_pref("browser.block.target_new_window", true);

// 現在、マウスクリックの結果として呼び出されていない
// JavaScript の window.open() メソッドを無効にすることができます。
// dom.disable_open_click_delay の設定を 0 以外の数にした場合、
// そこで指定したマウスをクリックしてからのミリ秒以上の数字が呼び出されたとき
// window.open は動かなくなります。
user_pref("dom.disable_open_click_delay", 1000);

////////////////////////////////////////////////////////////
// その他いろいろなもの
////////////////////////////////////////////////////////////

// デフォルトのユーザエージェント文字列をオーバーライドする:
user_pref("general.useragent.override", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0; hi, Mom) Gecko/20020604");

// ソース表示ウィンドウの構文ハイライト (色分け表示)
// [表示] > [配色] にユーザインターフェイスがあります
user_pref("browser.view_source.syntax_highlight", false);

// Chatzilla で、スマイリー代用記号 (黄色の顔文字) に加えてオリジナルのテキストを表示
user_pref("extensions.irc.munger.smileyText", true);

// エディタからの HTML 出力のためにカラムを送り込む:
user_pref("editor.htmlWrapColumn", 72);

// JavaScript の警告を表示
// [設定] ダイアログの [デバッグ] パネルでも設定できます。
user_pref("javascript.options.strict", true);

// デフォルトの紙サイズを US-Letter から A4 に変更:
//user_pref("print.postscript.paper_size", "A4");

////////////////////////////////////////////////////////////
// 便利なメール & ニュースの設定
////////////////////////////////////////////////////////////

// (メッセージ返信時の設定)
// 0 = 返信を引用テキストの下に書き始める
// 1 = 返信を引用テキストの上に書き始める
// 2 = 引用テキストを選択し返信をその下に書き始める
// 3 = 引用テキストを選択し返信をその上に書き始める
// Mozilla は 0 をデフォルトにしていますが、Netscape では 1 になっています (げっ!)
user_pref("mailnews.reply_on_top", 0);

// 受信メッセージのユーザエージェントを表示
user_pref("mailnews.headers.showUserAgent", true);

// 収集アドレス帳を止める
user_pref("mail.collect_email_address", false);

// メッセージウィンドウのグラフィカルな返信スタイルを止める
user_pref("mail.quoted_graphical", false);
// (絵を使った) 標識を表示、http://www.bucksch.org/1/projects/mozilla/16507 参照
user_pref("mail.display_glyph", true);

// (HTML 形式の返信の中で) プレーンテキストの引用に HTML 形式の引用を使う
user_pref("mail.quoteasblock", true);

// Format=flowed 設定、RFC 2646
user_pref("mailnews.send_plaintext_flowed", true);
user_pref("mailnews.display.disable_format_flowed_support", true);
user_pref("mail.display_struct", true);
user_pref("mail.send_struct", false);

他にも便利な隠し設定があると思います。他の人たちもその恩恵を受けられるように、それを (見つけたら) このリストに加えてください!


ユーザインターフェイス部品のルック & フィール

CSS によって制御されていない Mozilla のルック & フィールの多くは、いわゆる「ルック & フィール」オブジェクトによって制御されています。これは典型的に、ユーザの色などの設定といった、現在のプラットフォームにおける OS の動作をまねることを試みていますが、常にうまくいくわけではありません。また、ユーザが Mozilla を OS の残りのものとは異なるように設定したいと思う場合があるかもしれません。そのような理由から、ルック & フィールの調節は 設定 を使ってオーバーライドすることができます。

これが、最後にこの項目が修正された時点の、ルック & フィール設定のリストです。最も最新のバージョンを求めるなら、ソースファイル nsXPLookAndFeel.cpp が常に最新のものとなっています。注意: これらの設定すべてが実際に何かをするとは限りません。また、あるプラットフォームでは動いても他のプラットフォームでは動かないといったことがあります。実験してみてください。

整数の値を取るルック & フィール設定

  • ui.windowTitleHeight
  • ui.windowBorderWidth
  • ui.windowBorderHeight
  • ui.widget3DBorder
  • ui.textFieldBorder
  • ui.textFieldHeight
  • ui.buttonHorizontalInsidePaddingNavQuirks
  • ui.buttonHorizontalInsidePaddingOffsetNavQuirks
  • ui.checkboxSize
  • ui.radioboxSize
  • ui.textHorizontalInsideMinimumPadding
  • ui.textVerticalInsidePadding
  • ui.textShouldUseVerticalInsidePadding
  • ui.textShouldUseHorizontalInsideMinimumPadding
  • ui.listShouldUseHorizontalInsideMinimumPadding
  • ui.listHorizontalInsideMinimumPadding
  • ui.listShouldUseVerticalInsidePadding
  • ui.listVerticalInsidePadding
  • ui.caretBlinkTime
  • ui.caretWidthTwips
  • ui.submenuDelay
  • ui.menusCanOverlapOSBar

浮動小数点の値を取るルック & フィール設定

  • ui.textFieldVerticalInsidePadding
  • ui.textFieldHorizontalInsidePadding
  • ui.textAreaVerticalInsidePadding
  • ui.textAreaHorizontalInsidePadding
  • ui.listVerticalInsidePadding
  • ui.listHorizontalInsidePadding
  • ui.buttonVerticalInsidePadding
  • ui.buttonHorizontalInsidePadding

色によるルック & フィール設定

(これらが実際に動くかどうかははっきりしません)

  • ui.windowBackground
  • ui.windowForeground
  • ui.widgetBackground
  • ui.widgetForeground
  • ui.widgetSelectBackground
  • ui.widgetSelectForeground
  • ui.widget3DHighlight
  • ui.widget3DShadow
  • ui.textBackground
  • ui.textForeground
  • ui.textSelectBackground
  • ui.textSelectForeground
  • ui.activeborder
  • ui.activecaption
  • ui.appworkspace
  • ui.background
  • ui.captiontext
  • ui.graytext
  • ui.highlight
  • ui.highlighttext
  • ui.inactiveborder
  • ui.inactivecaption
  • ui.inactivecaptiontext
  • ui.infobackground
  • ui.infotext
  • ui.menu
  • ui.menutext
  • ui.scrollbar
  • ui.threedface
  • ui.buttonface
  • ui.buttonhighlight
  • ui.threedhighlight
  • ui.buttontext
  • ui.buttonshadow
  • ui.threeddarkshadow
  • ui.threedshadow
  • ui.threedlightshadow
  • ui.window
  • ui.windowframe
  • ui.windowtext
  • ui.-moz-field

Akkana Peck, akkzilla at shallowsky dot com