■ファイアーフォックス(Firefox)でタブ関連のアドオンにさよならを!?

このページの更新は終了しました。わたし自身が、ファイアーフォックスからシーモンキーにのりかえたからです。そんなわけで、「■ブラウザー・メールソフトのりかえ案内――シーモンキー(SeaMonkey)」「■シーモンキー(SeaMonkey)をカスタマイズ」をどうぞ。

ファイアーフォックスでは、各種の設定を変更したり、ユーザースタイルシートとユーザースクリプトを使ったりして、タブ機能を自分好みにすることができます。もし、あなたが、スタイリッシュ(Stylish)ユーザークロームJS(userChromeJS)を使っているなら、タブ機能のカスタマイズにチャレンジしてみてはいかがでしょう? ひょっとしたら、タブ関連のアドオンにさよならをいえるかもしれません。

カスタマイズを試してみるまえに、新しいプロファイルを作っておきましょう。手順は以下のとおりです。

それではいよいよ「実験」をはじめましょう。

1. 必要なタブ機能をリストアップ

わたしはこれまでタブミックスプラス(Tab Mix Plus)を使ってきました。「重い」などといわれることもあるアドオンですが、そんなふうに感じたことはありません。ただ、Tab Mix Plusはものすごく多機能なんですよね。わたしが必要としている機能はあまり多くはないので、ムダといえばムダです。

どんなタブ機能を必要としているのか、あらためてまとめてみると、こんなふうになりました。

意外にすくないですね。これらの機能を実現する方法は……。

必要なタブ機能と実現方法
タブ機能設定ユーザースタイルシートユーザースクリプト
シングルウィンドウモード
タブの多段表示
タブの大きさを固定
タブの閉じるボタンを表示しない
新しいタブをつねに右端で開く
検索バーからの検索結果を新しいタブで開く
タブを閉じたら、最後に選択したタブをアクティブに
閉じたタブの一覧を表示する
閉じたタブを中クリックで開く

完全なシングルウィンドウモードをアドオンなしで実現するのは、いまのところ、ちょっとむずかしそうです。シングルウィンドウモード以外についてはなんとかなりそう、ということがわかりました。

2. 設定を変える

◆user.jsファイルを作る

ファイアーフォックスのこまかい設定は、ロケーションバーに「about:config」と入力して開いた画面(設定エディター)からおこなうのが一般的です。1つ2つの設定ならこれでもいいんですが、今回は、たくさんの設定をしなくてはなりません。そこで、設定をまとめて書いておける「user.js」というファイルを作っておきましょう。

てきとうなテキストエディターを立ち上げて、以下のように書き込んでください。場所をファイアーフォックスのプロファイルフォルダー、ファイルのなまえを「user.js」、文字コードを「BOMなしUTF-8」――にして保存します。

/*
  設定ファイル
*/
//user_pref("設定名", 値);

「/* 〜 */」の部分と「//」の行はコメントです。「/* 〜 */」は複数行を、「//」は1行だけをコメントにします。コメントの部分は設定に影響しません。各種の設定は「user_pref("設定名", 値);」という書式で書いていくことになります。

user.jsの内容は、ファイアーフォックスに読み込まれて、おなじフォルダーの「prefs.js」というファイルに書き込まれます。user.jsに書いた設定をデフォルト値にもどしたいときは、つぎのようにしてください。

これで、設定はデフォルト値にもどります。念のため、「about:config」で設定エディターを開いて、もとにもどっているかどうか、確認しておくといいでしょう。

◆シングルウィンドウモード

シングルウィンドウモードにするには、以下のように設定します。これで基本的には、リンクなどが新しいウィンドウではなく、新しいタブで開くようになります。ただし、メニューの[ファイル]→[新しいウィンドウ]を選べば、もちろん、新しいウィンドウが開きます([ツール]→[userChrome.jsの設定]→[userChrome.jsの再構築/新しいウィンドウ]を選んでも、おなじですね)。

//-------------------------------------------------------------------
// シングルウィンドウモード
//-------------------------------------------------------------------
/*
  リンクを開くとき
    1: 現在のタブ
    2: 新しいウィンドウ
    3: 新しいタブ (デフォルト)
*/
user_pref("browser.link.open_newwindow", 3);
/*
  JavaScriptなどでウィンドウを開くとき
    0: browser.link.open_newwindow
    1: 新しいウィンドウ
    2: 大きさなどが指定された場合は新しいウィンドウ、そうでなければbrowser.link.open_newwindow (デフォルト)
*/
user_pref("browser.link.open_newwindow.restriction", 0);

