Moon BrowserからFirefox8に移行する試み

  • 三年前にFirefox3.5がリリースされたときもチャレンジして失敗したのだけど、ニコニコ動画用に使っているFirefoxを3.6から8.0にアップグレードしたら、想像以上の変わりようだったので思い切って再チャレンジしてみることに。

要件

Ctrl+Shift+FでWeb検索
  • http://mozilla.dorando.at/からkeyconfig.xpiを導入
    • 設定画面にて、Web検索をCtrl+Shift+Fに設定すればOKと思ったら、思わぬ落とし穴が。これだと、単にWeb検索窓にフォーカスが移るだけだった。
    • Moon BrowserのCtrl+Shift+Fは、Web検索窓が表示された時点でクリップボードの内容が表示されている状態。これが便利で重宝しているのでなんとかしたい。
  • PasteSearchにキーボードショートカットを割り当て
    • PasteGoを導入すると使える機能で、対応するコマンドはpastego.onPasteSearch()
    • Keyconfigでキーボードショートカットを割り当てればOKだがなんか違う。これだと、クリップボードの内容を元に検索して、その結果が表示されてしまう。
  • まあ、前者の方法でWeb検索窓に移動してからCtrl+Vで貼り付けるか、後者の方法で検索エンジンの窓からキーワード修正すればよいだけなのだが...しばらく保留。もうちょっと悩んでみることに。
  • ところで、長らくこういうキーの探し方が分からなかったけど、DOM Inspectorというツールを使えばよいと知ったのが収穫でした。Scancodeを調べるときの窓使いの憂鬱と同じような感じですが、非常に便利。使い方はこちらが参考になります。
タブが端で折り返して表示される
  • ツリー型タブを無効化した状態で、Tab Mix Plusの表示 -> タブバーで設定すればOK
  • 各所のレイアウトが変わっているので、縦がよいか横がよいかは悩みどころですな。
検索バー(Ctrl+F)のトグル
前後のタブに移動するキーボードショートカット
  • 同様の主旨のアドオンは存在するので、導入自体は簡単。しかし、どちらの方法を使ってもスムーズに動いてくれない。システムデフォルトのCtrl+PGUP/PGDNだと問題なく動くので、アドオン側でフックしているところがボトルネックになっていると想像。できれば、直接設定ファイルを書き換えてしまいたいところ。
    • Single Key Tab Switchを使う方法
    • Keyconfigで新規のキーアサインを追加する方法
      • タブを一つ右に移動 gBrowser.mTabContainer.advanceSelectedTab(1, true);
      • タブを一つ左に移動 gBrowser.mTabContainer.advanceSelectedTab(-1, true);
  • こちらはキーボードショートカットをカスタマイズするアドオンだが、肝心の機能が対象にないし、新規の定義とかは出来ないらしい。
ブックマークサイドバーをF1でトグル
  • ブックマークだけじゃなくて、ダウンロードについても同様の話が出てくるので、まとめて対応できるAll-in-One Sidebarで対応。
URLを抽出してIrvineと連携する機能
  • 前回諦めた最大の原因だが、今回も同じ結論になった。定番のDownThemAll!!、URL抽出系アドオン、外部ソフトも調べたけど、どうにもうまくいきません。orz
  • 仕方ないので、このためだけにMoon Browserを起動することになりそう。

プロファイルの分離

経緯
  • 自分の使い方はこんな感じ。それぞれ全く違う用途なのでcookieや設定も共有していない方が望ましい。そんな事情もあって、左側はIE(Trident)、右側はFirefoxという棲み分けで長らくやってきました。
    • 左画面
      • Moon Browser、メイン、縦長、一般的なWebブラウズ、ブログ等
    • 右画面
  • とはいえ、ここに来て、IE8ベースのTridentはスクリプト処理が遅いし、まともに表示できないページが増えてきたし、WindowsXPではIE9はリリースされないし、将来Windows7にしてもMoon BrowserはIE9ではまともに動かないようだし、一方でFirefox8は異様に軽くて速いしという事情が重なったので、一念発起してアップグレードを図ったのはよいけど、これら二つは用途が明確に違うので、ポリシーも構成も異なるのでプロファイルの分離が必須。
  • 当初考えたのは、Firefoxと完全互換を謡っているPaleMoonをメインにして、サブをそのままFirefoxにする構成。しかし、やってみると一部のアドオンが動かないし、言語パックも微妙におかしい。更に、新興勢力なのでいつまでプロジェクトが続くのかも怪しい。そんなことを考えると、メインブラウザに採用するのはちょっと怖い。
  • そんな経緯からFirefoxのプロファイルを分離するという未知の作業に進み出したけど、なんとかなりそうなところまでは持ってこれたので良かった。:-)
