Growlにgntp経由で通知させるgntp.elの紹介


Emacsでは、ユーザーへ何がしかの情報をお知らせする領域として伝統的にエコーエリアが使われます。例えばコマンドを途中まで入力してしばらく待っているとエコーエリアに入力されたキーが出てきます。 他にも多くのアプリケーションがエコーエリアを使っています。

過去のPCのようにディスプレイの解像度が低ければ、エコーエリアでも十分機能していましたが、現代の広大なディスプレイにおいてエコーエリアはあまりにも小さくなりすぎました。

emacs_2014-05-19_21:50:49

そして、エコーエリアは忙しすぎます。アプリケーションからはどんどん情報が送られてくる傍ら、ミニバッファとしてのお勤めも果さなければいけません。

多忙なエコーエリアですが、送られてくる情報は全て上書きされるようになっており、見ようと思ったら、すでに上書きされて*message*バッファ送りされてたりすることもしばしばです。

こういった話はEmacsコミュニティの中でも問題視されているのか、Emacs24からはDbus経由でのデスクトップ通知ライブラリであるnotifications.elが同梱されるようになりました。

notifications.el – Life is very short

ただ、Dbus自体がプラットフォームに依存するので、あまりパッとしない感じです。

もうだいぶブームが過ぎた感がありますが、やはりデスクトップ通知というと、Growlではないでしょーか。

Growl

Macでは、通知センターができたりして影が薄くなってしまっているようですが、LinuxにもWindowsにもあるのでプラットフォームを選びません。

mattn/growl-for-linux @ GitHub
Growl for Windows

それとGrowlの良い点としてgntpなるプロトコルをサポートしているというのがあります、gntpを使えばプラットフォームの差異をアプリケーション側で吸収できます。

というわけで、今回はそのgntpをEmacsから話せるようにするgntp.elの紹介です。

インストール

MElPAにレシピがあるので、M-x list-packageでどうぞ。

wget派のあなたは、GitHubのサイトからファイルを直接落としてください。

tekai/gntp.el

使い方

まず、通知するアプリケーションをGrowl側に登録しておく必要があるので、 gntp-register-alist に名称やアイコンの情報などを設定しておきます。

(setq gntp-register-alist
      '((org-notify
         :display "Org-mode notification"
         :enabled t
         :icon "http://raw.githubusercontent.com/myuhe/org-gcal.el/master/emacs.png")
        (alert
         :display "org-gcal"
         :enabled t
         :icon "http://raw.github.com/myuhe/org-gcal.el/master/org.png")))

後は、 M-x gntp-register とすれば、登録されます。

通知は、 gntp-notify で実行されます

(gntp-notify 'alert "Emacs message"
              "HELLO WORLD"
              "localhost")

gntp-notify の引数は 順に

  • gntp-register-alist で登録した名称のシンボル
  • タイトルを表す文字列
  • 内容を表す文字列
  • 接続先を示す文字列(ローカルマシンなら “localhost”)

のようになっています。