Assign a shortcut to running a script in OS X

47,909

Solution 1

Yes, you can do this with Applescript or Automator.

The way I've done things like this is to use Automator to create a Service that is available in all applications. A service can be made to run a bash/zsh/ruby/whatever script. Then you can bind a key combination to the service in the Keyboard pane of system preferences.

Near the end of this MacBreak podcast this procedure is shown in detail.

Edit: I just noticed you're not using Snow Leopard. I don't think creating a system-wide service is as easy with 10.5.8. I guess you can't upgrade since it's a Powerbook. You might want to look into FastScripts which allows you to assign keyboard shortcuts to applescripts (free to use for up to 10 keyboard shortcuts) and use the following Applescript:

do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine"

Solution 2

I currently use FastScripts. It includes all scripts in ~/Library/Scripts/, so you don't have to add scripts manually. It also supports application-specific scripts, and it has a few features that are useful with AppleScripts, like it stops a script before a keystroke or key code command until modifier keys are released.

If you have bought the Powerpack for Alfred 2, you can create workflows like this:

Hotkeys have a short delay by default, but you can reduce it by changing the trigger behavior:

KeyRemap4MacBook also supports running shell scripts:

<?xml version="1.0"?>
<root>
  <vkopenurldef>
    <name>KeyCode::VK_OPEN_URL_SHELL_say_a</name>
    <url type="shell">say a</url>
  </vkopenurldef>
  <item>
    <name>test</name>
    <identifier>test</identifier>
    <autogen>__KeyToKey__ KeyCode::A, KeyCode::VK_OPEN_URL_SHELL_say_a</autogen>
  </item>
</root>

Other applications that support assigning shortcuts to scripts:

Another option is to create an Automator service:

  1. Open Automator and choose the Service template.
  2. Check that the input type and application scope are correct, or change "selected text" to "no input" if the service does not receive any input.
  3. Add a Run Shell Script or Run AppleScript action for the script.
  4. Save the service and give it a shortcut from System Preferences.

There has been a bug since 10.7 where the shortcuts for services don't always work until you hover over the services menu from the menu bar. Shortcuts for services don't work when an application that doesn't have a services menu (like Tower) is front-most. There is also a noticeable delay before services are run.

Solution 3

If you are using BetterTouchTool you can assign a shortcut to shell command by selecting a following action: Controlling Other Applications > Execute Terminal Command

Share:
47,909

Related videos on Youtube

Stefan Lasiewski
Author by

Stefan Lasiewski

Stefan Lasiewski Daddy, Linux Guy, Bicyclist, Tinkerer, Fixer &amp; Breaker of things. I work as a Senior SYstem Engineer at the National Energy Research Scientific Computing Center (NERSC) Division at Lawrence Berkeley National Laboratory (LBNL) in Berkeley, CA. Father of 3 cute children. Yes I'm a sysadmin and a parent. Heavy user of CentOS, RHEL &amp; FreeBSD for production services at work. I also run Ubuntu at home, for the simplicity. I'm a fan of Apache HTTP Server, Nagios &amp; Cacti. Original proposer of unix.stackexchange.com (Yes, this proposal predated askubuntu.com, and I wish they would have merged with the Unix proposal.).

Updated on September 17, 2022

Comments

  • Stefan Lasiewski
    Stefan Lasiewski almost 2 years

    Does OS X provide an easy way to bind key combinations to commands which are typically run on the command line?

    For example, is there some way to assign ⌘ Cmd+L as a global shortcut to quickly lock my screen, possibly using /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine?

  • Jari Keinänen
    Jari Keinänen about 13 years
    open -a ScreenSaverEngine is even a tad shorter.
  • paragbaxi
    paragbaxi over 9 years
    Quicksilver instructions: macosxtips.co.uk/index_files/…
  • a paid nerd
    a paid nerd about 9 years
    FastScripts is $10 shareware but well worth it.
  • Nick T
    Nick T over 8 years
    Do you have a basic FastScript that does something like bind F1 to open a terminal or whatever?
  • vault
    vault over 7 years
    Please add Hammerspoon to the list :)