事前準備
基本作業
  • 未知の作業だったが、プロファイルの移項作業自体はあっさりと終了。デフォルトのプロファイルは%APPDATA%配下に残したまま、コピーする形で別のドライブに2つのプロファイルを作成。
  • 起動用のショートカットを作成して起動しようとしたところで問題発生。1番目は起動するが、2番目と3番目が起動しない。
    1. E:\...\DropMyRights.exe "C:\Program Files\Mozilla Firefox\firefox.exe"
    2. E:\...\DropMyRights.exe "C:\Program Files\Mozilla Firefox\firefox.exe" -p "main" -no-remote
    3. E:\...\DropMyRights.exe "C:\Program Files\Mozilla Firefox\firefox.exe" -p "sub" -no-remote
権限降格(DropMyRights -> psexec -l -d)

使用法: psexec [\\<コンピューター>[,<コンピューター2>[,...] | @<ファイル>][-u <ユーザー> [-p <パスワード>]][-n s][-l][-s|-e][-x][-i [<セッション>]][-c [-f|-v]][-w <ディレクトリ>][-d][-<優先度>][-a n,n,... ] cmd [<引数>]
-l (Administrators グループを削除して、Users グループに割り当てられている特権のみを許可する) 制限付きのユーザーとしてプロセスを実行します。Windows Vista では、プロセスは低い整合性で実行されます。
-d アプリケーションが終了するのを待ちません。このオプションは、非対話型のアプリケーションにのみ使用します

  • psexecによる権限降格を組み込んだショートカット
-no-remoteオプション

複数の異なるプロファイルを使用してFirefoxを同時起動する事ができる。

Firefox.exe -no-remote -p 別プロファイル名1
Firefox.exe -no-remote -p 別プロファイル名2
Firefox別バージョン.exe -no-remote -p 別プロファイル名3起動するFirefoxのバージョンは異なっていても使用プロファイルが異なっている限りにおいて幾つでもメモリの許す限り同時起動できる。

ただし, -no-remote 付きで起動されたものに対しては, 外部からリンクを渡してそれを開くことができない。従って, このような使い方をしていて, かつ外部からリンクを渡してそれを開きたい場合は, どれか一つは -no-remote無しである必要がある。

  • 分離したプロファイルを完全な状態で指定するためには-no-remoteが必須らしい。これを外すと起動はできるが、おかしいことになる。仕方ないので、Firefoxインストール時に標準で作られるプロファイルを削除。mainをデフォルトに指定して、-no-remote無しでも起動できるようにしてみました。-p "main"はなくてもかまわないが、念のため。
-new-tab
  • さて、今度は別の問題が発生。メールソフトからFirefoxを呼び出す場合、以下の動作を期待したい。
    • Firefoxが起動していない場合、新規にFirefoxを起動して、そのURLを開く。
    • Firefoxが起動している場合、既存のFirefoxに新しいタブとして、そのURLを開く。
  • しかし、このままだと、常に新規のFirefoxが起動してしまう。回避するためには、コマンドライン引数として新しいタブとして開くというのを明示してやればよさそう。

new-window Loads a URL in a new browser window. firefox.exe -new-window
new-tab Loads a URL in a new tab. firefox.exe -new-tab

  • 結論として、メールソフトには以下の文字列を渡すことに。
  • V2Cについてはこれ。
  • インターネットショートカット
    • E:\...\PsExec.exe -l -d "C:\Program Files\Mozilla Firefox\firefox.exe" -new-tab %1
    • DDEはdisableしても勝手にenableされるから関係ないのだろうか。
    • 再インストールのたびに手動で設定するのは大変なので、レジストリ登録用ファイルはこんな感じで。

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\http\shell\open]
[HKEY_CLASSES_ROOT\http\shell\open\command]
@="E:\\...\\PsExec.exe -l -d \"C:\\Program Files\\Mozilla Firefox\\firefox.exe\" -new-tab %1"
[HKEY_CLASSES_ROOT\http\shell\open\ddeexec]
[HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Application]
@="PsExec"
[HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Topic]
@="System"

  • Saezruriはどうしようもなさそう...と思っていたら、自動的に解決していた様子。ここまで書いて気づいたが、最大の難関はxyzzyのclickable-urlなのかも。

