69
66

More than 5 years have passed since last update.

iTerm2 + zshで時間のかかる処理が終わったらGrowlに通知したりアラートダイアログ出したり音出したりする方法

Last updated at Posted at 2013-10-09

背景

最近時間のかかるコマンドをよく使ってて、放置して忘れちゃうことが多かったので、処理が終わったら通知する仕組みが欲しくて考えた。

やりかた

色んなことが出来ますが、とりあえずGrowlに通知してみる。
やり方は
1: どれくらい処理に時間がかかったら通知するか決める
2: .zshrc に、以下の記述をして再読み込みする(代入してる値は1.で決めた秒数)

REPORTTIME=1

3: iTermのPreferences -> Profiles -> Advanced -> Triggers -> Edit で以下の記述をする。
スクリーンショット 2013-10-10 1.59.33.png

コピペ用
# Regular Expression
^.* cpu [0-9.:]+ total

# Parameters
DONE!!!\n\0

4: おわり!

結果

試しに時間かかりそうなコマンドを打ってみる

$ find . -type f -maxdepth 8 -print > /dev/null

これが終わるとこうなる。

スクリーンショット 2013-10-10 1.25.44.png

便利!

解説

まずにzshrcに書いた REPORTTIME=1 は、この秒数を超える処理があると実行時間を表示する機能をzshが持ってる
そんでもって、iTerm2には画面の出力を監視して設定した正規表現にヒットすると何かしらアクションを起こす機能があるので、zshが上記の実行時間表示をしたかどうかを監視して、ヒットしたらGrowlの通知を出した、という感じ。

発展

タイトルどおり、Growlに通知する以外にもiTerm2に設定したところのActionとParametersを変えることによって色々出来る。
例えばRegular Expressionは上述の通りにして

  • ActionにRing Bellをセットすると音が出る。
  • ActionにBounce Dock Iconをセットするとドックアイコンがバウンドする
  • ActionにShow Alert、ParametersをGrowlと同じにすると↓こうなる

スクリーンショット 2013-10-10 1.56.37.png

という感じ。任意のコマンドを走らせる事もできるので、ターミナルで出来ることはほぼなんでもできちゃいます。

追記

  • 設定しても反映されなければ、iTerm2を再起動すると反映されるかも。
  • tmux/screen使ってたら、この文字列が入ってる画面を切り替えるたびに反応して使い物にならなかった(´・ω・`)

参考

69
66
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
69
66