FireFox

Last-modified: 2010-10-31 (日) 19:39:40

ブラウザの外見

二つのバイナリを使い分ける on Mac

通常作業用とdevelopping用のバイナリを使い分けるための方法。
たんにappをコピーするだけでは多重起動・expose上での区別などはできない。

1.IDをかえる

exposeなどもろもろのアプリケーションに確実に区別してもらうためにIDを変える。
PListEditorもしくはテキストエディタでFirefox.app/Contents/Info.plistを開き、そのなかのCFBundleIdentifierを適当に書き換える。
たとえば、

<key>CFBundleIdentifier</key>
<string>org.mozilla.firefoxdev</string>

2.多重起動用の引数を渡す

メインでないほうのfirefoxは、-no-remoteオプションをつけることでことなるプロファイルでの多重起動ができるようになる。

  • メインでない方のバイナリをfirefoxdev.appと呼ぶことにする。
    firefoxdev.app/Contents/Info.plistを開いて、CFBundleExecutableの項目を書き換える。
    仮に、firefox-launcherとする(あとで作るシェルスクリプトファイルの名前)。
  • firefoxdev.app/Contents/MacOSのなかに上でつけた名前のファイルを作り、実行許可を与える(右クリック-情報からパーミッション変更などとすればOK。もしくはchmod 755 firefox-launcher)。
  • このファイルをエディタで開き、中身を次のように書く。
    #! /bin/sh
    MYPATH=$0
    DIR=${MYPATH%/*}
    $DIR/firefox-bin -no-remote -P Dev; exit
  • 意味は本来のbinを、-no-remoteオプションとDevというプロファイルを使ってねというオプションを指定して実行。exitはおまけ(多分無くても動くが、コンソールから実行したときの綺麗さを考えて入れた)。
    https://developer.mozilla.org/ja/Command_Line_Options

以上の変更はもしかしたらバイナリの更新毎にやる必要がある。アップデートによってInfo.plistが書き換わる時と書き換わらないときがあるような気がするが、気のせいだろう(バージョン情報がかわるから常に書き換わるはず)。firefox-launcherは使いまわせる。

ブックマークツールバーのアイコン

なぜかmac版のfirefoxではブックマークツールバーのアイコンが標準で表示されないようになっている。Dockでも書いたように、明らかにこれはアクセシビリティを潰しているので、表示するようにしたい。
でも、なぜかここで拡張をわざわざ使わなければならないらしい。
https://addons.mozilla.org/ja/firefox/addon/7849
https://addons.mozilla.jp/firefox/details/6800
このあわせ技がオススメ。

TabStop

mac版で次に奇妙なのが、標準状態ではタブストップがボタンなどに効かないこと。tabで移動して入力するのが主になるフォームなどの操作では面倒。
といっても、これはmac側の標準の問題という部分もあり、設定方法はつぎのようになる。

システム環境設定を起動->マウスとキーボード->キーボードショートカット->下のほうの「フルキーボードアクセス」を変更

キーボード操作とマウス操作と、両方同時にはやりたくない人には必須のオプションだろう。画面内をマウスでウロウロするのはめんどくさいんです。

Hacks

ある操作を実行するためのjsコマンドを探す

たとえばブックマーク管理を開く・アドオンの画面を開くなどの機能を実現するために、どのコマンドを実行すればいいかを調べる方法。

1.ソースを見る

アドオンなどであれば、そのXULのソースを見れば重要なヒントがあると思われる。
Firefox事態のソースももっているといいかも。

2.DOMを調べる

DOM Inspectorでメイン画面(など)を開いて、関係ありそうな部分を探してみる。
XULオブジェクトで求めているものを持っているものがあったら、それのCommand属性を調べる。XULオブジェクトのコマンド属性はXULに書き込まれたCommandタグを呼んでいるので、たとえばBrowser:bookmmarksShowAllが見つかったら、これで再びDOM検索する。Commandタグがおそらく出てくるので、そのコマンドが呼んでいるJS(oncommand attr)をJSとして利用出来る。
メニューバー:#navigator-toolbox > #toolbar-menubar > #menubar-items > #main-menubar > ...
コマンド類:commandsetタグの中など