Как открыть новые окна как отдельные экземпляры приложения для Chrome, Terminal?

18

Переходя от Linux (OpenBox WM) к MBP, я изо всех сил пытаюсь восстановить уровень производительности, к которому я привык ... Одна конкретная вещь, которая убивает это, - настойчивость OSX в разделении между «приложениями» и «окнами», назначая разные ключи сочетается с переключением между ними, каждый со своим поведением вращения (вздох). Это становится еще хуже, потому что OSX настаивает на том, чтобы все окна приложения X выходили на передний план всякий раз, когда я переключался на него. Я часто сталкиваюсь с ситуациями, когда у меня есть два или более окон Chrome и два или более окон терминала, каждая группа занимает все пространство рабочего стола, но у меня не может быть одного из каждого на передней панели одновременно.

Другие ограничения: я не хочу перемещать окна в отдельные рабочие пространства (или как они там называются), чтобы я мог работать с ними. Я предпочитаю не использовать мышь, но готов сделать это, если это решит мою проблему (в вышеуказанном случае это не так).

Одна вещь, которая может решить мою проблему - это возможность запускать новые окна приложений, которые мне нужны (Chrome, Terminal), как отдельные экземпляры. Это позволит мне произвольно переключаться между ними, не заставляя их всех двигаться вперед.

Кто-нибудь знает способ сделать это в Йосемити? Большое спасибо!

garnold
источник
1
Если честно, переключитесь обратно на Linux :-) У меня были те же проблемы, что и у вас, в течение нескольких месяцев, и я так и не смог их решить. Вам удалось наконец?
Флиндеберг

Ответы:

15

Вы можете попробовать следующий синтаксис, используя openкоманду:

open -na "Google Chrome"

где -nпараметры открывают новый экземпляр, даже если он уже запущен.

Добавление extra --user-data-dirзапустит экземпляр в отдельном каталоге профиля, например

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

И с помощью --profile-directoryвы можете изменить имя профиля по умолчанию.

kenorb
источник
Это определенно открывает новое окно, но я не могу сказать, как это новый экземпляр. Я ожидал, что в переключателе задач будет несколько значков Chrome. В итоге я нашел приложение, чтобы сделать что-то похожее на это: bahoom.com/hyperswitch
kraftydevil
Я не уверен, почему ваша система не показывает новый экземпляр. Когда я начинаю новый экземпляр с open -nSafari или Forklift (как примеры), они отображаются в Dock и переключателе приложений как новые версии (а также в Activity Monitor). Если вы ищете альтернативный переключатель приложений, Witch by Many Tricks может быть тем, что вам нужно. Это позволяет переключаться как по приложению, так и по окну.
Дастин Уилер
5
Ах, похоже, это что-то другое, связанное с Chrome… несколько приложений в моей системе (iTerm, Safari, Forklift) запускают новые экземпляры, но Chrome, похоже, проглатывает новый экземпляр (Activity Monitor показывает новый экземпляр при openзапуске команды, затем оно быстро исчезает, и новое окно становится подпроцессом исходного экземпляра Chrome).
Дастин Уилер
11

Хорошо, полный ответ для общего случая и для Chrome, в частности:

Для большинства приложений запуск с open -naF "App Name"или open -nF /path/to/application.appдолжен быть достаточным (см. Safari, Forklift, приложения Office и т. Д.).

  • -n открывает новый экземпляр
  • -aвелит openискать в списке зарегистрированных приложений (не нужно указывать полный путь, но он может пойти не так, если у вас несколько версий приложения. Я иногда вижу проблемы в моей системе из-за различий между приложениями macOS и приложениями, установленными ОС Parallels… Я предпочитаю указывать путь напрямую.)
  • -F открывает новый экземпляр (игнорирует состояние сохранения приложения, оставшееся от предыдущих экземпляров)

Для Google Chrome требуется что-то немного другое (изменено из источника в этом сообщении в блоге ). Chrome должен запускаться из командной строки с установленным --user-data-dir=/tmp/dirфлагом "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"(укажите свой собственный каталог… если вам нужны только два экземпляра, возможно, лучше всего создать постоянный второй дом, но если вам нужно произвольное число, лучше всего создать функцию оболочки, которая создает случайный временный каталог, а затем удаляет его при выходе).

Использование этого метода приводит к нескольким экземплярам Chrome на моем компьютере и не позволяет Chrome объединять их в рамках одного основного процесса.

Кстати, вы можете захотеть включить дополнительные флаги в функцию оболочки для запуска Chrome… здесь доступен обширный (автоматически обновляемый) список .

Дастин Уилер
источник
2

Самый простой метод - это open -nкоманда

например open -n /Applications/Chrome.app/

Tetsujin
источник
1
Благодарю. К сожалению, это не дало ожидаемого эффекта ... С Chrome он действительно открыл новое окно, но он был привязан к уже запущенному экземпляру. С помощью Terminal он создал новый экземпляр, который реплицировал окна запущенного экземпляра (очень странно). Не уверен, как действовать здесь, дальнейшие советы приветствуются.
Гарнольд
Не очень уверен после этого, извините. Я просто использую пробелы и переключаюсь между рабочими настройками, в зависимости от того, что я делаю.
Tetsujin
Поведение репликации, вероятно, связано с функцией возобновления, которая была представлена ​​в OS X 10.7. Вы можете отключить его для каждого отдельного приложения, используя defaults writeкоманду, или вы можете использовать -Fфлаг с open( например, open -nFa "Terminal" ), чтобы открыть «свежий» экземпляр приложения (проверьте manстраницу на открытость).
Дастин Уилер
1

Вам (в конце концов) придется в конечном итоге выполнить приложение из терминала.

Вы можете использовать open -nкоманду из терминала (как упомянуто @Tetsujin) или вы можете в пакете приложения нажать на исполняемый файл (обычно в Application/Contents/MacOS/)

JMY1000
источник