◆タブの閉じるボタンを表示しない

タブごとにある「閉じる」ボタンは、デフォルトではすべてのタブに表示されます(タブ幅が決められた値よりせまくなると消えますが)。すべてのタブで表示されないようにするには、以下のように設定します。

//-------------------------------------------------------------------
// タブ
//-------------------------------------------------------------------
/*
  タブの閉じるボタン
    0: アクティブなタブだけに表示
    1: すべてのタブに表示 (デフォルト)
    2: 表示しない
    3: タブバー右端に1つだけ表示
*/
user_pref("browser.tabs.closeButtons", 2);

◆新しいタブをつねに右端で開く

「browser.tabs.insertRelatedAfterCurrent」のデフォルト値は「true」で、新しいタブは“親タブ”の右側に開かれます。つまり、

に新しいタブが開かれるわけです。たいへんにけっこうなデフォルト値ですね。

新しいタブをつねに右端に開くようにするには、以下のように設定します。

/*
  新しいタブの位置
    true: 親タブの右側 (デフォルト)
    false: 右端
*/
user_pref("browser.tabs.insertRelatedAfterCurrent", false);

◆検索バーからの検索結果を新しいタブで開く

検索バーからの検索結果を新しいタブで開くには、以下のように設定します。

/*
  検索バーからの検索結果
    true: 新しいタブで開く
    false: 現在のタブで開く (デフォルト)
*/
user_pref("browser.search.openintab", true);

3. ユーザースタイルシートを導入する

◆タブの多段表示・タブの大きさを固定

「firefox タブ 多段 css」などのキーワードでウェブ検索すると、ファイアーフォックスのタブを多段化するユーザースタイルシートがたくさんヒットします。また、「multi row tabs」といったキーワードで「userstyles.org」を検索してもいいですね。ファイアーフォックスの内部構造が変わっているので、あまり古いものは使えません。Stylishの「お試し」機能を活用しましょう。

検索結果を参考にきりばりしてできたのが、以下のユーザースタイルシートです。

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

.tabbrowser-arrowscrollbox scrollbox {
  overflow: visible !important;
}
.tabbrowser-arrowscrollbox scrollbox > box {
  display: block !important;
}
.tabbrowser-tabs .tabbrowser-tab {
  vertical-align: top !important;
  -moz-box-sizing: border-box !important;
}
/* 横スクロールボタン */
.scrollbutton-up,
.scrollbutton-down {
  display: none !important;
}
/* 新しいタブボタン */
.tabs-newtab-button {
  display: none !important;
}
/* タブを一覧表示ボタンを表示したいときは、以下のコメントをはずす */
/*
#alltabs-button {
  visibility: visible !important;
}
*/
/* タブの幅・高さ */
.tabbrowser-tab:not([pinned]) {
  /* 幅はmin-widthだけ 指定しないとデフォルトの最小値100px */
  min-width: 100px !important;
  /* 高さは、max-heightとmin-heightで */
  min-height: 26px !important;
  max-height: 26px !important;
}

制限事項をいくつか。

タブの段数制限はありません。タブの開きすぎにはご注意を。

多段表示されているタブをマウスのドラッグでうまく移動させることができません。それじゃあダメじゃん!ということになるんですが、Alice0775さんのスクリプト「zzzz-removeTabMoveAnimation.uc.js」(すでにダウンロードずみでしょう)を導入すれば、問題は(ほぼ)解決します(ドラッグにともなうタブのアニメーションはなくなります)。お試しください。

4. ユーザースクリプトを導入する

◆タブを閉じたら、最後に選択したタブをアクティブに

Alice0775さんのスクリプト「openTabsWhere_whichTabSelectWhenCloseTab.uc.js」「ucjsNavigation.uc.js」を利用します。

openTabsWhere_whichTabSelectWhenCloseTab.uc.jsは、

などを選択するスクリプト。最初の設定は、新しいタブを開く位置が「リンクは右隣・それ以外は右端」、タブを閉じたときにアクティブにするタブが「最後に選択したタブ」――となっています。

