What the hell is it? Good question. This isn't exactly new information, but I wanted to create an organized, instructional template illustrating how to build custom notifications for use with OSX Notification Center. To put it simply, I love push notifications. I not only wanted a flow of notifications through iOS with the use of IFTTT and Pushover, but I also wanted to receive these same notifications on OSX as well. I bundled a few apps together using the core framework of Terminal Notifier to get OSX notifications of some of my most frequently used apps not available through OSX. Therefore, IFTTT-OSX is bridging the gap between push notifications across all devices. I want to make this clear that all this could not be done without the use of IFTTT, Terminal Notifier, Dropbox, and Hazel. Shoutouts to the developers of these apps are listed below.
Here are some of the bundled apps I pre-built as releases. Feel free to make your own with Terminal Notifier or the Xcode Project I included in this repo if you want to add to the others.
- Automatic (Driving Assistant) | Website | IFTTT Recipe | Release (v1.1) |
- More bundled releases coming very shortly...
Download a release by selecting one above or create your own app with the Xcode project provided. Drag your custom OSX Notification app into:
/Library/ScriptingAdditions/
Don't forget to code-sign the app using Terminal (or your Developer ID via Xcode) or they will not run under GateKeeper! (OSX 10.8x). To do this, you will have to create your own trusted certificate using Keychain Access. Codesign the app like so, where 'jickpictures' is your certificate signature, and then the path to your app:
codesign -f -s jickpictures /Library/ScriptingAdditions/Application.app
To check your credentials and other executable information, simply do:
codesign -dvvvv /Library/ScriptingAdditions/Application.app
You'll most likely have to restart your computer for the new app to be registered. Now, you'll probably want to set up some folder actions. This is what will run the shell script calling the notifications when receiving a file from IFTTT in your Dropbox. I recommend setting this up with Hazel, because I pre-built some rules with the shell scripts already included in the releases. However, if you can't use Hazel, OSX has a similiar functionality with Automator and it's own folder actions feature.
Here is an example of what you could do with these bundled apps. Complete documentation of usage examples/ideas are available on each app bundle release page (i.e. Automatic). If for some reason the Hazel rules aren't working for you, I've layed them out so you can set them up manually:
------------Parking Location Reminder | Automatic
Description: If ignition turns off, send an OSX notification of the most recent location you parked. Downloads a map image used as the input for -contentImage
, and opens the downloaded image using both -activate
and -open "file://$1"
. In my case, I have it open up Apple Maps as demonstrated with the example shell script below.
- IFTTT Recipe (View shared receipe):
FILE NAME: [LocationMapURL]
DROPBOX FOLDER PATH: Apps/IFTTT/Automatic
- Hazel rules:
NOTE: Hazel rules included in the releases can include a 'utility rule' that I clearly outlined for myself. These rules are always labeled with 3 slashed before and after like so: /// Trash Files ///
. These are optional, but work to cleanup your Automatic directory and organize the downloaded files from IFTTT. Utility rules can sometimes be necessary for running the rest of the rules under them. Common examples of these rules are always labeled similarly to: /// These Subfolders ///
. Some of these might be required to use my pre-built rules. Check the note icon included with the rule for more information on the conditions and actions. I know, it's sickening; I'm that organized.
- Shell script:
------------!#/bin/sh # OSX NOTIFICATION NAME=`basename "$1"` # Gets name of file LAT=`${NAME#*_}` # Remove everything before the first underscore symbol LONG=`${LAT%%_z*}` # Remove everything up until the farthest '_z' from the right GEO=`${LONG/_/,}` # Remove underscore symbol between geocodes ZOOM=`19`
/Library/ScriptingAdditions/Automatic.app/Contents/MacOS/Automatic -title 'Parking Reminder' -message "Just in case you were wondering, you recently parked in this location:" -contentImage "$1" -activate 'com.apple.Maps' -open "http://maps.apple.com/?q=$GEO&z=$ZOOM" -group 'automatic-park'
Terminal Notifier by alloy | CORE FRAMEWORK
The core framework developed by alloy in each of these bundled apps that allows triggering of custom OSX Notifications from the command line. The main purpose for this project.
Hazel by Noodlesoft | NOT REQUIRED (BUT REALLY HELPS)
A must-have OSX Utility that allows you to create folder actions (on steroids) based on a wide variety of rules and a heavy-set imagination. I definitely recommend getting this utility as it will make your life infinitely times easier. But, for the sake of variety and poverty level, the same can be done with Automator and the folder actions features included in OSX.
Dropbox | REQUIRED
Need I say more about this one?
IFTTT | REQUIRED
Required for triggering created files on your Dropbox that Hazel interacts with. All of these examples require a computer to be running all the time.
Basically, I didn't design any of the icons or write any of the code within these bundled apps. I did, however, resize the app icons for Retina Display, wrote a little extra to the shell scripts calling the notifications, and built the Hazel rules driving the actions from IFTTT. Please see the 'Shoutouts' section above. With that said, I can't go to jail. More coming soon.