カケラの樹 Logo Growl with Ruby

RubyからGrowl( http://growl.info/ )を使うには。

RubyCocoaが必要。GrowlSDKのGrowl.rbをrequireして使う。

GrowlSDKはここ。

http://growl.info/downloads_developers.php

  1. Growlにアプリケーションの存在を教える。これを済ませてないと通知は行われない。

    GrowlNotifierを作る。

    n = GrowlNotifier.new(アプリケーション名,
      [イベント名の配列],
      デフォルトイベント(nilでいい),
      アイコン(NSImageのインスタンスを渡せばよいらしい)
    )
    n.register #登録実行
    

    GrowlNotifier#registerは何度実行しても大丈夫。アプリケーションの起動時に行えばOK。

    イベント名は好きに付けられるが、Growlの環境設定でユーザの目に触れるのでわかりやすい名前を付けるべき。

    1. NSImageのインスタンスを作って、GrowlNotifier.newの第4引数に渡せばいいんだけど、これをどうやって作るのか。

      案外簡単。

      icon = OSX::NSImage.alloc.initWithContentsOfFile(ファイル名)
      

      Preview.appで開けるのなら何でもOKな気がする。とりあえずJPEGは通った。

  2. GrowlNotifier#notify。

    n.notify(
      イベント名,
      タイトル,
      内容,
      アイコン(NSImage),
      アプリケーションのアイコン(NSImage),
      貼り付かせるか(True/False),
      優先度(-2..2)
    )
    

    イベント名、タイトル、内容以外は空でも良い。

  3. 同一フォルダにicon.pngとGrowl.rbを保存し、RubyCocoaを入れた上で実行すること。

    #!/usr/bin/env ruby
    
    require 'Growl'
    #アイコンに使うNSImageを生成
    icon = icon=OSX::NSImage.alloc.initWithContentsOfFile('icon.png')
    #GrowlNotifierを生成
    n = GrowlNotifier.new('GrowlTestByRuby', ['Ruby1', 'Ruby2'], nil, icon)
    #登録実行
    n.register
    
    #Ruby1イベントを通知する
    n.notify('Ruby1', 'Ruby1イベント', 'これはRubyからのGrowl通知です(1)')
    #Ruby2イベントを通知する
    n.notify('Ruby2', 'Ruby2イベント', 'これはRubyからのGrowl通知です(2)')
    
雨上がりの青空を探して。