ucjsNavigation.uc.jsは、最後に選択したタブをアクティブにするための関数などが書かれたスクリプト。設定するところはとくにありません。

新しいタブを開く位置については、すでに「browser.tabs.insertRelatedAfterCurrent」で設定しました。したがって、これらのスクリプトから、「タブを閉じたとき、最後に選択したタブをアクティブにする」という処理の部分を抜き出して、1つのスクリプトにまとめておきましょう。

必要な部分は、以下の2カ所(折り返しなしの行番号です)。

きりばりした結果は、こんなふうになります。

// ==UserScript==
// @name           ActivateLastSelectedTabWhenCloseTab.uc.js
// @version        1.0.0.0
// @description    タブを閉じたとき、最後に選択していたタブにフォーカス
// @author         あなたのなまえ
// @namespace      
// @include        chrome://browser/content/browser.xul
// @compatibility  Firefox 20.0+
// @note           ucjsNavigation.uc.js (Alice0775)
// @note           openTabsWhere_whichTabSelectWhenCloseTab.uc.js (Alice0775)
// @note           きりばりしただけ
// ==/UserScript==

(function() {

  // from ucjsNavigation.uc.js
  var tabFocusManager = {
    _tabHistory: [],
    _tabHistory2: [],
    focusLastSelectedTab: function() {
      var currentPanel = gBrowser.mCurrentTab.getAttribute('linkedpanel');
      while (this._tabHistory.length > 1) {
        var panel = this._tabHistory.pop();
        this._tabHistory2.push(panel);
        if (this._tabHistory2.length > 32) this._tabHistory2.shift();
        if (panel == currentPanel) continue;
        var tab = this.getTabFromPanel(panel);
        if (!tab || tab.getAttribute('hidden'))
          continue;
        gBrowser.selectedTab = tab;
        break;
      }
    },
    getTabFromPanel: function(panel) {
      for(var i = 0; i < gBrowser.mTabs.length; i++) {
        var tab = gBrowser.mTabs[i];
        if (tab.getAttribute('linkedpanel') == panel) {
          return tab;
          break;
        }
      }
      return null;
    },
    handleEvent: function(event) {
      this._tabHistory.push(event.target.getAttribute('linkedpanel'));
      if(event.type != 'TabSelect')
        this._tabHistory2 = [event.target.getAttribute('linkedpanel')];
      if (this._tabHistory.length > 32)
        this._tabHistory.shift();
    }
  }

  // from ucjsNavigation.uc.js
  if (gBrowser.selectedTab && gBrowser.selectedTab.hasAttribute('linkedpanel'))
    tabFocusManager._tabHistory = [gBrowser.selectedTab.getAttribute('linkedpanel')];

  gBrowser.tabContainer.addEventListener('TabSelect', tabFocusManager, false);
  gBrowser.tabContainer.addEventListener('TabOpen', tabFocusManager, false);

  // from openTabsWhere_whichTabSelectWhenCloseTab.uc.js
  gBrowser.tabContainer.addEventListener('TabClose', CloseTabFunc, false);
  function CloseTabFunc(aEvent) {
    if(aEvent.originalTarget != gBrowser.selectedTab) {
      return;
    }
    tabFocusManager.focusLastSelectedTab();
  }

})();

◆閉じたタブの一覧を表示する

Alice0775さんの「UndoListInTabmenuToo.uc.js」を使うと、最近閉じたタブや最近閉じたウィンドウの一覧が表示できるようになります。

一覧を表示するのは、最初の設定では、タブコンテキストメニューだけ。設定を変えることで、ページを右クリックしたときのコンテキストメニューでも一覧を表示できるようになります。設定は、スクリプトの最初のほうにあるので、自分でかきかえてください。

◆閉じたタブを中クリックで開く

oflowさんのスクリプト「middle-click-undo-close-tab.uc.js」をどうぞ。もっとも、「oflow/userchromejs」にあるもののほうが新しくて、すこしだけ機能も追加されています。

◆こまかい修正

【zzzz-removeTabMoveAnimation.uc.js】

タブをドラッグするときのドロップインジケーターの表示位置が気になりました。ドラッグするタブが何段目にあっても、ドロップインジケーターはタブバーのいちばん下(ブラウザー画面のいちばん上)に表示されるんですね。

