Route 477 - RubyからGrowlに通知するためのライブラリ、Meow (とGrowlNotifier)
こちらですてきなライブラリを知りました。*1
基本的なことはリンク先を参照して貰った方がいいとは思いますが、一応書いておきます。
インストール
Meowはライブラリ内でRubyCocoaを使ってGrowlを操作してるみたいなのでRubyCocoaが必要です。
ライブラリがRubyCocoaを使うだけなのでMeowを使ったスクリプト自体はRubyCocoaである必要はないです。
僕が使っているMacBookはRubyはデフォルトのまま使ってますし、LeopardなのでRubyCocoaもデフォルトでインストール済みです。
なので単にMeowを
gem install meow
するだけで終了。*2
使ってみた
以下のドキュメントを参照してみてください。
スタイルの設定は?
スクリプト内からの指定はできないっぽいです。
meep = Meow.new('Meow Test') meep.notify('Click Me', 'Go to Google!') do system "open -a Safari http://www.google.com/" end
上記の様なスクリプトを一回実行したあと、Growlの環境設定を開きます。
すると、
newするときに与えた文字列と同じものが登録されているのでそこから指定すればいいようです。
アイコンの設定
クラスメソッドの import_imageの引数に使いたい画像のパスを渡せば良いみたいです。
iconImage = Meow.import_image("/Applications/NatsuLion.app/Contents/Resources/NatsuLion_error.icns") meep.notify('NatsuLion', 'I am crying' ,{:icon => iconImage,:sticky => true,:priority => 2}) do system "open -a Safari http://www.google.com/" end
上の例では夏ライオンのアイコンファイルを指定しました。
pngやjpgとかの画像ファイルも大丈夫っぽいです。
しかし、画像のパスが
"~/Library/hogehoge/images/google.png"
みたいなチルダの入ってるパスだとダメっぽいです。
"/Users/ユーザ名/Library/hogehoge/images/google.png"
みたいに直しておくと大丈夫っぽいです。
ちなみに、画像ファイルのパスをサクッと知るためにAmCopyPathCMXを便利に使わせて貰ってます。
アイコンの指定はnotifyを実行する時に指定してもいいですし、newするときに
iconImage = Meow.import_image("google.png") meepNotice = Meow.new('Meow Testinggggg','Notice',iconImage)
みたいに第三引数として渡してもいいみたいです。
第二引数は通知の名前です。
通知をクリックした時の処理
ブロック内に書けば良いっぽいです。
meep.notify('Click Me', 'Go to Google!') do system "open -a Safari http://www.google.com/" end
上記例では通知をクリックすることでSafariで http://www.google.com/ を開きます。
当たり前ですが、callbackを使うと通知をクリックされるまでスクリプトの実行プロセスが終わらないです。
優先度の設定
MeowでGrowlの優先度の指定をしようとしてドキュメント上のサンプルの用に
:priority => :very_high
と書いてもダメです。:very_highは最新の2.0では定義されてないっぽいです。*5
だから、定義されている
:priority => :very_low
としてもダメでした。
結局
:priority => -2
と数字でしていしてやるとうまく優先度を指定できました。
指定できる範囲は0を標準として-2〜2までの5段階です。
複数のオプションを追加する。
一つだけ追加する場合は以下でOKです。
meep.notify('Click Me', 'Go to Google!',:sticky => true) do system "open -a Safari http://www.google.com/" end
さらに優先度の設定もしたいって時はこんな感じです。
meep.notify('Click Me', 'Go to Google!',{:sticky => true, :priority => 2}) do system "open -a Safari http://www.google.com/" end
スクショの撮影に使ったのは
GrowlのスタイルはGrowlHUDを使ってます。
優先度が文字で表示されてて個人的に気に入ってます。
今調べたら配布先が無くなってました。残念です。
スクリプトはこんな感じです。
#!/usr/bin/ruby # # Created by on 2008-08-23. # Copyright (c) 2008. All rights reserved. require "rubygems" require "meow" meep = Meow.new('Meow Test') meep.notify('Click Me', 'Test 1') meep.notify('Click Me', 'Go to Google!',:sticky => true) do system "open -a Safari http://www.google.com/" end iconImage = Meow.import_image("/Applications/NatsuLion.app/Contents/Resources/NatsuLion_error.icns") meep.notify('NatsuLion', 'I am crying' ,{:icon => iconImage,:sticky => true,:priority => 2}) do system "open -a Safari http://www.google.com/" end iconImage = Meow.import_image("/hatena_logo.png") meep.notify('Click Me', 'Do it!' ,{:icon => iconImage,:sticky => true,:priority => 2}) do system "open -a Safari http://www.google.com/" end iconImage = Meow.import_image("/google.png") meep.notify('Click Me', 'Go to Google!' ,{:icon => iconImage,:sticky => true,:priority => 1}) do system "open -a Safari http://www.google.com/" end iconImage = Meow.import_image("/tumblr_logo.png") meep.notify('Tumblr', 'Low priority' ,{:icon => iconImage,:sticky => false,:priority => -2})