Öffnen Sie die iTerm2-SSH-Sitzung in einem neuen Fenster anstelle einer neuen Registerkarte

Nachdem ich nun herausgefunden habe, wie iTerm2 als ssh:// URL-Handler festgelegt wird , möchte ich, dass iTerm2 auf eine ssh-URL antwortet, indem es ein neues Fenster öffnet, anstatt eine neue Registerkarte in einem vorhandenen Fenster zu öffnen. Ist das möglich?

Sie können jede Registerkarte aus einem iTerm 2-Fenster ziehen, um ein neues Fenster zu erstellen.

Antworten (1)

Ich war neugierig auf das gleiche Problem. Nach Überprüfung des Quellcodes fand ich in iTerm2 v1.0.0.20111020 fest codiert, um eine neue Sitzung als Registerkarte zu öffnen, wenn eine Sitzung bereits vorhanden ist, wenn sie fast jeden Befehl "Diese URL mit einem Handler starten" erhält.

Meine Xcode- und Objective-C-Kenntnisse sind immer noch ziemlich schwach, aber wenn Sie es versuchen möchten, glaube ich, dass das Problem mit der Quelldatei iTermController.m zusammenhängt . In den Zeilen 789 bis 870 launchBookmark:withURLhat die Methode den folgenden 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];

Ich vermute, dass wenn theTerm == nil, addNewSessionwie erwartet funktioniert, indem ein neues Fenster gestartet wird, da eines derzeit nicht ausgeführt wird. Vielleicht können Sie den Code ändern, um zu erzwingen, dass der erste Block immer ausgeführt wird, unabhängig vom theTermInhalt von .

Ich hoffe das hilft!! .. Es kann sich lohnen, einen Fehlerbericht einzureichen oder den Autor zu kontaktieren , wenn Sie immer noch Probleme haben.

+1 für Google Code. Ich würde vorschlagen, dass es eine Option zum vollständigen Deaktivieren von Registerkarten gibt, da ich sie persönlich nie verwende. Dies kann jedoch übertrieben sein, da das einzige Mal, dass ich jemals auf einen "erzwungenen Tab" gestoßen bin, dieser Anwendungsfall ist. Also, wenn Upstream diesen speziellen Fehler beheben kann, würde ich mich auch freuen :)