Preferences - webdino/gecko-embedded GitHub Wiki
Gecko の設定について
Gecko Embedded で設定変更したくなることがよくある設定 (about:preferences/config や prefs ファイルで指定する項目) に関するメモです。
Gecko エンジンの動作設定
Hardware Acceleration
- layers.acceleration.disabled
- HW Compopsiting (OpenGL OMTC) を無効化するかどうか
- layers.acceleration.force-enabled
- これを true にすると HW Compositing が利用できないと判定された場合でも GPU を利用する
- gfx.canvas.azure.accelerated
- Canvas での Hardware Acceleration を利用するかどうか
- widget.wayland-dmabuf-webgl.enabled
WebRender
Rust 実装レンダリングエンジン WebRender の設定。Gecko 92 で Linux 含む全環境で有効化された。Gecko 92 ではレガシーレンダリングエンジンに戻す設定が一時的に用意されたが Gecko 93 にてそれも廃止し、全面的に WebRender (Sofware または Hardware) が利用されるようになった。
設定変更結果は about:support で確認できる
- Graphics - Compositing: WebRender となっていると GPU アクセラレーション付き WebRender、Compositing: WebRender (Software) となっているとソフトウェア処理の WebRender へのフォールバックが行われている。決定ログの
WEBRENDER
,WEBRENDER_QUALIFIED
も参照。
- gfx.webrender.all
- true にすると WebRender を有効化する設定が全てオンになる (自動判断で無効だが有効化したい場合用)
- Linux では OpenGL レイヤーの利用の強制オン設定も含む
- Gecko 92 以降ではこの設定はせずとも WebRender が有効化される。基本的には Gecko 91 までで使う設定
- gfx.webrender.software (Gecko 87 以降)
- WebRender での GPU 利用をせずソフトウェア WebRender を利用する
- webrender.low-quality-pinch-zoom
- 高性能 PC 向けではなく Android 端末など低性能端末向けのピンチズーム処理を行う
- 組込 SoC でも Android 同様に高速ピンチズーム処理が欲しい場合に有効化して使うことを検討
- gfx.webrender.debug.profiler
- true に設定すると WebRender の Overlay Debugging 機能が有効化される
- gfx.webrender.debug.profiler-ui
- Overlay Debugging 有効時に何を表示するか設定する文字列を指定する。初期設定は
Default
でかなり細かいものが表示されるが、簡易版としてはCompact
やSlow indicators
などもあるし、単純に FPS 表示をしたいだけであればFPS
と設定するとよい。 - その他に設定可能な文字列は profiler.rs のコメントを参照
- Overlay Debugging 有効時に何を表示するか設定する文字列を指定する。初期設定は
最新の Gecko では利用しない deprecated prefs
- gfx.webrender.all.qualified (隠し設定)
- WebRender を 対応可能とされている環境 で有効化する設定
- 対応可能なハズなのに無効化したい場合は false を設定する
- gfx.webrender.force-legacy-layers (deprecated on Gecko 93)
- Gecko 92 で gfx.webrender.force-disabled の代わりに使う WebRender 無効化用の設定
- gfx.webrender.force-disabled (deprecated on Gecko 92)
- true にすると WebRender を利用しない (自動判断で有効だが無効化したい場合用)
- gfx.webrender.enabled (deprecated)
- true にすると WebRender を利用する (デフォルト無効である古いバージョン用)
- Linux では layers.acceleration.force-enabled=true にしていなければ有効化されない
- nglayout.debug.paint_flashing, nglayout.debug.invalidation
- WebRender では旧レンダリングエンジン用の設定は動かない
- WebRender にも実装したいというバグは Paint flashing DevTools for WebRender
WebRender の振る舞いは prefs ではなく環境変数からのみ制御可能なものもある。
- MOZ_WEBRENDER=1
- ハードウェアを利用した WebRender を有効化する。但し、gfx.webrender.software=true の場合は除く
- Gecko 87 で ランタイムエラー時のソフトウェア WebRender へのフォールバックが導入 されるまではこれを設定すると常にハードウェア WebRender だった
- Gecko 93 での振る舞い変更 も参照
e10s/fission (マルチプロセス) 関連
e10s の有効・無効や有効時のプロセス数の設定。設定変更結果は about:support の「マルチプロセスウインドウ: 2/2 (ユーザー設定により有効)」などで確認できる。
- browser.tabs.remote.autostart, browser.tabs.remote.autostart.2
- e10s 有効化の基本設定。Gecko 60 で有効化するには true を設定、Gecko 68 以降で無効化するには autostart の方に false を設定して再起動 (または実行時オプションとして
MOZ_FORCE_DISABLE_E10S=1
をつけて起動する)
- e10s 有効化の基本設定。Gecko 60 で有効化するには true を設定、Gecko 68 以降で無効化するには autostart の方に false を設定して再起動 (または実行時オプションとして
- browser.tabs.remote.force-enable
- true にすると a11y 機能による e10s 無効化を無視。see: https://bugzilla.mozilla.org/show_bug.cgi?id=1198459
- browser.tabs.remote.force-disable
- e10s 強制無効化
- extensions.e10sBlocksEnabling, extensions.e10sBlockedByAddons
- false にするとアドオンによる e10s 無効化を無視。see: https://bugzilla.mozilla.org/show_bug.cgi?id=1232274
- dom.ipc.processCount
- e10s 有効化時のプロセス数。多くするとメモリ消費が大きくなりすぎるので注意
- 参考: Firefox のパフォーマンス設定, Firefox のメモリーや CPU の消費量が多い
- fission.autostart
- fission の有効化。Gecko 69 から試験的に有効化可能な iframe プロセス分離
RZ/G1 シリーズでは ハード/BSP の制限で EGL ウィンドウが一つしか作れない都合、egl による GPU アクセラレーションと canvas-gpu アクセラレーションや (未検証だが) WebGL などと共存できないため e10s はオフにすることになりそう。
Stylo
Servo から移植した Rust 実装スタイルエンジン Stylo の有効・無効の設定。設定変更結果は about:support の「Stylo: content = true (デフォルトで有効), chrome = true (デフォルトで有効)」で確認できる。
- layout.css.servo.enabled
- true にすると Stylo を利用する
WebGL/WebGPU
- webgl.msaa-force
- true にすると WebGL anti-aliasing を利用する (自動判断でサポート外扱いされているが使えるハズ)
- dom.webgpu.enabled (gecko 73〜)
- true にすると WebGPU を有効化する
Video Codecs
- media.mediasource.enabled
- MSE の有効化
- media.mediasource.mp4.enabled
- MSE での mp4 サポートの有効化
タッチイベント
- dom.w3c_touch_events.enabled
- 標準のタッチイベントに対して無効 (0)、有効 (1)、自動検出 (2) を指定でき、既定値は自動検出 (2)
- Gecko on RZ/G では強制有効化のための設定位置 (3) も追加定義しています
- ref: Touch support in APZ on desktop platforms
セキュリティ制限
- privacy.file_unique_origin
- ローカルファイルの同一オリジンルールを緩和する。具体的には HTTP(S) ではない fetch を行うコードが Firefox 68 から許可されなくなった ために file URL で読み込むと動かないコンテンツを取りあえず動作させたい場合
false
に設定する
- ローカルファイルの同一オリジンルールを緩和する。具体的には HTTP(S) ではない fetch を行うコードが Firefox 68 から許可されなくなった ために file URL で読み込むと動かないコンテンツを取りあえず動作させたい場合
SpiderMonkey の動作設定
- javascript.options.baselinejit
- ベースライン JIT の有効・無効を切り替える (ブラウザ自体の再起動不要)
- javascript.options.ion
- IonMonkey による最適化 JIT の有効・無効を切り替える (ブラウザ自体の再起動不要)
- ベースライン JIT 無効化時はこちらも無効になっているハズ
- dom.max_script_run_time
- コンテンツの JavaScript が重すぎる場合に中断するかどうか確認するまでの時間を指定する。重たいベンチを動作させるときに事前に設定しておくとよい。デフォルト 10 なのを 1000 にするなどだが、場合によっては 0 (無限) に設定する。
デバッグ関連
フレームレート表示
- layers.acceleration.draw-fps (deprecated)
- true にすると左上にフレームレートが表示される簡易機能 (しかし表示されないケースあり)
- 開発ツールのパフォーマンスツール でプロファイリングしつつ FPS 履歴を確認できる
- WebRender ではこの設定は有効ではない。gfx.webrender.debug.profiler を参照
レイヤー境界の表示
- layers.draw-borders
- true にするとコンポジットレイヤーの境界線が表示される。CSS Transition/Animation の開始が遅い場合などは適切なレイヤーが検出されているか確認、されていなければ will-change 設定をして指示をするといった対応が必要。
リモートデバッグ
- devtools.debugger.remote-enabled
- リモートでバッグを許可するには true を設定。次の項目も合わせて true にする必要あり
- devtools.debugger.usb.enabled = true
- USB 経由のリモートでバッグを許可するには true を設定
- devtools.debugger.prompt-connection
- 接続時に許可ボタンを押さなくとも自動接続させたければ false を設定
履歴とキャッシュ
設定画面での変更
終了時にキャッシュや履歴などのデータを自動削除する設定は about:preferences で設定できる
- about:preferences を開く
Privacy & Security
panel -Cookies and Site Data
Delete cookies and site data when Firefox is closed
をオンにする- これにより cookie や local storage などコンテンツ側のコードで保存させるデータを自動消去できる
Privacy & Security
panel -History
Firefox will Use custom settings for History
を選択してClear history when Firefox closes
をオンにしてSettings
にて対象とする項目を選択する- これによりコンテンツ側のプログラムに関係なくブラウザエンジン側で自動的に保存している履歴やキャッシュなどを自動消去できる
参考: How to clear the Firefox cache
ディスク・メモリキャッシュ
browser.cache.disk.enable
false
に設定するとディスクキャッシュ (ファイルのキャッシュなど) を無効化できる
browser.cache.memory.enable
false
に設定するとメモリキャッシュ (画像デコードのキャッシュなど) を無効化できる
browser.cache.memory.capacity
-1
(デフォルト) では容量に応じた自動設定、0
は無効、正の整数値は指定 KB のメモリを利用する
その他
- dom.max_script_run_time
- 重たい JavaScript 処理ページで応答のないスクリプト警告表示するまでの時間を設定する
- browser.sessionstore.interval
- セッション情報の自動保存。デフォルト 15 秒 (15000) だが長くすればディスクアクセスが減る
- browser.sessionstore.resume_from_crash
- false に設定するとセッション情報の自動保存自体を無効化することも可能
- dom.push.enabled
- ESR 68 では false に設定されているがその状態だと起動時に
JavaScript error: resource:///modules/sessionstore/SessionStore.jsm, line 1215: uncaught exception: [2147746065](http://james-ross.co.uk/mozilla/misc/nserror?2147746065)
というエラーが出てしまう バグがある。この問題を取りあえずで回避したい場合はdom.push.enabled=true
に設定を変更する
- ESR 68 では false に設定されているがその状態だと起動時に