そんなわけで、自分用としては、オリジナルのスクリプトを以下のようにかきかえて、ドロップインジケーターのy座標を指定するようにしています(かきかえたところは、太字にしています)。

        var rect = tabStrip.getBoundingClientRect();
        var newMargin;
        var newMarginY;
        if (pixelsToScroll) {
          // if we are scrolling, put the drop indicator at the edge
          // so that it doesn't jump while scrolling
          let scrollRect = tabStrip.scrollClientRect;
          let minMargin = scrollRect.left - rect.left;
          let maxMargin = Math.min(minMargin + scrollRect.width,
                                   scrollRect.right);
          if (!ltr)
            [minMargin, maxMargin] = [this.clientWidth - maxMargin,
                                      this.clientWidth - minMargin];
          newMargin = (pixelsToScroll > 0) ? maxMargin : minMargin;
        }
        else {
          let newIndex = this._getDropIndex(event);
          if (newIndex == this.childNodes.length) {
            let tabRect = this.childNodes[newIndex-1].getBoundingClientRect();
            if (ltr)
              newMargin = tabRect.right - rect.left;
            else
              newMargin = rect.right - tabRect.left;
            newMarginY = tabRect.bottom - rect.bottom;
          }
          else {
            let tabRect = this.childNodes[newIndex].getBoundingClientRect();
            if (ltr)
              newMargin = tabRect.left - rect.left;
            else
              newMargin = rect.right - tabRect.right;
            newMarginY = tabRect.bottom - rect.bottom;
          }
        }

        ind.collapsed = false;

        newMargin += ind.clientWidth / 2;
        if (!ltr)
          newMargin *= -1;

        //ind.style.transform = "translate(" + Math.round(newMargin) + "px)";
        ind.style.transform = "translate(" + Math.round(newMargin) + "px, " + Math.round(newMarginY) + "px)";
        ind.style.MozMarginStart = (-ind.clientWidth) + "px";
      };
      gBrowser.tabContainer.addEventListener("dragover", gBrowser.tabContainer._onDragOver, true);

あまりよくわかってないんですが、とりあえず動作しているようです。

ついでに、タブのアニメーションをしない設定にしておきましょう。

/*
  タブのアニメーション
    true: アニメーションする (デフォルト)
    false: アニメーションしない
*/
user_pref("browser.tabs.animate", false);
【UndoListInTabmenuToo.uc.js】

こんなところが気になりました。

オリジナルのスクリプトをかきかえてもいいんですが、ここでは、タブコンテキストメニューのほうだけを修正するスクリプトを作ってみました。メニュー項目の英語表記を修正し、「[最近閉じたウィンドウ] をクリア」というメニュー項目を追加し、「[最近閉じたタブ] をクリア」の処理内容をさしかえています。かならず、UndoListInTabmenuToo.uc.jsといっしょに使ってください。

// ==UserScript==
// @name           ReviseClosedTabsWindowsMenu.uc.js
// @version        1.0.0.0
// @description    UndoListInTabmenuToo.uc.jsのタブコンテキストメニューの一部を修正
// @author         あなたのなまえ
// @namespace      
// @include        chrome://browser/content/browser.xul
// @compatibility  Firefox 20.0+
// @note           
// ==/UserScript==

