Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to close NSWindow and remove the application Icon from dock menu, yet

If you are using DropBox on MacBook you must have seen that once we finish with registration process. It closes the main window application and removes it self from dock item yet the application is running from status menu.


Visual:

enter image description here


What I have done so far :

  • My application runs perfectly with show NSWindow
  • When I login from my front application window I am able to create a status menu icon with popover
  • In this step I want to remove the NSWindow and Dock Icon yet the application should be accessible from status menu.

How to achieve this?

FYI : I am not expecting any code, just understanding or a quick hint. I will figure out the rest :)


Resource I am referring to,

Later I will configure my app for launchd. So at system startup it can launch and shows it self in status menu. Now I am I looking at a good resource(Of course its good because its Apple Doc) but as I am a naive programmer, does anyone have a good example link? which shows how to add application in launched?

EDIT:

I will be following this tutorial to add into startup, later user can change their preferences if they want, They can choose turn on my app or turn off on startup

like image 365
TeaCupApp Avatar asked Jun 01 '12 01:06

TeaCupApp


2 Answers

To run your app as a status menu only, you add one of the following keys to your info.plist file:

Application is agent (UIElement)

or:

Application is background only

As for switching between the two, Im not sure the best way, but I would suggest making the setup process its own app. (An app with an icon and window) You would than contain the app inside your menu item app, and automatically launch it when the user launches the program...

like image 182
Teak Avatar answered Nov 17 '22 15:11

Teak


As Teak mentioned you want the "Application is agent (UIElement)" key in your info.plist. This key means you won't have a dock icon... which is what you want. However there is no need to use the "Application is background only" key. This key prevents you from putting any windows on the screen, which is unnecessary. So I would leave this key out.

In general setup your app so no window automatically is shown at startup. Do some sort of check at launch to see if configuration is needed. If it is then make your configuration window visible. You can even have a "configuration..." menu item in your status menu so your user can pop open the config window any time needed. It's really very simple, but just don't use the "Application is background only" info.plist key.

By the way, it's a little difficult to make a window come to the front. The trick is to make your application come frontmost first like this...

[NSApp activateIgnoringOtherApps:YES];
[someWindow makeKeyAndOrderFront:nil];
like image 2
regulus6633 Avatar answered Nov 17 '22 15:11

regulus6633