System Tray only (no dock icon) application using C# / Mono on Mac

后端 未结 2 2094
攒了一身酷
攒了一身酷 2020-12-06 01:01

I\'m looking to move one of my C# applications over to Mono for use on the Mac. Currently, I\'m trying to figure out how to make it a sort of \"background\" process, but sti

相关标签:
2条回答
  • 2020-12-06 01:33

    I have your answer:

    First, to add a Status bar icon (alternative of Notify Icon in Win Forms):

            NSStatusItem sItem = NSStatusBar.SystemStatusBar.CreateStatusItem(30);
            sItem.Menu = notifyMenu;
            sItem.Image = NSImage.FromStream(System.IO.File.OpenRead(NSBundle.MainBundle.ResourcePath + @"/notify-icon.icns"));
            sItem.HighlightMode = true;
    

    notifyMenu is your instance of NSMenu as a means of context menu strip for your notify icon.

    and put your ICNS file made using Icon Composer in your project files and flag it as Content. (right click->build action->content)

    Now It is time to remove dock icon:

    on your info.plist file. make a new Boolean type item and name it "LSUIElement" and set the value to YES.

    Hope it helps. Regards, Peyman Mortazavi

    0 讨论(0)
  • 2020-12-06 01:54

    I do not know whether I understand your question properly. If you just need an application without any notion of main window, but with system tray, I once did it with WinForms using code like

    static void Main()
    {
        Application.Run(new MyContext());
    }
    

    Where MyContext was a class derived from ApplicationContext which in its constructor created a tray icon using NotifyIcon class. In fact Application.Run() starts message loop for your application giving tray icon a chance to answer user clicks (tray icon itself could be created earlier). It worked on Windows and Ubuntu, never tested on Mac.

    Nevertheless today I would use Gtk# on Linux and MonoMac on Mac. In the first case concept is probably very similar (you can also see Tomboy code, it does exactly that!). In the second - don't know, never used it.

    0 讨论(0)
提交回复
热议问题