文字っぽいの。

文字を書いています。写真も混ざります。

Macのzshで時間がかかる処理が終わったら通知してくれるようにする

はじめに

開発をしていると、テストやセットアップ処理、ライブラリの導入などで長い時間待つことがあると思います。 そんな時に暇すぎてTwitterを見に行くと、そのまま夕方になり生産性が破滅することが良くあると思います。

なので長い処理が終わったら、通知が来るようにしてTwitterランドから仕事に戻れるようにしました。

動かした環境

利用するもの

  • terminal-notifier
  • zplug
  • zsh-notify or iterm-notify

手順

では準備していきましょう。

terminal-notifierをインストールする

こいつはターミナルからmacOSの通知を出してくれる君です。Homebrewで入れていきます。

brew install terminal-notifier

インストールしたら下記のコマンドを試してみましょう。

terminal-notifier -message 'HELLO'

そして下記のように通知が来たら成功です。

f:id:FromAtom:20191210193602p:plain

さて、これで現状でも

処理が長いコマンド | terminal-notifier -message '終わったよ'

などとすればコマンドの処理が終わった後に通知が来ます。 しかし、大体の場合 "処理が長いコマンド" を実行したあとで「あ!通知設定するの忘れてた」となると思います。 これを防ぐため、一定以上実行に時間がかかった処理が終わったら通知が来るようにする zsh-notify を入れます。 の、前に、 zsh-notify のようなプラグインを管理してくれる zplug を導入します。

zplugをインストールする

これもHomebrewで簡単に入ります。

brew install zplug

zsh-notifyをインストールする

.zshrc に下記の処理を追記します。

export ZPLUG_HOME=/usr/local/opt/zplug
source $ZPLUG_HOME/init.zsh

zplug "marzocchi/zsh-notify"

if ! zplug check --verbose; then
    printf "Install? [y/N]: "
    if read -q; then
        echo; zplug install
    fi
fi

zplug load

これを書いたあとでzshを再起動すると下記のように、プラグインのインストールを促してくれます。

f:id:FromAtom:20191210195251p:plain

ここで y を入力すれば、zsh-notify がインストールされます。

試してみる

試しに下記のコマンドを実行してみましょう。なお、ターミナルにフォーカスが当たってると通知が来ないので注意です。

sleep 40

下記のように通知が来たらOKです。

f:id:FromAtom:20191210200811p:plain

通知される時間を変える

デフォルトでは30秒以上の処理で通知が来ますが、この時間を変えたい場合は .zshrc に、

 zstyle ':notify:*' command-complete-timeout 15

みたいに追記しましょう。これで15秒がしきい値になります。

iTerm2をご利用の方へ

iTerm2を利用している方は marzocchi/zsh-notify ではなくて marzocchi/iterm-notify が用意されているので、そちらを利用するのが良いでしょう。