Macos – How to make a shortcut that starts a new terminal window on mac os x 10.9.1 mavericks

keyboard shortcutsmacmacosterminal

I'd like to have a keyboard shortcut to open a new terminal from wherever I am. A default shell in my default home directory would be great.
I've been trying for a while to make this happen, but no luck so far.
Things that I've tried:

1) syspref -> keyboard -> shortcuts -> services, select 'new terminal at folder'.
Result: it just beeps and does nothing

2) syspref -> keyboard -> shortcuts -> app shortcuts -> create a new item that links to the 'Terminal' application.
Result: beeps and does nothing

3) From automator, create a new service that accepts no input and launches 'Terminal', bind the new service from the keyboards shortcut menu. (followed these instructions). This kind of works, but only some times (see update)

What am I doing wrong ?

Update

Solution 3 kind of works but it has two drawbacks:

  • it only works if some window is focused, it will NOT work if you don't have any window or if no window is currently in focus. Furthermore even if a window is focused, it apparently has to be the right kind of window, e.g. for some reason it does not work if chrome is focused, but it will work if gvim is focused, WTF?.
  • if a terminal window is already open it will just focus the existing terminal and bring it on top, I'd like to have a new, fresh terminal window appear (ok I guess I can just do ctrl-command-t to bring it in focus and then control-n for new window, but it kind of sucks)

Best Answer

You can create a service like this:

Then give it a shortcut from System Preferences.

There is a delay of maybe 0.1 - 1 s before Automator services are run, and at least on my installations of 10.7 and 10.8, the shortcuts for services didn't always work until I hovered over the services menu from the menu bar. You might also use FastScripts to assign a shortcut to the script, or use a private.xml like this with KeyRemap4MacBook:

<?xml version="1.0"?>
<root>
  <vkopenurldef>
    <name>KeyCode::VK_OPEN_URL_SHELL_TERMINAL</name>
    <url type="shell">osascript -e 'tell app "Terminal"' -e 'do script ""' -e activate -e end</url>
  </vkopenurldef>
  <item>
    <name>test</name>
    <identifier>test</identifier>
    <autogen>__KeyToKey__ KeyCode::F5, ModifierFlag::NONE, KeyCode::VK_OPEN_URL_SHELL_TERMINAL</autogen>
  </item>
</root>

If others look for a way to open Terminal and only create a new window if there are no existing windows, you can use a private.xml like this with KeyRemap4MacBook:

<?xml version="1.0"?>
<root>
  <vkopenurldef>
    <name>KeyCode::VK_OPEN_URL_TERMINAL</name>
    <url>file:///Applications/Utilities/Terminal.app</url>
  </vkopenurldef>
  <item>
    <name>test</name>
    <identifier>test</identifier>
    <autogen>__KeyToKey__ KeyCode::F5, ModifierFlag::NONE, KeyCode::VK_OPEN_URL_TERMINAL</autogen>
  </item>
</root>

Or if you have bought the Powerpack for Alfred 2, you can create a workflow like this:

Related Question