Jak otworzyć nowe okna jako osobne wystąpienia aplikacji dla Chrome, Terminal?

18

Przechodząc z Linuksa (OpenBox WM) do MBP, walczę o odzyskanie poziomu wydajności, do którego byłem przyzwyczajony ... Jedną z konkretnych rzeczy, które go zabijają, jest naleganie OSX na oddzielanie „aplikacji” od „okien”, przypisywanie innego klucza kombinacje do przełączania między nimi, każde z własnym zachowaniem obrotowym (westchnienie). Sytuacja staje się jeszcze gorsza, ponieważ OSX nalega na przeniesienie wszystkich okien aplikacji X na przód za każdym razem, gdy się do niej przełączam. Często spotykam się z sytuacjami, w których mam dwa lub więcej okien Chrome i dwa lub więcej okien Terminala, z których każda obejmuje całą przestrzeń pulpitu, ale nie mogę mieć jednego z nich jednocześnie.

Inne ograniczenia: Nie chcę przenosić okien do oddzielnych obszarów roboczych (lub cokolwiek, co się nazywa), aby móc z nimi pracować. Wolę nie używać myszy, ale chętnie to zrobię, jeśli to rozwiąże mój problem (w powyższym przypadku nie będzie).

Jedną z rzeczy, które mogą rozwiązać mój problem, jest możliwość uruchamiania nowych okien aplikacji, na których mi zależy (Chrome, Terminal) jako osobnych instancji. Pozwoli mi to dowolnie przełączać się między nimi, nie zmuszając ich wszystkich do przodu.

Czy ktoś wie, jak to zrobić w Yosemite? Wielkie dzięki!

garnold
źródło
1
Szczerze mówiąc, przełącz się z powrotem na Linuksa :-) Od miesięcy miałem te same problemy, co ty i nie byłem w stanie ich rozwiązać. W końcu udało ci się?
flindeberg

Odpowiedzi:

15

Możesz wypróbować następującą składnię za pomocą openpolecenia:

open -na "Google Chrome"

gdzie -nparametry otwierają nowe wystąpienie, nawet jeśli już działa.

Dodanie dodatkowych --user-data-dirrozpocznie instancję w oddzielnym katalogu profilu, np

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

Za pomocą --profile-directorymożesz zmienić domyślną nazwę profilu.

kenorb
źródło
To zdecydowanie otwiera nowe okno, ale nie mogę powiedzieć, jak to jest nowa instancja. Spodziewałem się, że w przełączniku zadań będzie wiele ikon Chrome. Znalazłem aplikację do zrobienia czegoś podobnego do tego: bahoom.com/hyperswitch
kraftydevil
Nie jestem pewien, dlaczego twój system nie wyświetla nowej instancji. Kiedy zaczynam nowe wystąpienie z open -nSafari lub Forklift (jako przykłady), pojawiają się one w Docku i przełączniku aplikacji jako nowe wersje (jak również w monitorze aktywności). Jeśli szukasz alternatywnego przełącznika aplikacji, Witch by Many Tricks może być tym, czego chcesz. Umożliwia przełączanie zarówno według aplikacji, jak i okna.
Dustin Wheeler
5
Achh, wydaje się, że jest to coś innego związanego z Chrome… wiele aplikacji w moim systemie (iTerm, Safari, Forklift) rozpoczyna nowe wystąpienia, ale Chrome wydaje się połykać nowe wystąpienie (Monitor aktywności pokazuje nowe wystąpienie po uruchomieniu openpolecenia, a następnie szybko znika, a nowe okno staje się podprocesiem oryginalnej instancji Chrome).
Dustin Wheeler
11

Ok, pełna odpowiedź na ogólny przypadek, a konkretnie na Chrome:

W przypadku większości aplikacji uruchamianie za pomocą open -naF "App Name"lub open -nF /path/to/application.apppowinno wystarczyć (patrz Safari, wózek widłowy, aplikacje Office itp.).

  • -n otwiera nową instancję
  • -akaże openzajrzeć na listę zarejestrowanych aplikacji (nie trzeba podawać pełnej ścieżki, ale może się nie powieść, jeśli masz wiele wersji aplikacji. Czasami widzę problemy w moim systemie z rozróżnianiem aplikacji macOS i aplikacji zainstalowanych przez systemy Parallels… Wolę określić ścieżkę bezpośrednio).
  • -F otwiera nową instancję (ignoruje stan zapisu aplikacji pozostały z poprzednich instancji)

W przypadku Google Chrome wymagane jest coś nieco innego (zmodyfikowane ze źródła w tym poście na blogu ). Chrome musi zostać uruchomiony z wiersza poleceń z --user-data-dir=/tmp/dirustawioną flagą "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"(określ własny katalog… jeśli potrzebujesz tylko dwóch instancji, prawdopodobnie najlepiej utworzyć stały drugi katalog główny, ale jeśli potrzebujesz dowolnego numeru, najlepiej utworzyć funkcję powłoki, która tworzy losowy katalog tymczasowy, a następnie usuwa go przy wychodzeniu).

Użycie tej metody powoduje powstanie wielu wystąpień Chrome na moim komputerze i zapobiega ich konsolidacji przez Chrome w ramach tego samego procesu głównego.

Nawiasem mówiąc, możesz chcieć włączyć dodatkowe flagi do funkcji powłoki w celu uruchomienia Chrome… obszerna (automatycznie aktualizowana) lista jest dostępna tutaj .

Dustin Wheeler
źródło
2

Najprostszą metodą jest open -npolecenie

na przykład open -n /Applications/Chrome.app/

Tetsujin
źródło
1
Dzięki. Niestety nie przyniosło to oczekiwanego efektu ... W Chrome rzeczywiście otworzyło się nowe okno, ale było powiązane z już działającą instancją. Dzięki Terminalowi stworzył nową instancję, która zreplikowała okna działającej instancji (w bardzo dziwaczny sposób). Nie jestem pewien, jak tu postępować, doceniamy dalsze porady.
garnold
Przepraszam, nie jestem pewien. Po prostu używam Spacji i przerzucania między konfiguracjami roboczymi, w zależności od tego, co robię.
Tetsujin,
Zachowanie związane z replikacją jest prawdopodobnie związane z funkcją Wznów, która została wprowadzona w OS X 10.7. Możesz wyłączyć tę funkcję dla poszczególnych aplikacji za pomocą defaults writepolecenia lub możesz użyć -Fflagi za pomocą open( np. open -nFa "Terminal" ), Aby otworzyć „nową” instancję aplikacji (sprawdź manstronę, czy jest otwarta).
Dustin Wheeler
1

Ostatecznie będziesz musiał uruchomić aplikację z terminalu.

Możesz albo użyć open -npolecenia z terminala (jak wspomniano w @Tetsujin), albo możesz w pakiecie aplikacji kliknąć plik wykonywalny (zwykle w Application/Contents/MacOS/)

JMY1000
źródło