Stylishを改造してみる

ユーザCSSを手軽に追加できるFirefoxの拡張機能、Stylishをとても重宝しているのですが、新規に追加するCSSの初期状態が以下のようになっていることにやや不満を持っていました。

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document url("http://...") {

}

不満なところ:

@namespace指定を外したい
見る対象となっているのは名前空間とは無関係のHTML(text/html)なサイトが多いので、XHTMLの名前空間指定はデフォルトでは不要と思いました。XMLなサイトで利用する時に後から名前空間指定を追加するのは簡単にできますし。(@namespaceについては別記事に追記しました)
url("...") の引用符を外したい
@-moz-documentの書式が記されている per-site user stylesheet rulesでは、URLに引用符をつけない書き方になっていたので、以降引用符をつけない書き方をする習慣がついていました。ついていても実用上問題は無いとは思いますが、何となく正式らしい書式に合わせたい欲求がありました。
url(...) ではなく url-prefix(...) を使いたい
使用頻度としては後者の方が圧倒的に多いので。

そんなわけで以下の手順にて改造。

  1. Firefoxを終了。
  2. プロファイルディレクトリから辿って extensions/{46551EC9-40F0-4e47-8E18-8E5CF550CFB8}/chrome にある stylish.jar を取り出す。
  3. 別のディレクトリに置いて、unzipで展開。
  4. content/overlay.js をエディタで開く。
  5. this.addSitethis.addDomain の定義を以下のように書き換え。
    this.addSite = function() {
        var url = window.content.location.href;
        var code = "@-moz-document url-prefix(" + url + ") {\n\n}";
        stylishBrowserOverlay.add(code);
    }
    
    this.addDomain = function(domain) {
        var code = "@-moz-document domain(" + domain + ") {\n\n}";
        stylishBrowserOverlay.add(code);
    }
  6. content/, locale/, skin/ を zipでstylish.jarに固め直す。
  7. stylish.jarを元の場所に戻す。
  8. Firefox再起動。

以上、覚え書きとしてメモ。無保証です。

参照: @-moz-document - 徒委記