Using Snatch as a Plex Remote
Being a seasoned Plex user, I start to chuckle when I think about how I once swore off the app out of frustration, having not yet learned all the keyboard shortcuts. Plex just has too many features to get anything accomplished from the minimalistic Apple remote, and a keyboard has no place in the living room as far as I'm concerned. When I got my iPhone, I became enamoured with the idea of a do-it-all device, and started trying out all the available remote control apps out there. I finally found one that met my needs, and it has become an integral part of my Plex experience.
When Snatch came out, the remote control aspect was more of an afterthought, with it's primary features being the mouse trackpad and full function keyboard. But the ability to create custom buttons and program them to a keyboard stroke was what got my attention. I was able to create a pretty decent remote for controlling Plex, and while not very graphically pleasing, it worked pretty well. I started keeping a regular stream of communication with Snatch's developer, Dan, suggesting ways that the remote aspect of the app might be improved. Dan was very receptive to the feedback that he received from the public, and Snatch has really evolved into a great app, especially after the latest release.
One of the new features is the ability to load an image to be used as a button in the remote. This was a great step, but still limits you to a very angular design. But, thanks to another new feature- the ability to set the opacity of the buttons down to zero- I was able to design a remote screen as a whole, rather than button-by-button.
The basic concept is this: I made one button that completely fills the screen and loaded in a single graphic of the whole remote. I then created completely transparent buttons to overlay their graphic counterparts on the "background" button. Getting everything properly aligned on the iPhone screen turned out to be rather tedious, so I instead figured out all the numbers and went into the xml file and edited it manually.
Another great new feature of Snatch is to be able to save and load remote screens to and from your computer. This means that Snatch users can easily share their custom remote creations with others. There is a page on the Snatch website where you can download the remotes that I and others have created.
I decided that there were way too many useful features in Plex to be crammed into a single remote screen, and so created two screens. Snatch now lets you easily swipe side to side between your remote screens, so using the two together is actually very fluid. The first screen has all the main controls such as Play, Pause, Stop, the navigation arrows, and a few other key features that I find myself using often. The second remote contains shortcuts to the various places that you would need to navigate to within Plex, but at the single press of a button, rather than having to backtrack out of the menu structure to the home screen before going anywhere. These functions are not all to be found in the Plex's keymap files, and so require adding a small customized xml file to Plex's user files.
Here are the screenshots again, but with their functions. The second screen obviously already has descriptors on screen for most of the buttons, so...well, you get the idea.
The Plex button that is on both screens not only launches Plex, but also brings focus to it if you have left to check your e-mail or browse the Plex forums to see if your favorite bug has been fixed yet. The two red buttons, 'A' and 'B', are meant to be user definable, though I made them default to launching iTunes and DVD player. I have mine set to wake and sleep my media server. Originally, while in fullscreen video, you could press 'return' to bring up the OSD, which has many important controls for your videos (subtitles, interlacing, etc), so the 'Play' button had this dual function. However, with the latest Plex release, they changed the 'return' key to pause the video instead. This makes much more sense, but I had already designed the remote, and there was no more room for another button. I found a good work-around for this, which is included in the custom xml file that I created for the second remote screen. It basically assigns the menu button to also bring up the OSD while watching a video. This actually makes a fair amount of sense, since the functions are similar, and the menu button had no use during fullscreen playback. OK, I'm sold! How can I get this?
- First, and rather obviously, you need to purchase the app Snatch from the iTunes store and install it on your iPhone. It is a bit more expensive than a lot of apps at $5.99, but I think it's worth it.
- For Snatch to be able to communicate with your computer, you also need to download and install Snatch Server on your computer, which is a free download available on the Snatch website.
- Follow the instructions in the Snatch user manual for getting everything set up. Once you're up and running, you can go on to the next step.
- Download the two remote screen files and the custom xml file, and save them some place accessible, like your desktop.
Custom keyboard xml file (right click and choose 'save link as')
- To load up the screens, launch Snatch on your iPhone and make sure it's connected to Snatch Server.
- Go to the custom remotes section of Snatch, which is rather cryptically under the 'Keys' tab.
- Press the 'Edit' button in the bottom right corner.
- Then choose 'Load Screen'.
- A window should pop up on your computer asking you to select a file. Choose one of the remote screen files you downloaded, which should end in a .remote extension.
- Click OK, and your iPhone will ask you to confirm that you want to load the screen.
- Accept, and your screen will be loaded and almost ready to use. Repeat for the second screen.
Just a tip- I have had a bug appear a few times where when you go to load the screen, the dialog flashes only for a millisecond on the screen and instantly disappears. The iPhone sits there, stuck on "waiting for the file" or whatever it says. Relaunching Snatch and Snatch Server doesn't seem to help. I found that deleting the com.hoofien.snatchserver.plist file from the User/Library/Preferences folder and restarting Snatch clears the problem up. Dan has not been able to reproduce this bug, and so is unable to troubleshoot it. Hopefully this will be fixed in the future.
Now, you need to load the custom keymap file into Plex.
- In ~/Library/Application Support/Plex/, create a folder called 'keymaps' if you don't have one already. (BTW, "~" refers to your username folder.)
- Just drop the keyboard.xml file in there, and Plex should start to use your custom definitions the next time it's launched. If you already had a custom keymap file going, you can simply cut and paste the additional defintions from this file into your existing one.
OK, you should be good to go. But what if you want to change the red 'A' and 'B' buttons to do something different?
- Just bring up the remote screen on your iPhone and select the edit button. Everything should have a grid on it and start jiggling around.
- Select the button you want to change, and a green dot will appear on it. Just make sure that you DO NOT hit the 'X' on the button, because this will make it go bye-bye.
- Once you see the green dot, choose 'Record' from the top of the screen. The keyboard will pop up, and you can program any combination of keystrokes that you'd like. You can also go into the launchpad screen and launch an application, and the button will remember that. If you really want to get crazy, you can even program a button with mouse movements, but I honestly haven't figured out a good use for that, other than messing with someone.
- Once you have recorded the desired actions of the button, hit 'finish' in the top right corner.
- Then program another button, or hit "Done" to finish.
Just a tip- if you accidentally hit the background button while trying to program another one, all the other buttons will disappear behind the background. To bring them back to the front, just double tap it, and it will send the background back to the back.
You now have a rockin' Plex remote, that's not only very functional, but it looks good too!