Archive for the 'Growl' Category

2011/10/08 アプリケーション構成が変わったGrowl 1.3への対応

Mac OS X 10.0が出た頃から「こんなのがあったらいいのに」と思っていたAppleScript対応メッセージ表示ソフト「Growl」。長らくフリー配布されてきましたが、目下Mac OS X 10.7, Lion対応のGrowl 1.3がAppStoreから170円で絶賛発売中!

growl1.jpg

日常的に使用しているあらゆる自作のAppleScriptで、Growlにメッセージ表示や途中経過の報告を行わせており、サードパーティのアプリケーションのうち活用度はダントツではないかと思えるほど。なくなってもらっては困ります。

Growlバージョン1.2まではGrowl本体(Preferences Pane)とGrowlHelperAppという2つのアプリケーションに分かれており、AppleScriptからはGrowlHelperAppに対してメッセージを投げていました。

AppStoreで公開する場合に、Preferences Paneという形態ではAppleの承認が下りなかったのか、はたまたPreferences Paneの仕様が変わって自由度がなくなったのか(たぶん前者)……

バージョン1.3は、「Growl」というアプリケーションが1つ存在するという形態に変更になりました。

当然のように、Growlに対してAppleScriptからtellしてみると……当然のように動きます。バージョン1.3以降のGrowlを対象にAppleScriptを書く場合には、「GrowlHelperApp」ではなく「Growl」にtellするように書く必要があるというわけです。

従来のバージョン1.2用に書いたAppleScriptをオープンしようとすると「GrowlHelperAppはどれですか?」とAppleScriptエディタが尋ねてくるので、かわりに「Growl」を指定すれば大丈夫です。

気になるのが、バージョン1.2と1.3の間でGrowlAppHelper/GrowlのAppleScript用語辞書の内容がどの程度変更されているのか、という話。

AppleScript用語辞書を(ASDictionaryで)書き出してdiffツールで(Apple純正FileMergeを愛用中)比較してみると、25ヶ所も違っていると言われます。メジャーなアプリケーションのマイナーバージョンアップの割に、ずいぶんと変更されているものです。

ただ、個別に確認してみると、ほとんどが「string」を「text」に書き換えた箇所であり、気にするほどのものではありませんでした。

ここで「すべて」ではなく「ほとんど」と書いたのは、大きな変更点が2つあるためです。

growl2.jpg

1つは、「Growl Suite」の「notify」コマンドのオプション「PICT image」が廃止になったこと。64ビット環境ではPICTの表示はサポートされていないのと、「PICT? ナニソレ???」というぐらいにPICTの存在感がMac OS X環境では消え失せたので、ほぼ影響はないでしょう。

もう1つは機能追加。

新たに「Gworl Control」suiteが追加され、「close all notifications」「pause」「resume」「disabling incoming network」「enable incoming network」「show rollup」「hide rollup」の7つの命令が追加になりました。また、applicationのpropertyに「is paused」と「allows incoming network」の2つの、アプリケーションの状態を示す属性が追加されました。

概要はこんなところですが、じゃあ本当にバージョン1.2用に作ったAppleScriptが、バージョン1.3上で問題なく動くかというのは…………やはり実際に試して確認するほかないでしょう。多分、大丈夫だとは思いますけれども。

2009/07/20 Twitterifficで選択中の発言の時間をGrowlで表示。アイコン付きで v3

Twitterrifficで選択中の発言が行われた時間をGrowlでアイコン付き表示するAppleScriptの改良版です。

URL Access Scriptingに指定するURLのうちファイル名に該当する部分の長さが32文字以上だと、勝手にダウンロード時にファイル名を丸められてしまう、という問題に対処するため、28文字でファイル名チェックを行い、短く付け替えています。

ちょうど、坂本龍一教授をFollowして、たまたま発言を見つけたので時刻を調べてみたらエラーに遭遇。ファイル名を調べてみたら37文字で、テンポラリフォルダに入っていた画像ファイルがすべて途中で丸められていることが判明。URL Access Scriptingの32文字制限に気付いて、対策を施したものです。

ダウンロード後に画像が真っ白になっているケースが見られたので、syncコマンドを実行してキャッシュの内容をHDDにシンクロさせています。

(more…)

2009/07/20 Twitterifficで選択中の発言の時間をGrowlで表示。アイコン付きで v2

Twitterrifficからアイコンを取得して、ダウンロードを行おうとすると弾かれるケースが見られたので、とりあえず「すでにダウンロードしたアイコンがあれば使用する」ように処理を変更したバージョンです。

アイコンのダウンロードが行えない時に、TwitterアカウントのURLを個別にAppleScriptで取得して、そのままSafariで表示すると問題ないようなので、案外User Agent名称のチェックをサーバー側で行っているのかもしれません。

URL Access ScriptingにはUser Agent名称を詐称する機能はないため、そのための対策を行うのであればシェルからcurlコマンドを呼び出す必要が出てくることでしょう。

もう少し、エラーが発生する状況を観察してみることとします。

(more…)

2009/07/20 Twitterrifficで選択中の発言の時間をGrowlで表示。アイコン付きで

Twitterrifficで選択中の発言がいつ行われたかを確認するために、発言の時間をGrowlで表示するAppleScriptです。

twitter2.jpg

Twitterrifficの画面上では発言時刻が表示されないので、正確な時刻が知りたいと考えて作り始めたものですが……その時間があればWebブラウザで確認できたような……(汗)

一度こうしてAppleScriptを作ってしまえば、次回からはScript Menuから呼び出すだけになるので、まあ……無意味ではなかったのでしょう。

本Scriptでは、指定画像でGrowlの表示を行いたかったので、Twitterrificから取得した画像のURLから画像をダウンロードし、それを指定してメッセージを表示させてみました。

Twitterriffic側のselectionから画像のURLを取得しようとした時に、画像を指定していないアカウントの場合にはmissing valueが返ってくるようになっているのですが、selectionからURLを取得すると、missing valueが返ってくるのではなく変数への代入そのものが実行されなかったため、一度selectionのpropertiesをまるごと変数に代入し、そこからURLを取得して判定するようにしてみました。

(more…)