firefox

文中の略記について

${firefox}: firefox のインストールされたディレクトリ

mime.types

mime types は

/etc/mime.types
~/.mime.types

この指定は greprefs/all.js に以下のように記述されている

pref("helpers.global_mime_types_file", "/etc/mime.types");
pref("helpers.private_mime_types_file", "~/.mime.types");

mozplugger

動画等を再生しようとして、mozpluggerrc には記述されているのに再生されずに保存ダイアログが開くことがある。この場合には、/etc/mime.types 或は ~/.mime.types に対応する mime type を加えること。 例えば Windows media なものが再生できないのであれば、

video/x-ms-asf                  asf asx wma wax wmv wvx
video/x-ms-wmv                  wmv

を /etc/mime.types に加える。

なお、plugin まわりに修正を加えた場合、~/.mozilla/firefox/pluginreg.dat を消去すること。

startup.homepage.override_url

firefoxのupdate後に起動したときに開くページの指定。${firefox}/defaults/pref/firefox-branding.js辺りに記述されている。

firefoxのupdateは、browser.startup.homepage_override.mstoneの値の変化で判断。この値を ignore にすれば、override は行われない。

決め打ちしてしまうのなら、${firefox}/defaults/pref/firefox-branding.js のあたり(startup.homepage.override_urlよりも前?)に、

pref("browser.startup.homepage_override.mstone", "ignore");
pref("startup.homepage_override_url","http://hogehoge/")\;

てな感じに書けば良いようだ。

existing-profile-defaults.js (firefox2以降. もしかしたら1.5以降かも)

従来は ${firefox}/defaults 以下には、autoconfig, pref, profile という3つのフォルダのみだったが、いつからか existing-profile-defaults.js というファイルが存在するようになっている。このファイルには、browser.startup.homepage や browser.search.defaultenginename といったものがダラダラと記述されている。(browser.startup.homepage は ${firefox}/old-homepage-default.properties というファイルを参照していて、この old-homepage-default.properties の中で browser.startup.homepage が指定されている。ややこしい。)

この existing-profile-defaults.js は各ユーザの設定フォルダ(~/.mozilla/firefox/xxxx.default/)中の preferences フォルダにコピーされる。 一旦このファイルがコピーされてしまうと、${firefox}/defaults/pref/firefox-branding.js などで default設定を変更したつもりになっても無視されてしまう。ユーザの設定をできるだけコントロールするためには、${firefox}/defaults/existing-profile-defaults.js を消しておくのが得策だろう。(調べてみるとVine配布のBon Echoではこのファイルは存在しない。なるほどね。)

設定箇所をむやみに増やすのは勘弁して欲しいぞ。

firefox3 の bookmarks

firefox2 では profile フォルダ中の bookmarks.html で管理されていたが、firefox3 になってから sqlite を使うようになったために default では bookmarks.html は更新されない。firefox3 では places.sqlite ファイルで bookmark や履歴を管理している。

他の browser と bookmarks.html を同期するなどの理由で bookmarks.html も更新したいのであれば、about:config で browser.bookmarks.autoExportHTML を true にすれば良い。これで places.sqlite だけでなく bookmarks.html も更新されるようになる。

sqlite ファイルの vacuum

sqlite database file を時々再構築すると幸せになれるらしい。

sqlite3 places.sqlite vacuum

database だからなぁ。

sqlite file が壊れる?

firefox を立ち上げると、時折ツールバーなどが真っ白けになることがある。他にも form 入力ができなくなったり。(特に NFS な環境で発生。書き込みが遅いからか、file lock の関係か?)正常に firefox3 を終了しなかったときに、profile の何かが壊れる事が原因っぽい。

試しに killall firefox-bin すると、その状況を再現する事ができるのだが、profile 中の *.sqlite ファイルを削除する事で問題を解決する事ができることから、profile 中の sqlite が損傷しているのではないかと推測。

さて、どの sqlite ファイルが壊れているのか。killall firefox-bin を数回試してみて sqlite コマンドで調べてみたところ、formhistory.sqlite と places.sqlite の二つで

SQL error: database is locked

となることがわかってきた。(これ以外のファイルも壊れる可能性は残っている。)

つまり firefox が起動中 lock しているこれらの sqlite ファイルが正常に解放される事無く、 firefox が落ちてしまった時に問題が発生するのではないかと。 仮にそうであるならば、起動前に sqlite コマンドで sqlite database file を調べて、ロックされたままのものがあれば、それを捨てるか lock 解除(できるのか?)すればいい気がする。

