べ、別にFirefox4.0がリリースされたからこんな記事書いてるんじゃないんだからねっ!
あんたのことなんて待ってないし、今頃迎えに来てくれたってちっとも嬉しくないんだから!バカ!バカ!
とりあえずadd-on本体をぶっ込む
それはさておき、僕はDelicious Bookmarks (+ Vimperator)で楽しいbookmark生活を送っているわけですが、残念なことにDelicious Bookmarks公式のadd-onは(2011年3/23現在)Firefox4.x系に対応しておりません。
なのでとりあえずFirefox4.0にDelicious Bookmarksをぶっ込まないといけないわけですが、これ自体はinstall.rdfとかいじらなくてもAdd-on Compatibility Reporterでいけます。
Add-on Compatibility Reporter
https://addons.mozilla.org/ja/firefox/addon/add-on-compatibility-reporter/
前までこういう目的には Nightly Tester Tools (https://addons.mozilla.org/ja/firefox/addon/nightly-tester-tools/) を使ってたんですが、4.0RC1のあたりで互換性チェックの仕組みがもう一枚加わったらしく、Nightly Tester Toolsでは通らなくなったのでこっちを使っています。ちなみに、通らなかったのは僕の夢かもしれないし、もう既に通るように修正がなされているかもしれません。
Add-on Comなんとか を使うとFirefox4.系互換でないadd-onを突っ込めるようになりますが、モノによっては起動しなくなることもある(少なくともNightlyはあった)と思うのであまり強くおすすめはしません。
一般的に、「Firefox4.0にしたけど俺のお気に入りのadd-onが動かねぇぞゴルァ!」ってなった時に試すべきことは
1. Mozilla公式でなく、githubのリポジトリや開発者のサイトなどに行って、対応版がないか探す(例えばmozreplは4.0公式リリース前からgithubで対応版がforkされてました)
2. あきらめて対応を待つ
3. Add-on Compatibility Reporterとかに頼る
4. 自力でぶっ込む
5. 自力で対応させる
の順なんじゃないかなー、と。
Vimperatorの対応pluginを動くようにする
add-onだけぶっ込んだところでVimperatorと連携できないと何の意味もないので、対応するplugin(delicious_search.js)をFirefox4.0で動くようにしないと、と思ったけどしばらく前の自分がしていたのでここはOK
http://github.com/zentooo/rc/blob/master/.vimperator/plugin/delicious_search.js
vimpr/vimperator-pluginsにpatchを投げたので、マージされた暁にはここから取れるようになります。
vimpr/vimperator-plugins
http://github.com/vimpr/vimperator-plugins
ちなみにdirect_bookmark.jsは新しめのものであればそのまま動くと思います。
Delicious Bookmarksのバーを隠す
Vimperatorをユーザにはツールバーを全部隠して目隠しプレイをしている人も多いかと思いますが、僕もそうです。
当然Delicous Bookmarksのツールバーも隠すような設定(set go=)を行っていたのですが、Vimperator3.0系になってこの辺のオプションが変更になり、かつDeliciousのツールバーは「管轄外」の存在となっているようで.vimperatorrcに
set gui=tabs
と書いてもうまいこと隠れてくれない、という残念な事態になってしまいました。
というようなことをTwitterでつぶやいていると、Vimperator界のQBことid:teramakoさんが
@zentooo config.toolbars.delcious = ["ツールバーのID", "Delicuous"] とかしておけばいけると思う。
2011-03-23 00:28:48 via web to @zentooo
という助言をくれたので、うまいことDeliciousのツールバーが隠せるようになりましたよと。
やり方だけ先に書くと、.vimperatorrcに以下を追記しておくといけます。(実はこれだけでは隠れず、起動した後:set gui=tabs,nodelicious とやる必要があります。tabのみ表示したい場合。)
js <<EOM config.toolbars.delicious = [["ybToolbar"], "Delicious"]; EOM
せっかくなのでVimperatorの中身を見てみると、どうやらliberator.jsの1194〜1219行目あたりで、config.toolbars.hogehoge[0]に入っているidsでDOMをなめていって(下のコードで出てくる変数toolbarsの中身はconfig.toolbars)
let toolbarName = action.replace(/^(no|inv)/, ""); let toolbar = toolbars[toolbarName]; if (toolbar) { let ids = toolbar[0] || []; ids.forEach(function (id) { let elem = document.getElementById(id); if (!elem) return; let collapsed = false; if (action.indexOf("no") == 0) collapsed = true; else if (action.indexOf("inv") == 0) { if (typeof(actions[id]) == "boolean") collapsed = !actions[id]; else { let hidingAttribute = elem.getAttribute("type") == "menubar" ? "autohide" : "collapsed"; collapsed = !(elem.getAttribute(hidingAttribute) == "true"); } } else collapsed = false; actions[id] = collapsed; // add the action, or change an existing action }); }
set gui=nohogehoge, ...の場合にFirefox4.0以降ではwindow.setToolbarVisibility(elem, false)を呼び、ない場合は他で代用しているようですね。
if (window.setToolbarVisibility) window.setToolbarVisibility(elem, !collapsed); else if (elem.getAttribute("type") == "menubar") elem.setAttribute("autohide", collapsed); else elem.collapsed = collapsed;
ちなみに、Delicious Bookmarks add-onで追加されるツールバーのidを調べる必要があったんだけど
chrome://browser/content/browser.xul
Firefoxで上のリンクを開くとXUL含めたwindow全体がWebページとして開けるのでidはすんなり分かったんですが、もっとうまい方法がありそうな。
対応したけれども
Delicious自体の未来があまり明るくなさそうなので、add-on or Web APIがあって、今後しばらくは安泰そうで、タグから引けるブックマークサービスにそのうち乗り換えた方がいいかもしれないですね。