Wie öffne ich neue Fenster als separate Anwendungsinstanzen für Chrome, Terminal?

18

Beim Übergang von Linux (OpenBox WM) zu MBP habe ich Mühe, die gewohnte Produktivität wiederherzustellen ... Eine Besonderheit ist, dass OSX darauf besteht, zwischen "Anwendungen" und "Fenstern" zu unterscheiden und unterschiedliche Schlüssel zuzuweisen Kombos zum Umschalten zwischen beiden, jedes mit seinem eigenen Rotationsverhalten (Seufzen). Dies wird noch schlimmer, da OSX darauf besteht, alle Fenster von Anwendung X nach vorne zu bringen, wenn ich darauf umschalte. Ich stoße oft auf Situationen, in denen ich zwei oder mehr Chrome-Fenster und zwei oder mehr Terminal-Fenster habe, wobei sich jede Gruppe über den gesamten Desktop-Bereich erstreckt, ich jedoch nicht gleichzeitig jeweils eines vorne haben kann.

Andere Einschränkungen: Ich möchte keine Fenster in separate Arbeitsbereiche (oder wie auch immer genannt) verschieben, nur damit ich mit ihnen arbeiten kann. Ich ziehe es vor, die Maus nicht zu benutzen, bin aber bereit, dies zu tun, wenn dies mein Problem löst (dies wird im obigen Fall nicht der Fall sein).

Eine Möglichkeit, mein Problem zu lösen, besteht darin, neue Fenster der von mir gewünschten Anwendungen (Chrome, Terminal) als separate Instanzen zu starten. Dadurch kann ich willkürlich zwischen ihnen wechseln, ohne sie alle nach vorne zu zwingen.

Kennt jemand einen Weg, dies in Yosemite zu tun? Vielen Dank!

garnold
quelle
1
Um ehrlich zu sein, wechseln Sie zurück zu Linux :-) Ich hatte seit Monaten die gleichen Probleme wie Sie und konnte es auch nicht lösen. Hast du es endlich geschafft?
Flindeberg

Antworten:

15

Sie können die folgende Syntax mit dem openBefehl versuchen :

open -na "Google Chrome"

Dabei -nöffnet parameters eine neue Instanz, auch wenn bereits eine ausgeführt wird.

Durch Hinzufügen von extra --user-data-dirwird die Instanz im separaten Profilverzeichnis gestartet, z

open -na "Google Chrome" --args --user-data-dir="$PWD/Foo"

Mit können --profile-directorySie den Standardprofilnamen ändern.

Kenorb
quelle
Dies öffnet definitiv ein neues Fenster, aber ich kann nicht sagen, wie es eine neue Instanz ist. Ich hatte erwartet, dass sich im Task-Switcher mehrere Chrome-Symbole befinden. Am
kraftydevil
Ich bin nicht sicher, warum auf Ihrem System keine neue Instanz angezeigt wird. Wenn ich eine neue Instanz mit open -nSafari oder Forklift beginne (als Beispiel), werden sie im Dock und im App-Umschalter als neue Versionen (sowie in der Aktivitätsüberwachung) angezeigt. Wenn Sie nach einem alternativen App-Umschalter suchen, ist Witch by Many Tricks möglicherweise das Richtige für Sie. Es ermöglicht das Umschalten sowohl per App als auch per Fenster.
Dustin Wheeler
5
Ahh, dies scheint etwas anderes zu sein, was mit Chrome zu tun hat ... Mehrere Apps auf meinem System (iTerm, Safari, Forklift) beginnen mit neuen Instanzen, aber Chrome scheint die neue Instanz zu verschlucken (Activity Monitor zeigt dann eine neue Instanz an, wenn der openBefehl ausgeführt wird Es verschwindet schnell und das neue Fenster wird zu einem Unterprozess der ursprünglichen Chrome-Instanz.
Dustin Wheeler
11

Ok, eine vollständige Antwort für den allgemeinen Fall und speziell für Chrome:

Für die meisten Anwendungen sollte das Starten mit open -naF "App Name"oder open -nF /path/to/application.appausreichen (siehe Safari, Gabelstapler, Office-Apps usw.).

  • -n öffnet eine neue Instanz
  • -aEs wird empfohlen open, in der Liste der registrierten Apps nachzuschlagen (der vollständige Pfad muss nicht angegeben werden, kann jedoch schief gehen, wenn Sie mehrere Versionen einer App haben. Manchmal treten auf meinem System Probleme bei der Unterscheidung zwischen MacOS-Apps und von Parallels-Betriebssystemen installierten Apps auf. Ich gebe den Pfad lieber direkt an.)
  • -F öffnet eine neue Instanz (ignoriert einen App-Speicherstatus, der von früheren Instanzen übrig geblieben ist)

Für Google Chrome ist etwas anderes erforderlich (geändert von der Quelle in diesem Blog-Beitrag ). Chrome muss von der Befehlszeile aus mit dem --user-data-dir=/tmp/dirFlag gestartet werden, das in gesetzt ist "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"(geben Sie Ihr eigenes Verzeichnis an… wenn Sie nur zwei Instanzen benötigen, wahrscheinlich am besten, um eine dauerhafte zweite Heimat zu schaffen, aber wenn Sie eine beliebige Zahl benötigen, am besten, um eine Shell-Funktion zu erstellen, die erstellt ein zufälliges temporäres Verzeichnis und löscht es beim Beenden.

Die Verwendung dieser Methode führt zu mehreren Chrome-Instanzen auf meinem Computer und verhindert, dass Chrome sie unter demselben Master-Prozess konsolidiert.

Übrigens möchten Sie möglicherweise zusätzliche Flags in Ihre Shell-Funktion integrieren, um Chrome zu starten. Eine umfangreiche (automatisch aktualisierte) Liste finden Sie hier .

Dustin Wheeler
quelle
2

Die einfachste Methode ist der open -nBefehl

z.B open -n /Applications/Chrome.app/

Tetsujin
quelle
1
Vielen Dank. Dies hatte leider nicht den erwarteten Effekt ... Mit Chrome öffnete sich zwar ein neues Fenster, es war aber an die bereits laufende Instanz gebunden. Mit Terminal wurde eine neue Instanz erstellt, die die Fenster der ausgeführten Instanz replizierte (auf sehr verrückte Weise). Ich bin mir nicht sicher, wie ich vorgehen soll. Weitere Ratschläge sind willkommen.
Garnold
Ich bin mir danach nicht wirklich sicher, sorry. Ich benutze nur Leerzeichen und Flip zwischen den Arbeits-Setups, je nachdem, was ich tue.
Tetsujin
Das Replikationsverhalten ist wahrscheinlich an die in OS X 10.7 eingeführte Resume-Funktion gebunden. Sie können es für jede App einzeln mit dem defaults writeBefehl deaktivieren oder das -FFlag mit open( z. B. open -nFa "Terminal" ) verwenden, um eine "frische" Instanz einer App zu öffnen (überprüfen Sie die manSeite auf Öffnen).
Dustin Wheeler
1

Sie müssen (irgendwann) die Anwendung über Terminal ausführen.

Sie können entweder den open -nBefehl vom Terminal aus verwenden (wie von @Tetsujin erwähnt) oder Sie können innerhalb des Anwendungspakets auf die ausführbare Datei klicken (normalerweise in Application/Contents/MacOS/).

JMY1000
quelle