Do you like to read your Mail messages in their own windows, as you get when you double-click a message a mailbox? For many people this is an easier way to read e-mail, as you can control the size of the message window without changing the size of the whole Mail interface.
The downside is that, despite what must be five years’ of users’ requests, Apple hasn’t provided a means of navigating from one message open in its own window to the next message in a separate window. That is, you can’t finish reading one message in a window, hit some hotkey or toolbar button, and view the next message in that same separate window. But with just a bit of help from a third-party program, you can create your own version of this command.
To make this work, you’ll need a program that’s capable of creating a macro (a series of keystrokes) and assigning a global hotkey to that new macro. There are a number of programs that can do this, including QuicKeys X3, iKey, or Butler. In addition, this is probably also possible in LaunchBar and Quicksilver … and there may be others that I’m not aware of.
The basic trick is to take advantage of the keyboard shortcuts that already exist in Mail, and combine them to create the behavior we’d like to see. I’ll explain how to do this in both iKey and Butler; doing it in any other macro-type program is left as an exercise for the reader. For both programs, the basic assumption we’ll make is that you’re reading your first message in a window of its own already, and want to move to the next one.
After installing and launching iKey, click the Create button to bring up a new macro definition screen. Next, click the Plus sign at the end of the Commands line. This is where you’ll actually define the commands in your shortcut. From the menu that appears, choose Keyboard: Type Key(s). In the new dialog that opens, click in the Key field and type Command-W, then click OK. This will tell Mail to close the current window (we’re done reading the email, basically). Click the Plus sign again to add another command, and this time, scroll down to Utility: Wait Time. Enter 0.1 seconds as the delay time, then click OK. This gives Mail time to close the message window and activate the main viewer window. (Note that this delay doesn’t need to be this long, but I wasn’t able to enter a lower value and still have it be above zero.)
Click the Plus sign again, and add another Keyboard:Type Key(s) event. This time, type a down arrow in the Key field—this moves Mail’s pointer down to the next message. Click OK, and then (you guessed it) click Plus again to add a final command. Add another Type Key(s) event, and set this one’s Key field to Return—press the Return key with the Key field active. Pressing Return with a message selected in Mail will open the chosen message in a new window.
You’ve now defined the macro; now you need to tell iKey where you’d like to use it, and how to activate it. In the Contexts section, uncheck Universal (which means this shortcut won’t work in all apps). Then click the plus sign and choose Application in Front from the drop-down menu. In the new dialog that opens, click on the Applications pop-up menu, choose Mail from the list, then click OK. To assign a hotkey, click the plus sign in the Launchers section, and choose Keyboard Event from the drop-down menu. In this new dialog, click in the Hotkey box, and then type whatever kebyoard combo you’d like to use—I used Control-Command-R, for Read. Leave the “Generate event… ” bit as-is, and click OK when done. Finally, click the Name box at the top of the dialog and give your shortcut a memorable name (“Read new e-mail”). That’s it; the macro is now done, and it should look basically like this:
Click the OK button to return to the main iKey screen. You’re almost, but not quite, done. Now select File: Save and Activate, or just hit Command-S. Switch to Mail, open a message in a new window, and then hit your shortcut keys; the open window will close, Mail will select the next in line, and then open it in a new window.
Butler’s configuration is simpler, as its macro engine implements things differently, and is probably a bit less powerful than that of iKey. Open Butler’s configuration screen (choose Butler: Customize from the Butler menubar icon). Click once on any existing entry in the Hidden section, then click on the plus sign at the lower left of the window. Choose Smart Item: Keystrokes from the pop-up menu, then find the newly-added Keystrokes entry in the Hidden section. Click on it to select it, then click on the word Keystrokes at the top of the right panel and give your macro a name (“Read my mail”).
Now click on the Keys tab on the right side of the window, to make sure its active (it should already be active). Click again within the actual keystroke area below the Keys tab. This is where you’ll enter your macro keystrokes, so anything you type now will be recorded. Type Command-W (press the actual keystrokes, don’t type the words), and you’ll see the Command-W shortcut appear, in brackets, in the Keys area. Now click the plus sign at the bottom of the keys area and choose 0.02 seconds from the pop-up list—this is the delay to let the Mail viewing window close, and it’s equal to 20 milliseconds. (Which means that this version runs faster than the iKey version.) Then just click the down arrow and then the Return key to add those to your macro as well. If you make a mistake, press the delete key symbol next to the plus sign to get rid of it—if you press Delete, Butler will simply capture it as part of your macro. That’s it for defining the macro.
To assign a hotkey, click the Triggers tag, then click in the Hot Key box and type your shortcut. I used Control-Option-N. As soon as you enter this, an Exceptions section will pop-up. Click the pop-up menu and change Not to Only, then type Mail in the space below. This limits the macro to only working in Mail. Finally, you could click the Looks tab, click the small gear icon to reveal a menu, then select Built-in from the drop-down list. Scroll through the icons until you find the one that looks like a stamp, and select it. This is completely not required, but it does make it a bit easier to spot your Mail macro in the midst of other Butler commands. When you’re done, each section should look like this:
Switch to Mail, open a message in its own window, and hit Control-Option-N. The message will close and, very quickly, the next one will open.
Though not a perfect solution, using a macro tool to create a new command and make it executable via the keyboard is nearly as good. The Butler version, which is the one I use, is particularly speedy. Note that you may have to experiment with the delay values in either version if your machine is slower; slower machines will need a longer delay to allow the back window time to open.