ちなみに、設定ファイルを NFS 上ではなく、tmpfs 上や SSD 上の ext3 上に置いた場合、このトラブルの発生頻度は極めて低い。書き込みが遅い NFS 固有の問題かもしれない。(ただ同じ NFS上でも firefox2 では発生していない。)

database is locked となる sqlite database file であるが、別の場所にコピーすると何事もなかったのように開くことができることに気付いた。同じ filesystem 上で mv したのでは error がでるが、copy すると ok 。さらに、別の filesystem (例えば tmpfs) に mv しても ok。よく分かっていないのだが、file system の lock 機構が働いたままの状態になっていて、それによって sqlite ファイルが lock されているのかもしれない。とりあえず、/tmp に mv して戻すことで解決できる。

と書いたけど、mv なんてしなくても sed を使えばもっと簡単。

sed -i '' places.sqlite

これで ok。ただし sqlite のエラーは出なくなっても、中身がおかしい場合も稀にある。この場合は問題の sqlite ファイルを削除すること。

(追記)上記のように places.sqlite を修正するのと同時に、profile ディレクトリの中にある、bookmarkbackups ディレクトリ中のファイルを確認すること。この中に bookmard-2009-05-27.json のような名前の backup ファイルがあるはずだが、size 0 になっているファイルがあればそれを消しておくこと。

(追記2)formhistory.sqlite は消した方が良いかもしれない。 というわけで、firefox の調子がおかしくなった後には、以下のような script を実行すれば良さそう。

#!/bin/bash
cd ${HOME}/.mozilla/firefox/*/

ls *.sqlite | while read f
do
       sed -i '' $f
done

rm formhistory.sqlite

ls bookmarkbackups/* | while read f
do
       if [ ! -s "$f" ]; then
               rm $f
       fi
done

bookmarks への追加削除ができない?

browser.places.importBookmarksHTML が true になっていると、 bookmark ツールバーや bookmark に項目の追加削除しても次回起動時にその変更が残されていないことがある。prefs.js の中身をチェック。(about:config でも良い。)

FlashBlock

Web 閲覧していて重たい Flash のページに出くわすと、システムリソースを食い潰されてしまいます。それを避けるには、例えば FlashBlock というアドオンを入れると良いでしょう :)

アドオン memo

今のところ良く使っているアドオンのメモ

  • Adblock Plus
  • YesScript
  • Flashblock
  • All-in-One Gestures
  • Firemacs
  • Gesture Translate
  • Personas Plus

アドレスバーでキーワード検索

アドレスバーにキーワードを入力することで、検索エンジンでの検索ができるが、何故か yahoo で検索するようになっていた。yahoo は好かんので、google 検索できるように設定しなおした。

アドレスバーに about:config を入力し、フィルタで keyword.url を検索。値を http://www.google.co.jp/search?q= にすれば ok

firefox の各バージョンの download 場所

スクロールバーをクリックしたときの挙動

firefox 43 辺りからだったか、スクロールバーを左ボタンでクリックしたときの挙動が変わった。(左ボタンクリックした場合、1ページずつスクロールしていたものが、クリックしたページまで飛んでしまうというものに)

旧来のマウスクリック挙動にするには、~/.config/gtk-3.0/settings.ini というファイルを作成し、以下を記述

[Settings]
gtk-primary-button-warps-slider = false

bookmark が編集できない

ブックマークに登録できなかったり、ブックマークのプロパティを変更できなかったりすることが発生。bookmark が格納されている ~/.mozilla/firefox/*/places.sqlite ファイルに何らかの不整合が発生している場合、一度 dump して、作り直せばよい。

sqlite3 places.sqlite
sqlite> .output hogehoge.sql
sqlite> .dump
sqlite> .q
mv places.sqlite places.sqlite_bkup

で、hogehoge.sql というファイルに dump 。これから places.sqlite を作り直せばよい。

sqlite3 places.sqlite < hogehoge.sql

cache について

FirefoxでYoutube見続けるとSSDが早死にする問題とその対処法 という記事があったので、設定を変更してみるなど

browser.cache.disk.max_entry_size  -> 128 に
browser.cache.disk.parent_directory  を tmpfs なディレクトリに
Last modified:2020/02/18 17:11:21
Keyword(s):[firefox] [sqlite] [build]
References:[Software]