WAT 0.3.1 リリース & Thunderbirdでタブのアイコン取得方法

Thunderbirdで簡易的にタブブラウジングを可能にする拡張機能、ちょこちょこと更新してます。

Thunderbird3はタブ機能があるものの通常では扱いにくく、Webページをタブに開く機能はあってもそのインターフェイスがありません。Thunderbird 3の新しいタブ機能でGoogle Waveの受信箱が開ける : ライフハッカー[日本版], 仕事も生活も上手くこなすライフハック情報満載のブログ・メディアの様にやればアドオン無しでタブに開くことは可能ですが、これじゃ一般人には辛いだろうということでより汎用的に作ったのがこの拡張です(詳細はThunderbird3.0用のタブにURLを開くアドオン WATを参照)。

レビューやTwitterでの反応を見る限り、Google Calendar等はThunderbirdで開いておきたいなど、それなりに需要があるようです。

まだAMOからレビューを受けていませんが、先日version 0.3.0および0.3.1をアップロードしてあります。先ほどAMOで承認されました

  • version 0.3.0 でリンクを右クリックでタブに開ける機能を追加し、より簡単にタブに開けるようになりました。
  • version 0.3.1 でWebページのfaviconをタブやツールバーのメニュー、ページ登録画面のリストに表示するようにしました。
    capture image
    • アイコンがあると見栄えがよくなりますねぇ。

Thunderbirdでページアイコンを取得する方法

んで、概要はこの辺りにして、技術的な話をば。

  • an nice icon for the toolbar (with a drop down menu on it, as in the tools menu)
WAT (WebApplicationTab) のレビュー :: Add-ons for Thunderbird

と前々から要望が上がっていたので何とか対応しようと頑張った話。
Thunderbird3だが、タブに開いてもfaviconを取得してくれません。また、Firefoxだとplacesがあるので、そこからアイコンデータを引っ張ってこれるが、Thunderbirdにはない。自前でゴニョゴニョと弄らないといけないのね、と頑張った結果、手法としては

  1. コンテンツのDOMContentLoadedを待つ
  2. iconのURLの取得
    • DOMの<link rel="shortcut icon" href="..."/>があれば、それを
    • なければ、XMLHttpRequestHEADメソッドをhttps?://domain.tld/favicon.icoに発行し、HTTPステータスが200かつContent-Typeimage/x-iconであれば、発行したURLを使用
  3. タブ部分に取得したURLを設定
  4. メニューのデータに開いているページと一致するものがあればデータとメニューを更新

という感じになった。
実コードはchrome/content/wat.js at master from teramako's wat - GitHubを見てください。