Send Mac OS Notifications From RStudio *Server*! (via Growl)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Having received a couple follow-ups to the OS X notifications on RStudio Desktop for the Mac post, I was determined to find a quick hack to get remote notifications to OS X working from (at least) RStudio Server instances running on the same network. It turns out the hack was pretty straightforward just by using a combination of Growl and gntp-send
.
To preempt detractors: Yes, Growl isn’t free for newer versions of OS X; but $3.99USD is worth skipping a frappuccino for if you desire this functionality (IMO). I’ve had Growl running since before there was an app store and it’s far more hackable than the Notification Center is (as demonstrated by this post).
You’ll need to configure Growl to listen for incoming connections (with an optional password, which is a good idea if you’re fairly mobile).
Plus, you’ll also want to decide whether you want Notification Center integration or have Growl work independently. My preference is integrated, but YMMV.
The gntp-send
app should build without issues. I did it via source download / configure
/ make
/ make install
on a recent-ish Ubuntu box.
Then it’s just a matter of sourcing a version of this function. You’ll most likely wish to make more of the items defaults. Window users will need to tweak this a bit to work, but I’m betting most RStudio Server instances are running on Linux variants. I have it automatically setting the title and including which RStudio Server host the notice came from.
notify.gntp <- function(message, server, port=23053) { system(sprintf("/usr/local/bin/gntp-send -a 'RStudio Server' -s %s:%s '[running on %s]' '%s'", server, port, as.character(Sys.info()["nodename"]), message), ignore.stdout=TRUE, ignore.stderr=TRUE, wait=FALSE) } # test it out WORKSTATION_RUNNING_GROWL = "10.0.1.5" notify.gntp("ddply() finished", WORKSTATION_RUNNING_GROWL) |
You are going to need to do some additional work/coding if your IP address(es) change. I was going to hack something together that parses netstat
output to make a guess at which node was the originating OS X system, but it should be quick enough to change out what your client IP address is, especially since this hack is intended for long-running jobs.
It’d be #spiffy
if RStudio Server supported the browser notifications API and/or access to http header info from within the R session to make hacks like this easier or not necessary.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.