たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
TBEの分割・再構築の一環で、マルチプルタブハンドラに続いて情報化タブを公開した。
今回、未読タブの強調表示の方法は斜体で決め打ちにした(userChrome.cssでカスタマイズできるけど)。設定UIに凝っても誰も喜んでくれないみたいだから…… 現在のタブを強調表示する機能は、Fx 2のタブだったら最初から現在のタブが判別しやすくなってるから、オミットしてしまった。
これが第2弾なのは、実装に手間がかからないからというだけの理由なんだけど、まあともかく、これでuserChrome.cssを使ってタブを縦置きすれば、とりあえずFirefox 2には移行できるかなー。という感じ。
いちおう旧TBEよりは若干改良してある。
マルチプルタブハンドラを更新する中で、思い付いたというか気がついたことなんだけど。
nsISessionStoreを使ってウィンドウやタブを複製する方法って、うまくやればもっと効率よくやれるんだな。getWindowState()
で取得した文字列をそのまま使うんじゃなくて、一旦eval()
で評価してオブジェクトの形に戻して、不要なタブのデータとかをあらかじめ全部削除してから、もう一度toSource()
でJSON風文字列に戻して使えば、無駄なタブを開く→初期化→無駄なタブを削除 という処理をなくすことができる。
ていうかもっと突き詰めれば、ウィンドウ全体の状態を取得した後で、そのデータの中からある特定のタブの状態だけを抜き出して(それ以外を消して)、そのウィンドウ自身に対してsetWIndowState()
で「復元」を実行してやれば、タブをウィンドウ内に複製することだって簡単じゃないか。
というわけで、時々自分自身もタブの複製機能を使っていたこともあって、マルチプルタブハンドラにこの機能を組み込んでみた。
昨日一日がかりで作ってた物をマルチプルタブハンドラという名前で公開してみた。
「TBEのFirefox 2用アップデート」というのは敷居が高すぎるというか既に情熱が枯れてしまった僕には荷が重すぎてとても不可能なので、今ある機能のうち特に自分が今よく使っている機能から順番に再実装していくことにした。こいつはその中でも、タブのクローズボックスのドラッグによる選択→まとめて閉じる という操作だけに特化した拡張機能だ。
この機能は元々はiRiderというブラウザの挙動をパクった物で、TBEの機能の中では最も最近加わったやつなんだけど、Firefox 2標準のタブの使い方を勉強するには手頃な規模の物になったと思う。
で、せっかくだから似たような実装で実現できる機能として、タブカタログの「ドラッグして選択→いろんな操作」という挙動も盛り込んでみた。メニューの内容は簡単に追加できるようにしてあるので、これからTBEの機能を分割していった後にも比較的楽にそれぞれを連携できるんじゃないだろうか……と、夢想してみている。
APIはまだちゃんとしたドキュメントは書いてないんだけど、草稿はあるんで、userChrome.jsあたりと組み合わせて誰か使ってみてくれないかなあ。とか。
あと、Tab KillerをFirefox 2向けにアップデートした時に勉強した成果を活かして、Firefox 2のセッション管理機能だけを使って「タブをウィンドウに分割」という機能も入れてみた。
何となく、この規模でこの程度の機能の物は既に誰かがもう作っちゃってるんじゃないかなーという気もするんだけど。どうなんだろ。
ていうか開発初期の数時間くらいの間、名前をどうするか悩んでて、「タブを選択したりまとめて閉じたりするアレ」とかのネタっぽい名前が結構有力候補になってたんだけど、結局こういうモヤモヤしたよくワカラン名前に落ち着いた。まあ、どうせ今頃こんなの作った所でハナから死んだプロジェクトみたいなもんだし、どうでもいいよね……
どうでもいいといえばこれはほんとにどうでもいいんだけど、「マルチプルタブハンドラ」てカタカナで書くと「ハムナプトラ」とか「アルハンブラ」とかそういうのと混乱して困る。
Firefoxの主要機能を開発するために投じられた多くの人々の多大な努力をぶち壊しにする悪夢の拡張機能、タブキラーがFirefox 2のために帰ってきましたよ。
Firefox 2正式対応は伊達じゃない。今回のアップデートではなななななんと! Firefox 2の新機能の「最近閉じたタブをもう一度開き直す」機能をいじくり倒して、「最近閉じたウィンドウをもう一度開き直す」という機能に作り替えてみました。ああ激しく無駄な努力。
ソース見ればだいたい分かると思うけど、一応、実装の仕方を以下に説明しておく。
URNサポートをさらに更新して、今度こそあらゆる場面でちゃんとURNをURLにリダイレクトできるようにした。
何かヒントはないかと思ってbbs2chreaderのb2rThreadRedirector.jsを見たら、nsIContentPolicyの実装?を使って内部的にリダイレクトを行えるようだということが分かった。リダイレクト処理をプロトコルハンドラから分離して同様の実装に移してみたところ、うまくいった。URN用のプロトコルハンドラは現在では、単にurn:というスキーマのURIへのアクセスを受け付けるための役割しか果たしていない。
というわけで、以下、Firefox内部でリダイレクトを行う方法をメモしておこう。
なんで独自プロトコルへの対応方法なんか訳してたのかというと、URNサポートを抜本的に改善したかったからなのですよ、と。
今までは、URIの読み込みを行う関数やメソッドについて、URNが渡されたらURLに置き換えてから本来の処理に渡すようにあちこち書き換えるという、とてつもなく泥臭いことをしていたので、場面によってはURNをリダイレクトできないこともあった。今回の更新ではこのやり方を全面的に改めて、プロトコルハンドラを使って「urn:」というスキーマへ対応するという形に構造を作り替えたので、基本的にはどんな場面からでもURNを対応するURLにリダイレクトできるようになった。
チャンネルの生成時にそのままリダイレクト先のURLを渡すとロケーションバーにURNが表示されてるのにAmazonのページが表示される、みたいな問題を回避するのにだいぶ手こずった。結論から言うと、data: URLでHTML文書片を渡したところなんとかうまくいくようになった。と思う。
……あ。逆に、browser以外で読み込んだらこれじゃマズいことになるか……
XUL/Migemo勝手改造版の新版を公開した。目に見える所では、アイコンを追加したのと、クイックMigemo検索(自動的に始まる、もしくは「/」キーで開始する検索)の終了トリガーを変更できるようにしたくらいしか違いは無い。
根本的に変わったのはバックエンドで、先日から取り組んでた事の成果を反映して、主要な部分をXPCOMコンポーネント化した。以下、開発者向けの情報。
Ez Sidebar、ずっと放置してたけど更新した。install.rdfの記述もFx 2で使えるように直した。なんかエラーが起こってたから直さなきゃと思ってずっとあれこれしてたけど、見当違いの所ばっかり見てて6時間以上は無駄にしてしまった
うーん。対象バージョンをFx 2以降くらいに限定して作りを直すべきかなあ……現状は、他の拡張機能が動かないとか諸々の意見を受けて、このさいだからとbrowser.xulをそのまんまオーバーレイで読み込ませる事でブラウザに組み込まれた拡張機能もすべて分離したサイドバー内に読み込むようになってるんだけど、分離したサイドバー内で動作することを想定されてない(ていうか普通はそうだ)拡張機能、例えばXUL/Migemoとかでエラーが起こってしまっていて、動作の上では問題ないんだけど、エラーコンソールにエラー表示が出るのがいまいちキモい。
これを解消するには、不精してbrowser.xulまるごとオーバーレイで読み込むのをやめて、必要な所だけをezsidebar.xulに直に書く事なんだけど……コンテキストメニューの定義の事とか考えると気が重くなってきて、やっぱりやめようかな……って気になってくる。
Thunderbird 2でメッセージ内検索がFind As You Type/Find Barベースの物に変わったということで、これから仕事でTb 2をいじくり回す機会も増えてきそうだからその練習も兼ねて(?)、XUL/Migemo勝手改造版をTb 2に対応させてみた。あと、Tb 2対応のためにコードの一部を若干抽象化したので、その勢いで同じくFind Barを使ってる「ソースの表示」ウィンドウでもXUL/Migemoを使えるようにしてみた。
新規プロファイルでTb 2(2.0正式版リリースに向けた最新のナイトリービルド)を起動して気がついたけど、「戻る」「進む」って初期状態でツールバーに表示されてるのね。カスタマイズで自分で追加しなきゃいけないって聞いてたから「ありえねー」と思ってたけど、単に旧バージョンからプロファイルを引き継いだ人だけがそうなるってことだったのか。
あとGmailのアカウントを簡単に設定できるようになってた(名前とメールアドレスを入力するだけでOK)のは地味に嬉しい。内部的にはただのアカウント設定のテンプレート内蔵ってことなんだけど、こんな調子で有名どころのサービスを一通り網羅してくれてれば、個人ユーザ向けにお薦めできるポイントになると思うんだがなあ。
久々にXUL/Migemoを更新した。標準の検索ツールバーの挙動を見てたら、XUL/Migemo入れてると検索ツールバー出しっぱなしにしたままタブを切り替えるとかそういった操作ができなくなってしまってたことに気付いたので、その辺りをきっかけに色々改修した。
元のXUL/Migemoでは、ヒットした語句全部をハイライト表示したらシャレにならんからということでこの機能が無効になってたんだけど、よく考えたら、ヒットした正規表現の内容を全部ハイライトせんでも、実際に今ヒットしてる単語でハイライト表示したらよくね? ということに気がついたので、この機能は復活させた。
一番手こずったのは、テキストエリアの中も検索できるようにするという変更。色々試行錯誤してどうにか形になったので入れてみたけど、若干動作が怪しいところもあるので、まあ、そういうものだと思ってください。
ついでに先日Trunkに入ったという、選択範囲の内容で検索を開始する機能も入れてみた。秀丸とかのエディタでは普通にこういう挙動だしね。
とまあそんな具合で、常時XUL/Migemoをオンにしててもそれなりに使えるようにはなってきたと思う。