LoginSignup
12
11

More than 5 years have passed since last update.

alerterはterminal-notifierでは不可能なアクション付き通知を出せるコマンドラインツール

Posted at

macOSには通知センターがあり、Objective-Cを始めAppleScriptで通知を出すことができます。これらの言語以外で通知を出すとなると、Objective-Cで書かれたコマンドラインツールterminal-notifierを経由するようにすることが一般的です。

terminal-notifierで出来ること・出来ないこと

通知を出すだけであれば、terminal-notifierで十分です。

terminal-notifier -message "デプロイの準備ができました"

terminal-notifier -message デプロイの準備ができました.png

URLを開いたり、コマンドを実行することもできます。

terminal-notifier -message "Googleを開く" -open "https://www.google.com"
terminal-notifier -message "デスクトップを開く" -execute "open ~/Desktop"

terminal-notifierでできないことがあるとしたら、通知にアクションをつけることです。例えば、通知に「はい」「いいえ」のボタンをつけることや、返信メッセージを入力できるようにするなどです。

通知にアクションを付けられるalerter

alerterはterminal-notifierの類似コマンドラインツールで、macOSの通知を送信します。OS X 10.8以降をサポートしています。通知を送信できるだけでなく、通知が閉じられるまでプログラムをブロックし、通知がどのように閉じられたかを標準出力で返す機能があります。

alerterで表示した通知は閉じられるまで表示され続けるという点は、terminal-notifierのデフォルトの挙動と異なります。したがって、通知にアクションを付け、その結果を踏まえてプログラムの処理を行ないたい場合は、alerterを活用すると便利です。

alerterの特徴

alerterには下記のような特徴があり、細かくオプションで設定することができます。

  • 通知にアイコン・タイトル・サブタイトル・画像がセットできる
  • 通知の返信ダイアログにユーザが入力した文字列を取得できる
  • タイムアウトを設定できる
  • 閉じるボタンの文言を変更できる
  • アクションボタンの文言を変更できる
  • 通知音を設定できる
  • 通知イベント(closed, timeout, replied, activatedなど)を文字列もしくはJSON形式で出力する
  • SIGINT, SIGTERMで通知を閉じる

alerterのインストール

alerterのインストールはGitHubのリリースページからzipファイルをダウンロードし、解凍して出てきた実行ファイルalerter~/binなどに配置します。HomeBrewでのインストールはまだできないようです。

alerterで通知にアクションをつけるサンプル

alerterにはさまざまなオプションがあり、ほぼ全てのオプションを指定したものが次のサンプルになります。

alerter -title "Jenkins" \
        -subtitle "Success" \
        -message "ビルド #23 が完了しました。" \
        -appIcon "https://qiita-image-store.s3.amazonaws.com/0/889/0b79d39d-0979-abe7-0429-fb0807c6a65a.png" \
        -closeLabel "今すぐデプロイ" \
        -dropdownLabel "オプション" \
        -actions "1時間後,明日,何もしない" \
        -json

Screen Shot 2016-06-26 at 14.17.44.png

「今すぐデプロイ」を押したときの出力
{
  "deliveredAt" : "2016-06-26 14:21:47 +0900",
  "activationType" : "closed",
  "activationAt" : "2016-06-26 14:21:50 +0900",
  "activationValue" : "今すぐデプロイ"
}

alerterで通知に返信機能をつけるサンプル

-replyオプションを指定すると、通知に対して返信メッセージを入力できるようになります。ただし、-reply-actionsと組み合わせることはできません。

alerter -message "Hello!" \
        -reply \
        -json

Screen Shot 2016-06-26 at 14.30.16.png

出力
{
  "deliveredAt" : "2016-06-26 14:30:09 +0900",
  "activationType" : "replied",
  "activationAt" : "2016-06-26 14:30:39 +0900",
  "activationValue" : "Hello!!"
}

おわり

プログラムから通知を上げるには、terminal-notifierで十分なことが多いですが、通知にアクションを持たせたいときはalerterを使ってみると良いかもしれません。

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11