Come aprire nuove finestre come istanze di applicazione separate per Chrome, Terminal?


18

Passando da Linux (OpenBox WM) a MBP, sto lottando per ripristinare il livello di produttività a cui ero abituato ... Una cosa specifica che lo sta uccidendo è l'insistenza di OSX nel separare tra "applicazioni" e "finestre", assegnando chiavi diverse combo per alternare tra i due, ognuno con il proprio comportamento di rotazione (sospiro). Ciò peggiora ancora perché OSX insiste nel portare tutte le finestre dell'applicazione X in primo piano ogni volta che passo ad essa. Mi capita spesso di imbattermi in due o più finestre di Chrome e due o più finestre di Terminale, ciascuna delle quali occupa l'intero spazio del desktop, ma non riesco a trovarne una nella parte frontale contemporaneamente.

Altri vincoli: non voglio spostare le finestre in aree di lavoro separate (o come viene chiamato) solo per poter lavorare con esse. Preferisco non usare il mouse, ma sono disposto a farlo se questo risolverà il mio problema (nel caso precedente non lo farà).

Una cosa che potrebbe risolvere il mio problema è la possibilità di avviare nuove finestre delle applicazioni a cui tengo (Chrome, Terminal) come istanze separate. Questo mi consentirà di passare da una all'altra arbitrariamente senza forzarle tutte in primo piano.

Qualcuno sa come farlo in Yosemite? Molte grazie!


1
A dire il vero, torna a Linux :-) Ho avuto gli stessi problemi che hai da mesi e non sono stato in grado di risolverlo. Sei riuscito finalmente?
Flindeberg,

Risposte:


15

Puoi provare la sintassi seguente usando il opencomando:

open -na "Google Chrome"

dove i -nparametri apre una nuova istanza anche se è già in esecuzione.

L'aggiunta di extra --user-data-diravvierà l'istanza nella directory del profilo separata, ad es

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

E usando --profile-directorypuoi cambiare il nome del profilo predefinito.


Questo sicuramente apre una nuova finestra ma non posso dire come sia una nuova istanza. Mi aspettavo che ci fossero più icone di Chrome nel selettore di attività. Ho finito per trovare un'app per fare qualcosa di simile a questo: bahoom.com/hyperswitch
kraftydevil

Non sono sicuro del motivo per cui il tuo sistema non mostra una nuova istanza. Quando inizio una nuova istanza con open -nSafari o Forklift (come esempi), vengono visualizzati nel Dock e nel selettore di app come nuove versioni (così come in Activity Monitor). Se stai cercando un commutatore di app alternativo, Witch by Many Tricks potrebbe essere quello che desideri. Consente di passare dall'app alla finestra.
Dustin Wheeler,

5
Ahh, questo sembra essere qualcosa di diverso in relazione a Chrome ... più app sul mio sistema (iTerm, Safari, Forklift) iniziano nuove istanze, ma Chrome sembra ingoiare la nuova istanza (Activity Monitor mostra una nuova istanza quando openviene eseguito il comando, quindi scompare rapidamente e la nuova finestra diventa un sottoprocesso dell'istanza di Chrome originale).
Dustin Wheeler,

11

Ok, una risposta completa per il caso generale e per Chrome in particolare:

Per la maggior parte delle applicazioni, l'avvio con open -naF "App Name"o open -nF /path/to/application.appdovrebbe essere sufficiente (consultare Safari, Forklift, app di Office, ecc.).

  • -n apre una nuova istanza
  • -adice opendi cercare nell'elenco delle app registrate (non è necessario specificare il percorso completo, ma può andare storto se si hanno più versioni di un'app. A volte vedo problemi sul mio sistema con la differenziazione tra app macOS e app installate dai sistemi operativi Parallels ... Preferisco specificare direttamente il percorso.)
  • -F apre una nuova istanza (ignora lo stato di salvataggio di un'app rimasto dalle istanze precedenti)

Per Google Chrome, è necessario qualcosa di leggermente diverso (modificato dalla fonte in questo post del blog ). Chrome deve essere avviato dalla riga di comando con il --user-data-dir=/tmp/dirflag impostato "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"(specificare la propria directory ... se sono necessarie solo due istanze, probabilmente è meglio creare una seconda home permanente, ma se è necessario un numero arbitrario, è meglio creare una funzione shell che crea una directory temporanea casuale quindi la elimina all'uscita).

L'uso di questo metodo comporta più istanze di Chrome sul mio computer e impedisce a Chrome di consolidarle con lo stesso processo principale.

A proposito, potresti voler includere flag aggiuntivi nella tua funzione shell per l'avvio di Chrome ... qui è disponibile un ampio elenco (aggiornato automaticamente) .


2

Il metodo più semplice è il open -ncomando

per esempio open -n /Applications/Chrome.app/


1
Grazie. Questo non ha avuto l'effetto previsto purtroppo ... Con Chrome, ha effettivamente aperto una nuova finestra, ma era legato all'istanza già in esecuzione. Con Terminal, ha creato una nuova istanza che ha replicato le finestre dell'istanza in esecuzione (in modo molto strano). Non sono sicuro di come procedere qui, ulteriori consigli apprezzati.
garnold

Non ne sono davvero sicuro, mi dispiace. Uso semplicemente Spaces & flip tra le impostazioni di lavoro, a seconda di cosa sto facendo.
Tetsujin,

Il comportamento della replica è probabilmente legato alla funzione Riprendi introdotta in OS X 10.7. Puoi disabilitarlo su una base per-app usando il defaults writecomando oppure puoi usare il -Fflag con open( es. open -nFa "Terminal" ) Per aprire un'istanza "nuova" di un'app (controlla la manpagina per aprirla).
Dustin Wheeler,

1

Dovrai (eventualmente) finire per eseguire l'applicazione dal Terminale.

Puoi usare il open -ncomando dal Terminale (come menzionato da @Tetsujin) oppure nel pacchetto dell'applicazione puoi fare clic sul file eseguibile (di solito in Application/Contents/MacOS/)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.