(function() {

  // メニュー項目の文字
    // UTF-8 -> UTF-16へ変換する
  var unicodeConverter = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].
    createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
    // このスクリプトの文字コード
  unicodeConverter.charset = 'UTF-8';
  var labelRecentlyClosedWindows = unicodeConverter.ConvertToUnicode('最近閉じたウィンドウ');
  var labelClearClosedTabs = unicodeConverter.ConvertToUnicode('[最近閉じたタブ] をクリア');
  var labelClearClosedWindows = unicodeConverter.ConvertToUnicode('[最近閉じたウィンドウ] をクリア');

  // タブのコンテキストメニューにイベントを追加: popupshowing
  gBrowser.tabContextMenu.addEventListener('popupshowing', replaceRecentlyClosedWindowsMenuLabel, false);

  // メニュー項目のさしかえ
  function replaceRecentlyClosedWindowsMenuLabel(aEvent) {
    // コンテキストメニューがポップアップしたとき
    if (aEvent.target == this) {
      // Recently Closed Windows
      var aMenu = document.getElementById('historyUndoWindowMenu3');
      var aText = aMenu.getAttribute('label');
      if (aText != labelRecentlyClosedWindows) {
        aMenu.setAttribute('label', labelRecentlyClosedWindows);
      }
    // [最近閉じたウィンドウ] [最近閉じたタブ] をポイントしたとき
    } else {
      // Closed Tabs
      var aMenu = document.getElementById('tabContextUndoList');
      var aPopup = aMenu.menupopup;
      aPopup.addEventListener('popupshown', replaceClearClosedTabsMenuLabel, false);
      // Closed Windows
      var aPopup = document.getElementById('historyUndoWindowPopup3');
      aPopup.addEventListener('popupshown', addClosedWindowsMenu, false);
    }
  }

  // replaceClearClosedTabsMenuLabel
  function replaceClearClosedTabsMenuLabel(aEvent) {
    var aMenu = document.getElementById('tabContextUndoList');
    var aPopup = aMenu.menupopup;
    aPopup.removeEventListener('popupshown', replaceClearClosedTabsMenuLabel, false);
    aPopup.lastChild.setAttribute('label', labelClearClosedTabs);
    aPopup.lastChild.addEventListener('command', function() {
      let ss = Cc['@mozilla.org/browser/sessionstore;1'].
        getService(Ci.nsISessionStore);
      var aCount = ss.getClosedTabCount(window);
      while (aCount > 0) {
        ss.forgetClosedTab(window, 0);
        aCount--;
      }
    }, false);
  }

  // addClosedWindowsMenu
  function addClosedWindowsMenu(aEvent) {
    var aPopup = document.getElementById('historyUndoWindowPopup3');
    aPopup.removeEventListener('popupshown', addClosedWindowsMenu, false);
    var aSep = document.createElement('menuseparator');
    aPopup.appendChild(aSep);
    var aItem = document.createElement('menuitem');
    aPopup.appendChild(aItem);
    aItem.setAttribute('label', labelClearClosedWindows);
    aItem.setAttribute('accesskey', 'C');
    aItem.addEventListener('command', function() {
      let ss = Cc['@mozilla.org/browser/sessionstore;1'].
        getService(Ci.nsISessionStore);
      var aCount = ss.getClosedWindowCount();
      while (aCount > 0) {
        ss.forgetClosedWindow(0);
        aCount--;
      }
    }, false);
  }

})();

    *
自分が必要とするタブ機能を、タブ関連のアドオンなしでなんとか実現してみました。自己満足といえば自己満足ですね(笑)。ファイアーフォックスの動作がことさら軽快になったとは感じられませんが、まあ、ひとつの実験ということで。

おしまいに、いろいろな設定を書いておきます。メニューの[ツール]→[オプション]から設定できるものもありますが、一括で設定できると便利でしょう(たぶん)。

//-------------------------------------------------------------------
// タブ
//-------------------------------------------------------------------
/*
  タブバーをツールバーのうえに
    true: 表示する (デフォルト)
    false: 表示しない
*/
user_pref("browser.tabs.onTop", false);
/*
  最後のタブを閉じたとき
    true: ウィンドウを閉じる (デフォルト)
    false: ウィンドウを閉じない
*/
user_pref("browser.tabs.closeWindowWithLastTab", false);
/*
  「新しいタブ」ページ  about:newtab
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("browser.newtabpage.enabled", false);
user_pref("browser.newtab.url", "about:blank");
/*
  最近閉じたタブの数
    10: (デフォルト)
*/
user_pref("browser.sessionstore.max_tabs_undo", 10);




/*
  同時に複数のタブを閉じるとき
    true: 確認する (デフォルト)
    false: 確認しない
*/
user_pref("browser.tabs.warnOnCloseOtherTabs", false);
/*
  複数のタブがあるウィンドウを閉じるとき
    true: 確認する (デフォルト)
    false: 確認しない
*/
user_pref("browser.tabs.warnOnClose", false);
/*
  タブをたくさん開いたときに
    true: 警告する (デフォルト)
    false: 警告しない
*/
user_pref("browser.tabs.warnOnOpen", false);
/*
  リンクから新しいタブを開いたとき
    true: バックグラウンドで (デフォルト)
    false: フォアグラウンドで
*/
user_pref("browser.tabs.loadInBackground", false);




