Global hotkey to show/hide a specific app in OS X?

10

5

Possible Duplicate:
Launch an OS X app with a keyboard shortcut

Is it possible to define a global hotkey to show/hide a specific app in OS X?

For example, I want to be able to show/hide Safari with Cmd+Space.

Roman Dolgiy

Posted 2011-09-24T21:55:56.300

Reputation: 203

Question was closed 2012-11-12T04:36:03.117

Related to Launch an OS X app with a keyboard shortcut - Super User. I edited my answer to that question to include third party apps that support show-or-hide style triggers. I also added an AppleScript for showing or hiding an app.

– Lri – 2011-09-25T13:58:34.913

Answers

7

Open Automator, select to create a Service, configure to have it receive no input in any application.

From the library, double-click Utilities » Run AppleScript and enter the following into the large text area:

on run {input, parameters}

    tell application "System Events"
        set names to name of application processes
        if names contains "Safari" then
            tell application process "Safari"
                if visible then
                    set visible to false
                else
                    # use the following to simply have it reappear:
                    set visible to true
                    # use the following to focus Safari:
                    tell application "Safari" to activate
                end if
            end tell
        else
            display dialog "Safari is not running"
        end if
    end tell

    return input
end run

Save under any name. Assign a keyboard shortcut in System Preferences » Keyboard » Keyboard Shortcuts » Services. Remember to disable the Spotlight shortcut Cmd-Space.

Daniel Beck

Posted 2011-09-24T21:55:56.300

Reputation: 98 421

2Instead of display dialog, you could alternatively tell application "Safari" to activate to launch it if it's not running. – Daniel Beck – 2011-09-25T19:52:09.057

3

Save in AppleScript Editor and Assign a shortcut to running a script in OS X

tell application (path to frontmost application as text)
    if name is "TextEdit" then
        set bid to id
        tell application "System Events" to tell (process 1 where bundle identifier is bid)
            set visible to false
        end tell
    else
        tell application "TextEdit"
            reopen
            activate
        end tell
    end if
end tell
  • If the targeted application is currently frontmost, hide it
  • Otherwise activate it

Lri

Posted 2011-09-24T21:55:56.300

Reputation: 34 501

The behavior of this script is as follows: If TextEdit is the frontmost application, it will be hidden, otherwise it will be brought to the front. So this script will not hide the application if it's visible but not frontmost, instead bringing it to front. – Daniel Beck – 2011-10-02T07:28:54.773

Clever behavior. I was just missing the explanation how the shortcut behaves in your post — I think this'd be helpful. – Daniel Beck – 2011-10-02T07:55:39.170

Thank you! I have marked Daniel's answer as he was the first. – Roman Dolgiy – 2011-11-25T07:48:58.410

-3

CMD+W will hide windows. This works globally. However To get back to them you need to be clicking on the dock icons. In a browser it will however close the tab.

Aleksandr Vysockij

Posted 2011-09-24T21:55:56.300

Reputation: 17

No. Cmd + W closes windows. – daviesgeek – 2011-09-25T16:33:25.457

Additionally, the user asks about applications, not windows. On OS X, there's very much a difference. – Daniel Beck – 2011-09-25T18:57:41.997