Secret Terminal commands in OS X (like the one that enables FaceTime's autoaccept feature) are great, but they generally stay hidden until someone publishes them on the web. Here's how to find an application's hidden features yourself.
After discovering the FaceTime AutoAcceptInvitesFrom feature, I've had a few people ask how I did it, and how they can dig into their existing Mac applications to poke around for undocumented features.
There is a little command line tool built into your mac called "strings" that allows allows you to pull any strings (text) from a binary file. You simply fire up your Terminal and do something like:
…and it will flood your terminal with all of the strings it recovers!
Now for the cool part: to make this even easier, without having to do it from the command line, you can create a Mac OS Service that you can run on any file to get the strings and drop them right into TextEdit. Here's how:
- Open Automator on your Mac and select the template to create a new service.
- Set the "Service receives selected" option to "files or folders"
- Set the "in" option to "Finder"
- Then add the action "Run Shell Script"
- Change the "pass input:" to "as arguments" in the drop down menu
- Remove all text in the window and replace it with: strings $US1
- Then add the action "Set Contents of TextEdit Document"
- Save it. (I called mine "Get Strings")
Click on the image for a closer look.
Now if you right click on any Mac Application, choose the option to "Show Package Contents", and open the folder named "MacOS", you will see the executable binary of that program. Right click on it and select "Get Strings" (or whatever you named your service to), and a new TextEdit document will open up with all the strings there for you to discover!
After finding a string you like, you may have to play around with it a bit in the Terminal — if you're familiar with these types of commands, that'll help. Generally, the terminal command will follow a specific structure, like
defaults write com.apple.FaceTime AutoAcceptInvites -bool YES or
NO for boolean commands. That is, you type
defaults write, then the line at the top of your strings text file (in this case,
com.apple.FaceTime), the string itself, and then the option.
Non-boolean features may be a bit more complicated. For example,
AutoAcceptInvites is just a yes or no option that allows FaceTime to auto-accept all incoming calls, but
AutoAcceptInvitesFrom requires you to add
-array-add AppleID to the end to specify specific users that you want to auto-accept. With a bit of playing around, you should be able to find some pretty neat features squirrelled away in your favourite OS X applications.
Your Strings are Showing... [Corn Dog Computers]