userChrome.jsでTab Mix Plusの代替を図ってみた

Tab Mix Plusといえば言わずと知れた定番Firefoxアドオンですが、その実、多機能過ぎて使いこなせてはいませんでした。ぶっちゃけ「タブの多段表示」「タブの復元機能」辺りがあれば良かったので、この際アドオン一個減らしましょうと思い立ち、以前から気になってたuserChrome.jsで代替してみることに。

userChrome.jsってなんぞや

僕が説明するよか、もっとよくわかっている人のエントリを読んでもらった方が早いと思いますが……。要はJavaScriptを使って、Firefoxの概観や機能を思うように変えちまいましょうよというアドオン。Greasemonkeyと似た印象を受けますが、あちらはFxで表示したウェブページに変更を加えるスクリプトです。同じくuserChrome.cssってのもありますけど、あれはCSSなのでそもそも出来ることが違ってきますね。

ものがJavaScriptで、それもブラウザの機能自体に変更を加えるものなので、当然ながら危険なスクリプトを入れてしまうような可能性もあります。なのでその辺不安な人や、JavaScriptがわからないような人はやめておいた方が良いよね、らしいです。ただuserChrome.js用に配布されているスクリプトは僕の目からするとかなり複雑なので、ちゃんと読んだ上で使えてはいないのですが……。まあ自己責任、ってことで。

インストールとか

インストール方法は先のエントリーを見れば大体わかるところではありますが、一応自分のやったことをメモしときます。僕はver.0.8を入れました。探してみたところver.1.1が最新のようなんですが、言及してるサイトが少なく不安なのでやめときました。なんというヘタレ。

で、インストールするとchromeフォルダにuserChrome.jsというファイルができます。これに必要なスクリプトをじゃかじゃか書き込んでくわけです。ちなみにchromeフォルダの所在はXPの場合、

C:\Documents and Settings\(ユーザー名)\Application Data\Mozilla\Firefox\Profiles\(任意の文字列).default\chrome

です。Application Dataフォルダは不可視になってるので、フォルダオプションで見えるように変更しとかないとアウト。

サブスクリプトローダーの導入

userChrome.jsに書き込めばいいといっても、いくつもスクリプトをぶちこんでたら1ファイルがかなり長くなってしまうし、なにより訳がわからなくなる。なので出来れば機能ごとに別ファイルにしたいよねーってことで、それを実現するのがサブスクリプトローダーと呼ばれるスクリプト。これをuserChrome.jsに書き込んでおくことで、同一フォルダ内などの***.uc.jsファイルを読み込んでくれるようになります*1

僕が使ったのはこちら。ブラウザの「ツール」メニューから各スクリプトの設定などもできるようになるので便利です。インストール方法やフォルダ構成はリンク先を参照して下さい。chromeフォルダ直下にuserChrome.js、000-windowhook.uc.js、SubScriptなどのフォルダが入り、SubScript下にrebuild_userChrome.uc.xulが入る形になります。僕のchromeフォルダは今こんな感じ*2

UTF-8で動かない?

で、ここまでしっかりやって、追加したいスクリプトも入れたのに、なぜかうんともすんとも言わない。名前も合ってるし、インストールしたファイルにも間違いはないし、何が原因かわからない。ひょっとしてFx3.6に対応してないのか??とか色々考えたんですが……

結論としては、スクリプトの文字コードUTF-8からShift_JISに換えたら動きました。……あれえええ??? 普通に考えてUTF-8を使うべきだろうし、冒頭に挙げたまとめサイトにもUTF-8で保存しろって書いてあるんですが……。この点は謎。放置してしまってますが、いつかまた見直さなきゃいけないかもしれません。僕が間違ってるのか、うちのエディタがおかしいのか……。

使用したスクリプト

ちなみに以下のスクリプトを入れてます。

Yahoo!ジオシティーズ - エラー

念願の多段タブ。非常にイイ!です。

http://space.geocities.jp/alice0775/STORE/openTabsWhere_whichTabSelectWhenCloseTab.uc.js

タブに関するアクション(閉じたときとか)を色々設定です。中身を覗いて、コメント読みながら自分の好みで改変が必要。

Yahoo!ジオシティーズ - エラー

最近閉じたタブをコンテキストメニューから復帰可能に。

http://space.geocities.jp/alice0775/STORE/textLink.uc.js

アドオンのテキストリンクに相当。リンクの貼られてないURLをダブルクリックで開く。

以上4つを入れてTab Mix Plusとテキストリンクはアンインスコ。なんとなく起動が軽くなったような気がしてます。

余談:タブ追加&タブ一覧ボタンも消してみた

Tab Mix Plusを消したことで、タブ追加ボタンとタブ一覧ボタンを消せなくなってしまったので、こちらはuserChrome.cssをいじって消してみました。

tabbrowser .tabs-newtab-button { display: none !important; }
tabbrowser .tabs-container> stack { display: none !important; }

あ、一行にまとめられたか。userChrome.cssについてはここが詳しかったです。

*1:つまり今後追加したいスクリプトは、すべて***.uc.jsという名前で保存することになります。***は任意の文字列でおkみたいです。

*2:UCJSFilesやxulといったフォルダは作ってないです。たぶん使わないので。