今回は本気だ。さよならOpera、こんにちはFirefox。もう僕はOperaのこんなところに耐えられなくなった。
更に、追い打ち。
ウェイトの大きい部分に結構な問題があって実はタイムロスが馬鹿にならない……というわけで、Firefoxへの乗り換えの過程をメモしておく。よりベターな方法がある場合教えて頂けると幸いです。
本当はキャッシュ読み込みが早いGran Paradisoを入れるつもりだったのだけれど、takenさんが後2週間位で凍結
だと教えてくれたのでα3まで待つことにする。結構ズレるものらしいけど、気にしない。とりあえずFirefoxの流儀に慣れてみることが重要。
ちなみに入っているのは綾川版Firefox。のりさんに教えてもらってから公式ビルドは暫く入れてない。Gran Paradisoへ移行する時きっと綾川版のカスタマイズ部分に悩まされることになるのだろうけれど、それはそのとき考える。
Gran Paradisoα3へ乗り換えるときのためにメモる。なお、このエントリーは数日間更新が続く可能性があります。
上からざっくり眺めて変えた方が良さ気なところはがんがん変える。ちなみにGUIで設定できる部分は適当に変え終わってる。
書留終えた後でprefs.jsとやらに変更された情報が全てそのまま残るという事実を知った。なんて無意味なことに労力を費やしたんだ。
/などを押した直後にだけ検索が反応するようにaccessibility.typeaheadfindをtrue
に変更。
Firefoxにはインターネット・キーワードという機能が搭載されており、アドレスバーに適当な語を入力するとそれっぽいページに転送してくれる。誤植などを上手い具合に吸収してくれる良い機能なのだが、Wikipediaに飛ばされたりGoogle検索結果に飛ばされたり時にはFeeling Luckyが実行されたりと落ち着かない。
とりあえずYahoo!検索に飛んでくれるように、keyword.URLの値をhttp://search.yahoo.co.jp/search?ei=UTF-8&n=20&va=
に書き換えた。
このご時世にソース記述順にリンクをフォーカスされても不便この上ないのでtabキーの挙動はOperaにあわせてフォーム要素のみとする。
accessibility.tabfocusの値を3
にすれば良いようだ。
あまり何が起こるのか把握してない。
livedoor Reader
に変更http://reader.livedoor.com/subscribe/%s
に変更フィードを開いたページにあるリンクとしてこれが使われることに気づき、そしてうまく動いていないことが発覚した。適当に検索したらmalaさんが解説してたのでその値をそのまま使うことにした。追加ではなく置換させたいので直接about:configを書き換え。今はこんな感じ。My Yahooも要らんのでvalidatorに変えた。
livedoor Reader
に変更http://reader.livedoor.com/subscribe/?url=%s
に変更FEED Validator
に変更http://www.feedvalidator.org/check.cgi?url=%s
に変更browser.sessionstore.max_tabs_undoの値が10
とある。最初セッション保存時に使われると勘違いして50
へ変更したのだけれど、閉じたタブくらいでしか使わないらしいので3
にしてみた。メモリの節約重要。
コンテンツネゴシエーションで痛い目に遭うのでgeneral.useragent.localeintl.accept_languagesをja
に変更。これはGUIでも設定できたらしい。見逃してたか。
ちなみにUIの表記を決定する際に利用される値がgeneral.useragent.localeらしい。英語で統一したいのでこちらは標準状態であるen-US
のままにしておく。
layout.frames.force_resizabilityとかいう素敵項目があったので迷わずtrue
に変更。
スペルチェックしたくなるような単語はATOKのカタカナ語英語辞書を利用してしまう人間なのでスペルチェックは無効で良い。layout.spellcheckDefaultを0
にした。
しかし、こんなことやってるから英単語のスペルにいつまで経っても自信が持てないんだろうな。悪循環。……しかし断ち切らない。
layout.word_select.eat_space_to_next_wordとかってな設定値でテキスト上でダブルクリックした際に後ろの空白文字を含めるか否か設定できるらしい。空白なんていらんからfalse
に変更。
とりあえず手元のOperaにあわせてnetwork.http.max-connectionsを32
に、network.http.max-connections-per-serverを16
に増やした。
network.http.pipeliningはtrue
に変更。network.http.pipelining.maxrequestsは初期値4
のままにしておく。
同一ドメイン下のみ送信とか欲しいけど、無いみたいだから気にせずそのまま送信することにした。
network.http.sendRefererHeaderを1
にするとSend only on clicked links
、すなわちリンクを踏んだときにだけリファラが送られるようになるらしい。初期値の2
だと画像読み込み時にも送信される。むしろ必要になる機会が多いのは画像だから1
の必要性はあまりないような。
もりやまさんからRefControlを導入することで実現できる旨を教えていただきました。ありがとうございます。
network.standard-url.encode-utf8とかってな項目があったのでとりあえずtrue
にしてみた。
同じページから一定数以上のタブを開けない、という仕組みがFirefoxには用意されているようだ。が、閾値が小さすぎる。browser.tabs.maxOpenBeforeWarnで設定できるようなので、100
に変更した。
のりさんにmousewheel.withnokey.numlinesの存在を聞いたのでとりあえず3
にしてみた。mousewheel.withnokey.sysnumlines を false にしないと効かないので注意が必要
だそうだ。
今話題のなんでもJavaScriptでいじる系拡張userChrome.jsをのりさんの使い方を丸パクりしつつ導入。それに従ってSub-Script/XUL Loaderを入れ、以下のJavaScriptを突っ込んでみた。
browser.js の 1461行めらへんの 10 を好きな数字にすれば良いそうだ。
コンテキストメニューに「タイトルと URL をコピー」「タイトルと選択した部分と URL をコピー」メニューを追加する。
「ツール」メニュー中の「Live HTTP headers」メニューにアクセスキーを追加し、メニューの位置を「エラーコンソール」メニューの上部へ移動。
コンテキストメニューに現在のページを IE 、Opera で開くためのメニューを追加する。
タブバーを消していると最後のタブなんて概念は無くなる。従ってCtrl+Wを連打してFxが終了してしまうなんてのは困りもの。userChrome.jsでできそうな気がするのだけれど、今のところ先人は居ない模様。仕方ないのでBlankLastをinstall.rdfをごにょって導入。
いつの日かuserChrome.js書くぞ!と思い立つ日が来るのなら多分移植すると思う。……というか、実は簡単なんじゃないのかと思い上がって5分くらいソース見てたのだけれど、どこから手を付けて良いのか分からなくて諦めた。
keyconfigが入っていればそういう動作にならないはず、とのりさんに教わったのですっぱりこの拡張は削除した。ちなみにkeyconfigのC-wは最後のタブを閉じるとblankタブ開くみたい
とのこと。素晴らしい。
なんだかんだ言ってOperaのMDIを満喫していたようで、ウィンドウをきれいに並べられないと案外不便。正直縦2分割さえあれば満足なのだけれど、ないのは寂しいのでSplit Browserを導入。
よくよく読むとSplit Pannelってなシンプルな拡張も紹介されていた。自分の欲求はこれで十分満たせそうなのでこちらに入れ替え。
数少ない名前を覚えている拡張、Stylishを導入。ユーザスタイルシートの追加はuserstyles.orgでも使って、あとでやる。
Ctrl+数字での表示位置を元にしたタブ選択機能があるからタブバーを残すのもアリかなぁと思ったのだけれど、やはり一度慣れると表示履歴を元にタブの切り替えを行えた方が楽。
Stack Style Tabsてのがあるよとpiroさんが教えてくれたのでinstall.rdfをごにょってインストールした。今のところ問題なく動いている。
タブレット利用時に破綻するという問題があるにはあるが、まぁ拡張を無効にすればよいだけだし、気にするほどの問題ではあるまい。
keyconfigを入れてみたけれど、やはり1キーショートカットの利便性には遠く及ばない。キーショートカット周りはこの拡張とそれをベースにしたものしか見あたらないので対策が必要かもしれない。
直近の課題はSpaceだけで検索結果をがしがし読み進められるようにすることだろうか。と書いていたらRewind/Fastforward Buttonsでパクってますのでお試しあれ
とPiroさん。この拡張はSpaceも食べてくれるらしい。これが無いと結構辛い。zとxもきついけど、これに関してはとりあえずマウスジェスチャで凌いでる。
コンテキストメニュー拡張でワンキーショートカットが定義されているのを見て、思わず入れてしまった。あとで中身を見てみよう。
高山さんがw3m ユーザに送る Firefox のススメ (Firefox 1.5 版)とともにfunctions for keyconfigを教えてくださいました。この拡張自体は見つけていたのですが、初期設定の一覧を見て1キーショートカットは設定できないものと早とちりしておりました。情報ありがとうございます。
というわけで早速keyconfigとfunctions for keyconfigでがりがりキーボードショートカットを定義しはじめたのだけれど、Ctrl+2でブックマークパネルを開くように設定しようとしたら標準設定を上書きできない。助け船を求めたところそこはjsでハードコーディングされている部分だからkeyconfigでは上書きされないのではないか、とpiroさんが教えてくれました。
で、どうせなら一つにまとめた方が美しいと云うことで今ちまちまとuserChrome.jsを書いてます。暫くかかりそうです。
挫折。結局最低限必要な箇所をkeyconfigやらfunctions for keyconfigで定義した。あるものは使わないと損だ。
Shift+ZとShift+XはPiroさんに教えてもらいつつRewind/Fastforward Buttonsの関数を呼び込むように設定し、進むと戻るはそれぞれXとZを使えるようにした。
コンテンツにフォーカス戻せないからワンキーショートカットが使えなくなる!と泣きついたところPiro先生がこんなショートカットを教えてくれた。
F6でフレームのフォーカスを移せます
_content.focus()
というのをてけとうにショートカット定義しとくとよさげ
とのことなので暫定的にCtrl+Shift+Wへ_content.focus()
を割り振ってみた。f4kc_FocusNextFrame
でも行けると高山さんが教えてくださったのでこちらに置き換えた。とりあえずロケーションバーにフォーカスしているときコンテンツへフォーカスを移すことはできるようになったので、どんなときでもCtrl+L, Ctrl+Shift+Wでワンキーショートカットが使える状態になることは確認できた。(僕はブラウザを終了させない人なのでCtrl+Shift+Wのショートカットなど、むしろ殺してしまった方が都合がよいのだ。)今のところOperaのF9と同等のアクションにはなっていないけれど、何とかキーボードで操作できるようになった。
あとはフォームがフォーカスされていて文字入力の待機状態にあるときからの脱出方法を確立できれば良さ気。
HaH を導入していて hahExitKey を Esc にアサインしてい
る状態だとEscでフォーカスキャンセル出来るとのこと。ある程度速いマシンで使うと非常に快適
とのことなのでメモリ不足著しい私の環境では少々アレなのですが、快適そうです。
g
を付加するためだけに↓を打つ必要が無くなったいろいろ教えてくれたFirefoxプロフェッショナルな方々に感謝!
「自分のサイトを見る度にパースエラーを返す」JavaScriptが原因の気がする
との反応が気になったので補足します。
これはOpera9系レンダリングエンジンが当初からもつXMLパーサのバグです。不特定多数のウェブサイトで確認されるもので、JavaScriptに起因するものではありません。実際に遭遇するとなるほどなと思えるのですが、毎回違うエラー箇所を提示し、しばしばメッセージも異なります。一度読み込みに成功するとその後は調子が良くなったりと、中々謎の多いバグなのですが、一般的には既知のバグとされているものですのでそこは一つ納得して頂ければと思います。ちなみにここだけで発生するわけでも無いんですよ、これが。もちろんJavaScriptやらなにやら全て切っても再現します。パーサを無効にしない限り。
ところでこのバグ、Opera9.0系から9.1系になり発生頻度が飛躍的に上がったような気がするのですが、それは私の勘違いなのでしょうか。それこそFxへの乗り換えを決心させた最大の理由なのですが。
このバグについて勘違いしつつ悩んだ履歴はあまりに長い行があると?に残されていますので興味のある方はどうぞ。国内では私以外にusopionさんなどが同じ問題に悩まれています。幾つか国外でも悩んでいる例を見つけたのですが、そのリソースがどこにあるのかはとうの昔に忘れてしまいました。