How can I launch multiple instances of MonoDevelop on the Mac?

20,613

Solution 1

On Mac, if you have an app open and you try to launch it again, the Mac just switches to the open app. You can force it to open a new instance by passing the option "-n" to the launcher. In a terminal, run

open -n /Applications/MonoDevelop.app

Note also that MonoDevelop is capable of opening multiple solutions. To do this, simply uncheck the "close current solution" checkbox in the "Open" dialog, or hold down the control key when clicking on one of the recently opened projects in the Welcome Page.

EDIT: For Xamarin Studio, which has replaced MonoDevelop on Mac, the command is

open -n /Applications/Xamarin\ Studio.app

EDIT 2:

For Visual Studio for Mac, which has replaced Xamarin Studio, the command is

open -n /Applications/Visual\ Studio.app

Solution 2

Using the shell to enter the command as others have described to launch an extra instance is fine, but I prefer having an icon on the dock that I can just click.

It's easy to do:

  1. Open AppleScript Editor and enter the following:

    do shell script "open -n /Applications/MonoDevelop.app/"

  2. Save with a name like "MonoDevelop Launcher" and make sure to specify Application for the file format.

  3. Drag the icon to your dock.

  4. Make sure to check out bright's comment below about replacing the generic icon with MonoDevelop's.

Click repeatedly to enjoy the grooviness of multiple MonoDevelop instances.

Solution 3

For convenience, I just create three copies of MonoDevelop.

Highlight MonoDevelop in Finder, copy, paste, rename the new copy to "MonoDevelop-2", and repeat to your satisfaction.

It also helps me keep track of what's going on in different instances. I typically keep my most important project open in "MonoDevelop", use "MonoDevelop-2" for testing ideas related to my main project, and "MonoDevelop-3" for random scratch.

When you alt-tab (open-Apple-tab (command-tab (whvr))), the name of the executable shows up beneath its icon in the application list, so, as long as I stick to my convention, I always know(ish) the contents of the instance I'm alt-tabbing to regardless of how many other app windows I have open. I don't have to cycle through them to figure it out.

It's not perfect - when I have "MonoDevelop" running, if I try to fire up one of the others, the first attempt to start will fail. You just try to fire it up again - it works the second time. This has only been happening since the most recent build, though, and I think it might have something to do with automatic updates or add-in management. Haven't looked into it too much. Since there are no problems once up and running, I don't worry about it :)

The result is that, with the start-it-twice method, for any additional instance of MonoDevelop you'd like to start, you end up having to quadruple-click instead of double-click. Adds about fifteen seconds to the process, and since I have MonoDevelop (along with "MonoDevelop-1" and "MonoDevelop-2") running all the time, it adds up to, maybe, an extra thirty seconds of work each week. A fair trade for the convenience, methinks.

A bit hacky, but it's worked well for me.

And all the cool kids are doing it.

Solution 4

Also you can use shorter version:

Open -n -a "Xamarin Studio.app"

Edit: For Visual Studio for Mac and/or more shorter the command is

Open -n -a "Visual Studio"

Solution 5

--XAMARIN STUDIO--

As at February 2013 Monodevelop is called Xamarin Studio, and the fact it has a space in it means the above doesn't work. Some fiddling later, I've found you need to nest two types of quotes and the below will work in applescript:

do shell script "open -n '/Applications/Xamarin Studio.app/'"

Enjoy

Share:
20,613
user1692901
Author by

user1692901

Open source developer, founder of Mono and Gnome projects. http://twitter.com/migueldeicaza

Updated on December 19, 2020

Comments

  • user1692901
    user1692901 over 3 years

    I would like to open a new MonoDevelop instance to work on a different project on the Mac, and the OS is currently preventing me from opening a new instance.

  • Mikayla Hutchinson
    Mikayla Hutchinson over 14 years
    Great idea! Does it still work if you create a symlink instead of copying?
  • Mikayla Hutchinson
    Mikayla Hutchinson over 14 years
    The startup failures are a known bug in the addin registry rescan. When MD detects that its dlls have changed or "moved", it rebuilds the addin registry, and sometimes it crashes when after this. There's an environment variable you can set to make it use a different registry location, which you could use to separate your three instances' registries, though I'm not sure how you'd set per-app env vars on mac. Might have to patch it into the MonoDevelop.app/Contents/macOS/MonoDevelop script.
  • Rory Blyth
    Rory Blyth over 14 years
    I haven't tried anything other than just copying, though your idea makes way more sense - wouldn't have to duplicate effort when grabbing the latest MonoDevelop builds. When I do things like this (creating dirty solutions for myself), I tend to take the laziest route to satisfy my nerd-lusty ways. But now I want to know. Course, I could've done it in far less time than it took me to write this comment... This is defeating the purpose of my laziness. I must go. I must go and try...
  • Rory Blyth
    Rory Blyth over 14 years
    Dunno why I waited so long to reply to this - I tried making a symlink as soon as I wrote the above comment - didn't work :| OS X wasn't fooled. So I'm still doing my copying thing. But, hey - it works. I've thought of a few ways of automating it and conveying more meaningful information than just -2, -3, etc. in the filename for command-tabbing through apps, but I haven't hit the Need > Laziness threshold yet that prompts me to build my tools :)
  • prashant
    prashant over 13 years
    Hi -- I'm running MonoDevelop 2.4 on Mac OS, and I'm not seeing that checkbox, or that control-key behavior. Has this changed recently?
  • Mikayla Hutchinson
    Mikayla Hutchinson over 13 years
    Still works for me. Note that the checkbox and the hint in the Welcome Page only appear if you have a solution already open, and the checkbox only appears when you actually select a solution or project in the dialog.
  • BlackTigerX
    BlackTigerX over 12 years
    The best of the two other answers combined
  • bright
    bright about 12 years
    To replace the script launcher icon with the MonoDevelop icon, you can open the package contents, and replace the applet.icns file with the monodevelop icon (from the MonoDevelop package contents.) Just remember to rename the file to applet.icns after copying it.
  • Tiago
    Tiago about 12 years
    Update to the checkbox label in case someone find this, it now says "Close current workspace"
  • Leigh Bowers
    Leigh Bowers about 12 years
    Perfect! Thanks Subfuzion, and thanks to bright for the icon replacement tip.
  • David Jeske
    David Jeske over 11 years
    FYI - if you use this method, the additional solutions are all opened in the same monodevelop window... this is not at all what I expected from using VS/MD on Windows. Apparently we have to resort to the methods below to get separate windows for separate solutions..
  • David Jeske
    David Jeske over 11 years
    ... also you can't run both subproject simultaneously using this method. Perhaps it would be better if monodevelop would implement opening a separate subproject by simply launching another copy of monodevelop. ?
  • Luke
    Luke about 11 years
    It does work, you just need to escape the space e.g. open -n /Applications/Xamarin\ Studio.app
  • Subfuzion
    Subfuzion about 11 years
    Good tip from bright about changing the icon. Also, see the answer below by Glinkot and the comment by Luke regarding handling the space in Xamarin Studio, which replaces MonoDevelop.
  • ruffin
    ruffin over 9 years
    Still works in Xamarin Studio, though I am still suspicious that Miguel pitched a softball: open -n /Applications/Xamarin\ Studio.app/ ;^)
  • Mick Byrne
    Mick Byrne almost 9 years
    One more tip, you need to escape the backslash in the script as well, like do shell script "open -n /Applications/Xamarin\\ Studio.app/"
  • Chucky
    Chucky almost 8 years
    This works for me. Is there a way to set it up so that if I click the application in the dock or in finder, it will open a new instance?