62

Is there a way to hide certain apps from cmd+tab?

The problem I'm facing is that I have some apps (like iTunes and of course Finder) always open. But when I'm working and switching between apps that are relevant for me (Chrome, Sublime, Terminal) with cmd+tab I'll always see these 'irrelevant' apps in the menu.

Thanks

1
  • 4
    Most of the answers here are irrelevant on Catalina, Big Sur, and later. Due to SIP any edits to Info.plist will cause the application to give an error on launch. Commented Nov 17, 2020 at 3:07

5 Answers 5

48

Yes, it is possible, however the only way I know of doing it also hides the dock icon.

Set the boolean LSUIElement.

<key>LSUIElement</key>
<true/>

Source: LSUIElement - Property List Key - Apple Developer

In macOS Catalina 10.15 and later, the boolean is enforced. Previously, a string of "1" could be used.

Source: Re: LSUIElement and LSBackgroundOnly - Cocoa-dev mailing list

you must modify the file named 'Info.plist' inside the Application's package (i.e. Sherlock.app/Contents/Info.plist). Open this file in your favorite text editor and add the following section (if it's already present simply change the 0 to a 1 in the string tag):

<key>LSUIElement</key>
<string>1</string>

Source: Hide any program’s Dock icon - Macworld Mac OS X Hints

16
  • 1
    holy smokes that worked better than expected thanks a lot!
    – wpp
    Commented May 21, 2013 at 20:50
  • 2
    Two comments. First, the above [STRING] format will not work in 10.8 -- you need to use a boolean type. Second, besides hiding the app from the application switcher, modifying the NSUIElement will also hide the menu bar, so using the "hidden" applications becomes quite difficult.
    – Kent
    Commented May 21, 2013 at 23:56
  • 1
    Have you had any luck with LSUIElement in Mavericks?
    – atreat
    Commented Oct 24, 2013 at 3:09
  • 2
    Yep, I downloaded the update, they now support it natively with their v1.4.2 release. github.com/binaryage/totalterminal/issues/…
    – atreat
    Commented Oct 27, 2013 at 18:18
  • 7
    In Mavericks, this crashes for me. I've tried a couple of different applications.
    – sandover
    Commented Feb 18, 2014 at 18:50
9

You can set LSUIElement to 1 as string in the Info.plist:

<key>LSUIElement</key>
<string>1</string>

It removes applications from the application switcher, Dock, and the force quit window. It also removes the menu bar, so it's not really usable with Finder or iTunes.

Editing an Info.plist makes some applications like TextEdit and Chess crash on launch in 10.8. It also invalidates the code signatures of signed applications, so they are not allowed to access keychains automatically.

http://www.cocoabuilder.com/archive/cocoa/141753-lsuielement-and-lsbackgroundonly.html:

NSUIElement is depreciated. However, I remember clearly from working at Apple (Apple DTS) a few years back that NSUIElement and LSUIElement map to the same thing (at least it did back when I was there and I doubt that would have changed). Though NSUIElement is depreciated (NS stands for next step of course! and LS stands for launch services), they are exactly the same thing for all intents and purposes.

Both LSUIElement and NSUIElement still work, and both can also be set to true or 1 as integer.

grep -A1 [LN]SUIElement /Applications/*/Contents/Info.plist

Information Property List Key Reference: Launch Services Keys:

LSUIElement (String - OS X) specifies whether the app runs as an agent app. If this key is set to “1”, Launch Services runs the app as an agent app. Agent apps do not appear in the Dock or in the Force Quit window. Although they typically run as background apps, they can come to the foreground to present a user interface if desired. A click on a window belonging to an agent app brings that app forward to handle events.

The Dock and loginwindow are two apps that run as agent apps.

Witch has an option to ignore applications:

I have just disabled the application switcher and Dock though. I mainly use keyboard shortcuts and Alfred to switch applications.

1
  • 1
    Setting LSUIElement in Slack's info.plist caused it to crash on launch for me. Commented Aug 24, 2016 at 15:59
5

Disclaimer: I developed GhostTile

Short Anwser: just try GhostTile. It's paid though but you can try as long as you can (steal the idea from Sublime Text)

Long Anwser:

AFAIK, There are two ways to achieve this:
1. Setup an App as Agent. E.g. Add LSUIElement key to App's Info.plist or Set App's activation policy to NSApplicationActivationPolicyAccessory.
2. Hook Dock or other related system process to ignore some apps. Thanks to SIP(Rootless) on El Captian. It's not recommended to do so.

GhostTile is focus on hiding Apps from Dock. It's easy to use and provide multiple ways to manage the apps you hide. There is no on-disk modification, so you won't break apps' codesign signature.

Other features:

  • You can still get notified for the App's Dock Activity
  • Expose-like Overview
  • Alfred Workflow
10
  • Just tried this app and none of the apps I tried are "supported yet". Finder, Mail, iOS Simulator...
    – pkamb
    Commented Jul 22, 2016 at 19:45
  • 1
    @pkamb I'm sorry but all the apps your tried is protected by System Integration Protection (SIP) introduced in El Capitan. Could you please try other third party apps? or turn SIP off?
    – hewigovens
    Commented Jul 23, 2016 at 0:30
  • Fair enough, thanks for the answer. I'd suggest a more informative error message or link to an FAQ!
    – pkamb
    Commented Jul 23, 2016 at 16:25
  • How do I hide Ghost Title from Cmd+Tab launcher ? I tried adding <key>NSUIElement</key> <string>1</string> to Info.plist and restarting the app. It didnt work
    – mac
    Commented May 3, 2017 at 10:53
  • @mac There is a preference option called "Hide GhostTile from Dock"
    – hewigovens
    Commented May 4, 2017 at 4:26
1

Sorry to be late to the party, but indeed as previous answers and comments state, this might make some applications to crash on launch. I can't make this work in Yosemite although I was able to make it work before on another Mac. Changing the TotalTerminal Info.plist did not do anything, and changing the Applications/Utilities/Terminal/Info.plist caused the crash.

As @atreat mentioned in one of the comments, the guys from TotalTerminal are now supporting this hide via a simple command:

defaults write com.apple.Terminal TotalTerminalHideDockIcon -bool YES

This worked perfectly for me.

0

If you are using an iPhone and has similar problem with hiding an app from the App Switcher, you can install something like BlacklistSwitcher9.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .