ShapeShifter 2.0 仕様編
ShapeShifter以前のアピアランスカスタマイズは、Extras.rsrcのコピーを取って編集し、オリジナルのExtras.rsrcと差し替えるという、非常にリスクを伴う作業でありました。 この場合、システムのバージョンにより全リソースを見直さなければならない、とか、リストア環境を整わなければならない等、気の遠くなるような作業を強いるところです。 また、Extras.rsrcの中にあるpxm#リソースこそがコントロールの画像データなのですけれども、眩暈のするような数であり、アピアランスカスタマイズは一部の好き者によって行われていた程度でした。
ShapeShifterが画期的なのは、これに対してShapeShifterのguiKitカスタマイズされたコントロールの画像データを含むguiKitファイルは直接Extras.rsrc等のシステムファイルを書き換えず、その上に被さった形で描画される点です(ラッパー)。 詰まり、システムファイルの内容はそのままで、その上にShapeShifterの描画ルーティンが存在しているので、ユーザーが目にするのはshapeShifterのみだという事です。 その点若干の描画速度の低下が見受けられるのも事実ではあります。
また、同様の仕様により、ShapeShifterはroot権限で起動されたプロセスの画像データを切り替える事は出来ません。 例えば、アップルメニューにある「この Mac について」からでるウインドウはloginwindow.appというシステムが起動したアプリケーション(プロセス)ですので、ShapeShifterは反映されず、Aquaで描画されます。 この場合、旧態依然の方法で不足分を補わなくてはなりません。
ShapeShifterはバージョン2より、アイコンセットやカーソルセット、壁紙をguiKitの中に含ませ、統括的なアピアランス切り替えを実現させました。 カーソルセットはMightyMouse互換であり、MightyMouseをインストールしていないと切り替えが行えませんので注意が必要です。 これに対してアイコンセットはCandyBar互換ですが、CandyBarが無くとも切り替えが可能であり、アイコンセットの作成にCandyBarは必要ありません(逆に言えばプレパッケージされたiContainersファイルに書き出せないという事)。
またShapeShifterはラッパーですので、共通の画像データはこれらを独立させたままにせず、統合する事で作業の効率化を図ってます。 例えばプッシュボタンは、Extras.rsrcではカーボンアプリケーション用画像データとココアアプリケーション用画像データに分かれており、その数や夥しいところですが、ShapeShifter(のguiKitを作成するツール「ThemePark」)ではこれらを簡潔に纏めております。 更にはExtras.rsrcで不可能であったコントロールカスタマイズ(ルートメニューの透過)や、Extras.rsrcのリソースレベルでの拡張(MenuEnhancer)等も貪欲に組み込んできました。
(次のエントリーへ)