//-------------------------------------------------------------------
// プライバシー・セキュリティ関連
//-------------------------------------------------------------------
/*
  URLバーのhttp://を表示しない
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("browser.urlbar.trimURLs", false);
/*
  トラッキング拒否通知
    true: 有効
    false: 無効 (デフォルト)
*/
user_pref("privacy.donottrackheader.enabled", true);
/*
  cookieの扱い
    0: すべてのcookieをうけいれる (デフォルト)
    1: もとサイトからのcookieだけうけいれる (サードパーティーcookieはうけいれない)
    2: すべてのcookieをうけいれない
    3: 過去にうけいれた場合にかぎり、サードパーティーcookieをうけいれる
*/
user_pref("network.cookie.cookieBehavior", 1);
/*
  各種プロトコルを外部のアプリケーションで処理するとき
    true: 警告する (デフォルト)
    false: 警告しない
*/
user_pref("network.protocol-handler.warn-external-default", true);
/*
  各プロトコルを外部アプリケーションで処理するとき
    true: 警告する
    false: 警告しない (デフォルト)
*/
user_pref("network.protocol-handler.warn-external.mailto", true);
user_pref("network.protocol-handler.warn-external.news", true);
user_pref("network.protocol-handler.warn-external.nntp", true);
user_pref("network.protocol-handler.warn-external.snews", true);
/*
  さきよみ機能
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("network.prefetch-next", false);
/*
  位置情報通知機能
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("geo.enabled", false);
/*
  「新しいタブ」ページのサムネールを保存しない
    true: 保存しない
    false: 保存する (デフォルト)
*/
user_pref("browser.pagethumbnails.capturing_disabled", true);
/*
  正常終了しなかった場合のセッションの復元機能
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("browser.sessionstore.resume_from_crash", false);
/*
  モジラへのデータ送信機能
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("datareporting.policy.dataSubmissionEnabled", false);
/*
  データ送信のポップアップ表示
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("datareporting.healthreport.logging.consoleEnabled", false);
/*
  ヘルスレポート作成機能
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("datareporting.healthreport.service.enabled", false);




//-------------------------------------------------------------------
// JavaScript関連
//-------------------------------------------------------------------
/*
  ウィンドウのフォーカスきりかえ
    true: 無効 (デフォルト)
    false: 有効
*/
user_pref("dom.disable_window_flip", true);
/*
  ポップアップウィンドウの移動・サイズ変更
    true: 無効
    false: 有効 (デフォルト)
*/
user_pref("dom.disable_window_move_resize", true);
/*
  コンテキストメニューの無効化・変更
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("dom.event.contextmenu.enabled", false);




//-------------------------------------------------------------------
// ダウンロード関連
//-------------------------------------------------------------------
/*
  ダウンロード終了時のダウンロードマネジャー
    true: 閉じる
    false: 閉じない (デフォルト)
*/
user_pref("browser.download.manager.closeWhenDone", true);
/*
  ダウンロード完了時の通知
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("browser.download.manager.showAlertOnComplete", false);




//-------------------------------------------------------------------
// いろいろ
//-------------------------------------------------------------------
/*
  blinkタグ (文字の点滅)
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("browser.blink_allowed", false);
/*
  marqueeタグ (文字のスクロール)
    true: 有効
    false: 無効 (デフォルト)
*/
user_pref("browser.display.enable_marquee", false);
/*
  画像の自動縮小表示
    true: 有効(デフォルト)
    false: 無効
*/
user_pref("browser.enable_automatic_image_resizing", false);
/*
  http通信の最大接続数
    48: (デフォルト)
    Firefox 6.0で「256」などという数値にされたので、念のため
*/
user_pref("network.http.max-connections", 48);
/*
  スムーズスクロール
    true: 有効 (デフォルト)
    false: 無効
*/
user_pref("toolkit.scrollbox.smoothScroll", false);
/*
  たてキースクロールの行数 17.0以降
    3: (デフォルト)
*/
user_pref("toolkit.scrollbox.verticalScrollDistance", 6);
/*
  検索バーにフォーカスがあるときの検索エンジン名 19.0以降
    true: 表示する (デフォルト)
    false: 表示しない
*/
user_pref("dom.placeholder.show_on_focus", false);