Advertisement

Patch GrowlVoice using Keyboard Maestro to prolong its life

GrowlVoice App Icon

Google recently made some changes to the way Google Voice responds to some requests, and GrowlVoice stopped working.

Update (2014-05-10): There is now a much easier way to do this now. See http://github.com/szhu/fix-growlvoice for instructions on patching this which does not require Keyboard Maestro.

Background: As I understand it, there has never been an official API for Google Voice, so developers have had to figure things out on their own and build a workable solution without the tools they really need. Google has announced plans to integrate Google Voice into Google Hangouts, and the recent change which broke GrowlVoice was part of that. Could GrowlVoice be patched to fix this? Probably, but how long will it be until Google changes something else? And how long will it take Apple to approve the update for the Mac App Store? With no official API for Google Voice, and Google Voice's entire future uncertain, I don't think I'd want to try keeping the app working either if I was the developer.

However, just as clever developers found a way to make Google Voice work without an official API, someone else has figured out how to make Google Voice's current setup work with GrowlVoice, to extend its life, at least until Google changes something else.

Elliot Kroo (@ellkro) came up with an ingenious solution to patch the information that comes from Google Voice so that GrowlVoice can understand it. His instructions can be found at: https://gist.github.com/kroo/11205755.

A big-time hat-tip and thank you to Terry McCall (@hagure) for telling me about Elliot's instructions!

Unfortunately, even after you download the necessary files, this fix requires that you run a Terminal command every time GrowlVoice launches.

You can probably already guess what I thought when I heard that:

"Wait... you have to do something every time something else happens? Can I automate that?"

Spoiler alert: yes. How? Say it with me: Keyboard Maestro.

Here are the (non-automated) steps involved

Before we can automate it, we have to know what steps to take to make it work manually.

  1. Download the files described in the 'gist'

  2. Launch GrowlVoice

  3. Wait for an alert panel that looks like this:

    JSON alert message from GrowlVoice
  4. Press OK

  5. Run command

OK, now that we know the steps, we can automate them.

How to do this in Keyboard Maestro

Create a new macro which will run the following commands every time GrowlVoice launches:

  1. "Pause Until" there is a button "OK"

  2. Press "OK" button

  3. Run Terminal commands

Now, that last step is a little tricky because one of those commands has to be run with elevated "permissions" which can be done, but requires some extra work. There are two ways to accomplish this: with AppleScript or with sudo.

(N.B: Step 3 will also download the necessary files if they are not already installed.)

AppleScript
This way is a little easier, because you don't have to get into the Terminal.

However, you have to enter your administrator password every time GrowlVoice launches:

GrowlVoice alert box
sudo
Requires that you add an entry to your /etc/sudoers file via visudo

But once the initial configuration is done, everything else can be automated, meaning that you do not have to enter your password each time GrowlVoice launches.

This is the line you need to add to /etc/sudoers:

%admin ALL=NOPASSWD: /Users/luomat/Dropbox/etc/fix-growlvoice/cycript 

However, you need to change /Users/luomat/Dropbox/etc/fix-growlvoice/ to the correct path on your Mac.

If you aren't sure what any of that means, use the AppleScript version.

Download

Download and install one of these into Keyboard Maestro:

Whichever one you use, you will have to edit the line in the shell script section:

DIR="$HOME/Dropbox/etc/fix-growlvoice/" 

change that to be wherever you want the files to be kept. (If you use the sudo version, $DIR should be the folder where the cycript command is found.)

Regardless of which version you choose, the first time you run it, the necessary files (as referenced in the "gist" above) will be downloaded and installed the directory you set as $DIR.

It's not a fix, it's a patch

If GrowlVoice's developer doesn't update the app, this patch will only work until Google changes something else, and it will have to be run each time the app launches. It might not be the most elegant solution ever, but it's better than not having GrowlVoice at all.

Again my thanks to Elliot Kroo (@ellkro) and Terry McCall (@hagure). Some days I really love the Internet.