6
votes

Is there a public Apple API which allows you to remove an application's dock icon at runtime? I have tried substituting an empty view with zero size via NSApplication's dockTile, but that simply erases the dock icon without reclaiming its space and launch indicator. I also know about the LSUIElement parameter in an application's info.plist, but this value is only evaluated on launch. It is not a runtime parameter.

1
Never saw a single application do that. Do you think it is a good idea? As a user, I'd certainly not like it. Good question, tho, so +1user405725
Opinion is probably divided on the matter. But there are commercial examples of this: Sparrow allows the user to choose whether the app has a menulet icon, a dock icon or both. However, to remove its icon from the dock requires restarting the application. This leads me to believe that they are using the NSUIElement boolean in the plist.ctpenrose

1 Answers

7
votes

It's a one way street: You can set your app to NSUIElement to hide the dock icon, then call [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; to show it in the dock, but once it's there you can't remove it. So you could make the dock icon user-configurable, but you'd have to relaunch the app to hide the icon.


EDIT

You can call setActivationPolicy:NSApplicationActivationPolicyProhibited to hide dock-icon again – user1592530 Sep 18 '12 at 14:21

The comment is right. Works two ways nowadays – Daij-Djan Dec 24 '12 at 11:46