Open iTerm2 SSH session in new window instead of new tab

Now that I figured out how to set iTerm2 as the ssh:// URL handler, I'd like iTerm2 to respond to an ssh URL by opening a new window instead of opening a new tab in an existing window. Is this possible?


Solution 1:

I was curious about the same problem. After reviewing the source code, I found in iTerm2 v1.0.0.20111020 is hard-coded to open a new session as a tab if a session already exists, when it receives nearly any "launch this URL with a handler" command.

My Xcode and Objective-C skills are still rather weak, but if you want to give it a shot I believe the problem is related to the source file iTermController.m. On lines 789 to 870 the launchBookmark:withURL method has the following code:

// Where do we execute this command?
BOOL toggle = NO;
if (theTerm == nil) {
    [iTermController switchToSpaceInBookmark:aDict];
    term = [[[PseudoTerminal alloc] initWithSmartLayout:YES
                                             windowType:[aDict objectForKey:KEY_WINDOW_TYPE] ? [[aDict objectForKey:KEY_WINDOW_TYPE] intValue] : WINDOW_TYPE_NORMAL
                                                 screen:[aDict objectForKey:KEY_SCREEN] ? [[aDict objectForKey:KEY_SCREEN] intValue] : -1] autorelease];
    [self addInTerminals: term];
    toggle = [term windowType] == WINDOW_TYPE_FULL_SCREEN;
} else {
    term = theTerm;
}

id result = [term addNewSession: aDict withURL: url];

I suspect that when theTerm == nil, addNewSession works as expected by launching a new window, since one is currently not running. Perhaps you can modify the code to force the first block to always run, regardless of theTerm's contents.

I hope this helps!! .. It may be worth filing a bug report or contacting the author if you're still having problems.