使用停止中のGrowlMailを有効にする方法

もはや、GrowlOSXの標準にして貰いたいくらい馴染んだイベント通知システムで、様々な場面で的確にイベント情報を表示して、ユーザーに安心を与えてくれる。メールを受信した時に、そのタイトルなどを表示してくれるGrowlMailも実に有り難い。
しかし、このGrowlMail、OSのアップデートの度に機能しなくなる。自分のMacBookでは、ここ最近はずっと使えない状態が続いていた。特に画面の狭いMacBookでは、Dockも非表示にしておくので、メールの受信に気付き難い環境だ。不便を感じる。困った...。

調べてみると、正常時は~/Library/Mail/Bundles/GrowlMail.mailbundle/にインストールされてMail.appを機能拡張してくれるのだが、OSのアップデートなどでMail.appのバージョンが少しでも変更されると~/Library/Mail/Bundles(使用停止中の)/GrowlMail.mailbundle/に移動されてしまい、利用できなくなるのだ。そこで、Webで検索してみると、同じ現象に悩む人はやはり多いらしく、そのものズバリな解決策が見つかった!(素晴らしい情報に感謝です!)

手順

  • ~/Library/Mail/Bundles(使用停止中の)/GrowlMail.mailbundle/Contents/Info.plistを開く。
    • Xcodeが利用できる環境であれば、Property List Editorで開くのがベストだが、テキストエディットで開いてもOK。
  • SupportedPluginCompatibilityUUIDsを探す。(一番下の方)
  • の中身を書き換える.。(2行、あるいは4行の追記になると思う)
    • 以下、修正後のInfo.plistをテキストエディットで開いた状態。
    • 「...(中略)...」は無視する。
...(中略)...
	<key>SupportedPluginCompatibilityUUIDs</key>
	<array>
		<string>B3F3FC72-315D-4323-BE85-7AB76090224D</string>
		<string>225E0A48-2CDB-44A6-8D99-A9BB8AF6BA04</string>
		<string>99BB3782-6C16-4C6F-B910-25ED1C1CB38B</string>
		<string>2610F061-32C6-4C6B-B90A-7A3102F9B9C8</string>
		<string>2F0CF6F9-35BA-4812-9CB2-155C0FDB9B0F</string>
		<string>0CB5F2A0-A173-4809-86E3-9317261F1745</string>
	</array>
</dict>
</plist>
  • 上記を保存したら、~/Library/Mail/Bundles(使用停止中の)/GrowlMail.mailbundle/を、~/Library/Mail/Bundles/GrowlMail.mailbundle/に移動する。
  • Mail.appを再起動する。
  • 環境設定...を開いて、GrowlMailの項目が復活していれば、おそらく成功。


SupportedPluginCompatibilityUUIDsとは何か?

  • Mail.appは、~/Library/Mail/Bundles/以下にxxxxxx.mailbundleを置くことで、機能を追加できる。
  • 但し、Mail.appのバージョンアップ等によって、xxxxxx.mailbundleが悪さをしてMail.appが起動しない等の問題が起こるのを避けるために、ある仕組みが用意されている。それは...
  • /Applications/Mail.app/Contents/Info.plistには、PluginCompatibilityUUIDという世界にたった一つしかないID番号が書き込まれている。
  • 一方、Mail.appの機能を拡張するxxxxxx.mailbundleも、SupportedPluginCompatibilityUUIDsというID番号の配列を持っている。
  • Mail.appは、自分自身のPluginCompatibilityUUIDが、xxxxxx.mailbundleのSupportedPluginCompatibilityUUIDsに含まれている時だけ、xxxxxx.mailbundleを取り込んで機能を追加するようだ。
  • /Applications/Mail.app/Contents/Info.plistを開いて、PluginCompatibilityUUIDを確認してみると...
...(中略)...
	<key>PluginCompatibilityUUID</key>
	<string>2F0CF6F9-35BA-4812-9CB2-155C0FDB9B0F</string>
...(中略)...
  • GrowlMailのSupportedPluginCompatibilityUUIDsに追記したのと同じIDが確認できた。

SupportedPluginCompatibilityUUIDsを素早く調べる

  • 今後もバージョンアップの度にGrowlMailが使用停止になる可能性があるのだが、
  • でも、大丈夫。Mail.appのPluginCompatibilityUUIDを調べて追記すれば良いのだ...と、思ったのも束の間、
  • あれあれ、その下の0CB5F2A0-A173-4809-86E3-9317261F1745というIDはどこから来たのだろう?と悩んでしまった。
  • よくよく調べてみると、/System/Library/Frameworks/Message.framework/Versions/B/Resources/Info.plistのPluginCompatibilityUUIDであった。
$ defaults read /System/Library/Frameworks/Message.framework/Versions/B/Resources/Info PluginCompatibilityUUID
0CB5F2A0-A173-4809-86E3-9317261F1745

コマンドにまとめる

もし、GrowlMailが使用停止になったら...

  • ~/Library/Mail/Bundles(使用停止中の)/GrowlMail.mailbundle/を、~/Library/Mail/Bundles/GrowlMail.mailbundle/へ移動する。
  • 以下のコマンドを実行する。
$ defaults write ~/Library/Mail/Bundles/GrowlMail.mailbundle/Contents/Info SupportedPluginCompatibilityUUIDs -array-add `defaults read /Applications/Mail.app/Contents/Info PluginCompatibilityUUID`
$ defaults write ~/Library/Mail/Bundles/GrowlMail.mailbundle/Contents/Info SupportedPluginCompatibilityUUIDs -array-add `defaults read /System/Library/Frameworks/Message.framework/Versions/B/Resources/Info PluginCompatibilityUUID`
  • Mail.appを再起動する。

以上の手順を試してみる価値がある。

  • 但し、バージョン対応を考えずに読み込ませることになるので、何らかの不具合が発生する可能性もある。
  • バックアップしてから挑むことにしよう。


GrowlMailの最新バージョンをダウンロードする

  • この日記を書いている時点で、すでに以下のページからGrowlMail 1.2.1b1がダウンロード可能だった。
  • まずは上記ページをチェックして、最新バージョンがアップされていないか確認、ですね。