2014/06/04

ターミナルで時間かかる仕事が終わったら通知してほしい

WWDCでMacBook Air Retinaの発表がなかったので、2011年Airを使っているぼくとしてしぶしぶ新しいMacの調達を検討しはじめたわけです。

TimeMachineつかえば新しいMacに全部環境持って行けるようになってるとはいえ、ちょっとディスク86%の状態のままTimeMachineしていきなりカツカツになるのは避けたいのでディスクの掃除を始めました。とりあえず容量がデカいのはだいたい昔かかわってた案件のgitレポジトリなので、使ってないやつを全部圧縮していくことにしました。

2011年AirはSSD積んであるからそれなりに圧縮が早いですが、数百MB〜数GBのレベルになると大分時間がかかります。じゃあ圧縮してる間とりあえずコード書くかーとなるわけです。で、だいたいそうやって別のことを始めるととっくの間に終わってた的なこともあるので圧縮おわったらとりあえず知りたいなぁということで、NotificationCenterに流すことを考えるわけです。

その手の試みは既にたくさん行われてるのはよく知ってるので、社内でもスマートさでいえば群を抜く handlename のブログを漁ろうとしたんですが、なんかはてなプラスが切れたとかでブログ見れなくなってたので社内IRCで聞いてみたところ、fujiwaraさんにterminal-notifierっていうのを教えてもらいました。

最初Rubyなのかーと思いましたが(rbenvでいろいろ切り替えるのでgemで入れるのめんどい)、brewでインストールできるっぽいのでやったじゃんということで早速インストール。

オプションみたらいろいろ充実していて、なんかPrivate APIを叩いてアイコン変更とかもできちゃうようになっているようです。たとえばterminal-notifier -message ぽわわ -title おわったよ -appIcon ~/Desktop/icon/usalemon_hd.pngなどというような感じで実行するとこんな感じになります。

おわったよぽわわ通知

これはよさそう! と思ったんだけど、毎回tar zcvf powawa.tar.gz powawa; terminal-notifier -message finishedとか打つのはちょっとめんどいので、もう少し簡単に呼べるようにしますか。

ということでパスの通ったところにtellmeというファイル名でこんな感じの1行スクリプトを放り込んでおきました。ぼくは~/bin/にパス通してるのでこういうのは大体そこにつっこみます。

#!/bin/sh

terminal-notifier -message "Task Finished" -appIcon /Users/kawazoel/Desktop/icon/usalemon_hd.png

これでタスクの終了通知は hoge; tellme とやればできるようになったので、それなりに楽になった。

なお、元同僚のishkawaもISNotificationHelperっていうのを書いてたようだ。まぁこっちでも十分用はたりそう。

うされもん @acidlemonについて

|'-')/ acidlemonです。鎌倉市在住で、鎌倉で働く普通のITエンジニアです。

30年弱住んだ北海道を離れ、鎌倉でまったりぽわぽわしています。

外部サイト情報

  • twitter
  • github
  • facebook
  • instagram
  • work on kayac