DEV Community

Cover image for MacOS — Trigger Notification Center when long running commands finishes

MacOS — Trigger Notification Center when long running commands finishes

wengerk profile image Kevin Wenger Originally published at Medium ・2 min read

Before getting into the main subject, be aware that this article has been first write for the Blog of Antistatique — Web Agency in Lausanne, Switzerland. A place where I work as Full Stack Web Developer.

Feel free to read it here or check it out there:

Retrieve all the code on my Gist:

Happy reading.

As a developer, I often run commands that take a while to finish:

  • git pull
  • composer install
  • npm install

Considering that I am not a very patient person, I get really bored waiting for these commands to finish, so during that time I usually switch to some other occupation such as:

  • Checking Twitter/Tech/Hacking websites,
  • Making & (sometimes) drinking coffee,
  • Playing T-Rex Runner - The hidden endless running game of Chrome.

15 minutes later, I finally come back to my terminal with a cold coffee and I discover that I forgot to cd in the correct folder. Repeat for another 15 minutes.

Isn't there a better way?

Work is hard. Distractions are plentiful. And time is short.

— Adam Hochschild, American author, journalist, and lecturer

Solution N°0 - The Junior Professor

Waiting by watching some Gifs right on the terminal with Gifi.
One of my favourite solutions but not enough "cool" for some people.

Solution N°1 - The Middle-Earth Paradigm

Making all tools faster and developers more patient.
That would work in a parallel universe where magic exists, maybe.

Solution N°2 - The Luminous Fish Effect

Use a short script that uses terminal-notifier & append it to each command such as

git pull | notify-me

That's pretty cool and do the job but ... I'm lazy and I don't want to append anything to my commands or predict if my command is a long-running command or not before even running it.

Solution N°3 - The Friendship Algorithm

What about trying another approach ? Instead of trying to detect long-running commands, we could simply send a notification when the CLI is not in the foreground.
Mmmh, sounds good but is that possible ? With iTerm & OSX 10.9+, you can do this !!

1) Create a new command named notify:

touch /usr/local/bin/notify && chmod +x /usr/local/bin/notify
vim /usr/local/bin/notify

2) Copy and paste this system script inside:

3) Add a custom function named f_notifyme and expose it to iTerm using PS1

vim ~/.zshrc

4) Copy and paste the function

5) We did it ! Finally, reload the source file of your terminal source ~/.zshrc and enjoy !

Enjoy your new notification cli system !

Enjoy your new notification cli system !

All images copyright of their respective owners.
Big thanks to @Antistatique for the review & @gratisography for images.

Discussion (0)

Forem Open with the Forem app