外見

システムフォントを小さくする
  • userChrome.css
    • ある程度以下には小さくできないのか、うまく設定が反映されていないような...

{
font-size: 9pt !important;
}
menupopup > * {
font-size: 9pt !important

ブックマークメニューの幅を狭くする
  • userChrome.css

#bookmarks-ptf toolbarbutton menupopup menuitem,
#bookmarks-ptf toolbarbutton menupopup menu,
#bookmarksBarContent toolbarbutton menupopup menuitem,
#bookmarksBarContent toolbarbutton menupopup menu,
#bookmarks-menu menupopup menuitem,
#bookmarks-menu menupopup menu,
#bookmarksMenu menupopup menuitem,
#bookmarksMenu menupopup menu,
#bookmarks-chevron menupopup menuitem,
#bookmarks-chevron menupopup menu,
#pof-menu menupopup menuitem,
#pof-menu menupopup menu,
#PlacesToolbarItems toolbarbutton menupopup menuitem,
#bookmarks-menu-button menupopup menuitem
{
max-width: 15em !important;
}
#bookmarks-ptf > toolbarbutton > menupopup > menuitem,
#bookmarks-ptf > toolbarbutton > menupopup > menu,
#bookmarksBarContent toolbarbutton > menupopup > menuitem,
#bookmarksBarContent toolbarbutton > menupopup > menu,
#bookmarks-menu > menupopup > menuitem,
#bookmarks-menu > menupopup > menu,
#bookmarksMenu > menupopup > menuitem,
#bookmarksMenu > menupopup > menu,
#bookmarks-chevron > menupopup > menuitem,
#bookmarks-chevron > menupopup > menu,
#pof-menu > menupopup > menuitem,
#pof-menu > menupopup > menu,
#PlacesToolbarItems > toolbarbutton > menupopup > menuitem,
#bookmarks-menu-button > menupopup > menuitem
{
max-width: 15em !important;

faviconを表示させない
  • userChrome.css

/* ブックマーク内のアイコン(フォルダ以外)を消す
* http://firefox.geckodev.org/?FAQ#v8949756 */

#bookmarks-menu menuitem.bookmark-item > .menu-iconic-left
{visibility: hidden !important;}
#bookmarks-menu menuitem[class="menuitem-iconic bookmark-item"] .menu-iconic-left
{visibility: hidden !important;}

/* ブックマークツールバーのファビコン(フォルダ以外)を消す
* http://firefox.geckodev.org/?FAQ#v8949756 */

#PersonalToolbar .bookmark-item:not([container="true"]) .toolbarbutton-icon
{display:none !important;}
#PersonalToolbar menuitem.bookmark-item > .menu-iconic-left
{visibility: hidden !important;}
#PersonalToolbar menuitem[class="menuitem-iconic bookmark-item"] .menu-iconic-left
{visibility: hidden !important;}

/* サイドバーのブックマーク等のアイコン(フォルダ以外)を消す
* http://firefox.geckodev.org/?FAQ#v8949756 */

#bookmarks-view treechildren::-moz-tree-image(leaf) ,
#history-panel treechildren::-moz-tree-image(leaf)
{
list-style-image: none !important;
width: 0px !important;
height: 0px !important;
margin: 0px !important;
}

faviconを表示させない
  • about:config
    • browser.chrome.favicons false
    • browser.chrome.site_icons false
    • browser.chrome.image_icons.max_size 0
  • その上で、places.sqliteを物理削除する。

その他

描画開始のタイミング
  • users.js
    • user_pref("nglayout.initialpaint.delay", 0);
IEでいう「Webサイトを表示するたびに確認する」の設定

表示された[browser.cache.check_doc_frequency]をダブルクリックして値入力ダイアログを表示し、以下の中から希望する更新確認方法に応じた0-3の数値を入力してOKをクリックする。

<選択肢>
0-セッションごとにページの更新を確認する。
1-ページにアクセスするたびに更新を確認する。
2-ページの更新を確認しない。
3-ページの期限が切れている場合に更新を確認する。(デフォルト)

Fireboot - Firefox ‹N“®‚‘¬‰»ƒc[ƒ‹
  • Firebootのバージョンが上がっていました。プロファイル毎に最適化もできるし、確実に速くなるのが素晴らしい。
  • しかし、途中で手詰まりとか言われても困るぞ。
  • Java Quick StarterやJava Consoleと並んで腹立たしいプラグイン。システムワイドに余計なものをインストールしておいて、削除しようとするとトラブル起こすとか何事だ。

方法 2:.NET Framework Assistant for Firefox を削除する

拡張機能レジストリ キーを削除します。これを行うには、次のいずれかの方法を使用します。
reg DELETE "HKLM\SOFTWARE\Mozilla\Firefox\Extensions" /v "{20a82645-c095-46ed-80e3-08825760534b}" /f

Firefox ユーザー エージェントで、手順 1. の変更をリセットします。これを行うには、次の手順を実行します。
Firefox を起動して、Firefox のアドレス バーに「about:config」と入力します。
下方向にスクロールするか、[フィルター] を使用して、ユーザー設定項目を検索します。
general.useragent.extra.microsoftdotnet?この項目を右クリックし、[リセット] をクリックします。
Firefox を再起動する

.NET Framework の拡張ファイルを削除します。これを実行するには、以下の手順を実行します。

rmdir /s /q "c:\Windows\Microsoft.NET\Framework\v3.5\Windows Presentation Foundation\DotNetAssistantExtension"

  • 手順通りにやってもうまく削除できないので、強制的に削除するバッチファイルを作った。OS再インストールして一段落したところで、一度だけ実行すれば済むはず。

reg DELETE "HKLM\SOFTWARE\Mozilla\Firefox\Extensions" /v "{20a82645-c095-46ed-80e3-08825760534b}" /f

pause

rmdir /s /q "c:\Windows\Microsoft.NET\Framework\v3.5\Windows Presentation Foundation\DotNetAssistantExtension"

アドオン

  • 気がついたらかなりの量のアドオンが入ってるな...

アプリケーション: Firefox 8.0 (20111104165243)
OS: WINNT (x86-msvc)

  • Add Bookmark Here 2 4.0.20111106
  • Add-on Compatibility Reporter 0.9.3
  • All-in-One Sidebar 0.7.14 (互換性無し)
  • BetterPrivacy 1.67
  • Cache Status 0.7.10 (互換性無し)
  • CipherFox 3.4.1 (互換性無し)
  • Classic Compact Options 4.0.9.1
  • Customizable Shortcuts 0.5.8
  • DOM Inspector 2.0.10
  • Double Click Closes Tab 0.21
  • Download Statusbar 0.9.10
  • Extension List Dumper 1.15.2
  • FEBE 7.0.2
  • HTTPS Finder 0.77
  • keyconfig 20110522 (互換性無し)
  • Mark Unsecured Password Elements 1.02 (互換性無し)
  • NoScript 2.2
  • pastego 2.0.4 (互換性無し)
  • Single Key Tab Switch 0.2.5 (無効, 互換性無し)
  • SQLite Optimizer 0.7.7 (互換性無し)
  • Tab Mix Plus 0.3.8.6 (互換性無し)
  • Toggle Find Bar 0.1.1
  • UnMHT 5.7.2
  • ツリー型タブ 0.12.2011082901 (互換性無し)
  • テキストリンク 4.0.2011021601 (互換性無し)

課題

  • Web検索
  • キーボードショートカット
  • タブのアイコンを削除する方法
  • 外部アプリとの連携を検証
  • ブックマークからまとめて開くと空白タブが残ってしまう点の回避策
  • 折角なので、ブックマークも一からリセットしてみましょうか。