Откройте приложение на другом рабочем столе

Я пытаюсь открыть приложение на другом рабочем столе на моем MacBook (macOS Sierra версии 10.12.5).

На скриншоте я назначил Chrome другому пространству (Рабочий стол 1). Я перехожу на рабочий стол 2, и когда я нажимаю значок Chrome, я автоматически переключаюсь на рабочий стол 1. Как я могу оставаться на рабочем столе 2?

Chrome назначается рабочему столу 1

РЕДАКТИРОВАТЬ

Может логи помогут. Какой процесс запускает переключение рабочего стола?Консоль — все сообщения

Если вы назначили Chrome рабочему столу 1, щелкнув значок Chrome, вы перейдете на рабочий стол, назначенный для приложения. Если вы не хотите назначать его рабочему столу 1, просто выберите «Нет». Это то, что вы ищете?
@fsb Нет, я хочу открыть приложение без вывода сообщений, т. е. без переключения на другой рабочий стол.
Если вы находитесь на рабочем столе 2, а затем нажимаете значок Chrome, он должен переключиться на рабочий стол 1, потому что вы назначили Chrome рабочему столу 1. Я думаю, вы хотите, чтобы он открывался на рабочем столе 1, в то время как вы все еще остаетесь на рабочем столе 2 на другое приложение. Это верно?
@fsb да, точно! это то, что я ищу
Большой! Чтобы не потерять эту информацию, я бы порекомендовал вам отредактировать свой вопрос, указав, что именно происходит сейчас и что вы хотите, чтобы произошло. Я не знаю, как решить эту проблему для вас, поэтому, надеюсь, кто-то другой прочитает то, что вы хотите, и даст хороший ответ.
Я не уверен в части «тихого открытия», но если вы просто хотите избежать переключения на другой рабочий стол, вы можете отключить «При переключении приложений переключаться на пространство с открытыми окнами для этого приложения» в Системных настройках> Управление полетами — по крайней мере, как временное решение.
@aaplmath, к сожалению, этот параметр не действует ... вы пробовали его с приложением, назначенным другому рабочему столу? какую версию macOS вы используете?
Это выглядело многообещающе - cnet.com/uk/news/… - однако, похоже, это не работает в El Capitan :/
@Tetsujin отлично! кажется, это работает .. вы можете опубликовать это как ответ. Только одна небольшая проблема, о которой следует знать, заключается в том, что приложение не может быть закрыто должным образом, то есть его процесс все еще присутствует после его закрытия.

Ответы (3)

Из комментариев - похоже, что это работает для ОП, хотя я не смог заставить его работать сам на Эль-Капитане.

Из «Защитить приложения от кражи фокуса при открытии в OS X» — автор Тофер Кесслер [так что хотя бы у него хорошая родословная, но он с 2011 года]

Чтобы программа всегда открывалась в фоновом режиме, вам нужно будет отредактировать список свойств в пакете программы и добавить пару строк в файл. Для этого следуйте этим инструкциям:

  1. Найдите файл пакета приложения для рассматриваемой программы.

  2. Щелкните правой кнопкой мыши и выберите «Показать содержимое пакета».

  3. Перейдите в каталог «Содержание» в приложении и откройте файл «Info.plist» в текстовом редакторе.

  4. Добавьте в файл следующие строки (проще всего разместить их сразу после тега <dict>, перед первым <key>тегом в верхней части документа):

    <key>LSBackgroundOnly</key>
    <string>True</string>
    
  5. Сохраните и закройте файл, а также закройте окна пакета приложений.

После этого программа теперь должна всегда запускаться позади других, а затем выводиться на передний план только в том случае, если вы щелкнете окно для программы. Предупреждаю: редактирование содержимого приложений нарушит подпись их кода, которая необходима некоторым приложениям для автоматической работы с системными службами, такими как брандмауэр приложений. Без неповрежденной подписи кода система всегда может попросить вас разрешить приложениям проходить через брандмауэр при их запуске, что может доставлять некоторые неудобства. Кроме того, это может работать не для всех приложений, но тогда вы не сможете легко удалить добавленные строки, чтобы восстановить полную функциональность программы.

Второй вариант воздействия на запускаемую программу — разработать скрипт, который будет запускать ее в фоновом режиме. В основе этого скрипта лежит использование команды терминала «открыть» с флагом «-g» следующим образом (на примере iCal):

open -g /Applications/iCal.app

В качестве альтернативы указанию полного пути к приложению вы также можете использовать флаг «-a», а затем указать только имя приложения, например следующее:

open -ga iCal

С помощью этих команд вы можете настроить средство запуска для своих программ, используя AppleScript или Automator, где сценарий запускает эту команду как сценарий оболочки для целевого приложения по выбору. Например, чтобы создать сценарий, который всегда будет запускать iCal в фоновом режиме, откройте Automator и создайте новый рабочий процесс приложения. Затем добавьте в рабочий процесс действие «запустить сценарий оболочки» и вставьте одну из приведенных выше команд в поле сценария действия. Затем сохраните рабочий процесс, и когда вы его запустите, iCal должен открыться за вашим текущим приложением.

Одна оговорка заключается в том, что приложение не может быть закрыто должным образом, т. е. его процесс все еще присутствует после его закрытия.

Я пробовал это в Yosemite, но не в Sierra, но вы можете попробовать отключить автопереключение рабочего стола.

Откройте терминал и введите:

defaults write com.apple.dock workspaces-auto-swoosh -bool NO

перезапустить док с

killall Dock

Чтобы вернуться к типу настройки по умолчанию

defaults write com.apple.dock workspaces-auto-swoosh -bool YES
killall Dock
спасибо за ответ, но это я уже пробовал.. кажется, что этот вариант вообще не учитывается. Может ли другой параметр заменить этот параметр?
Вы пытались открыть назначенное приложение? А на Yosemite у вас не было автопереключения?
@andy: Тебе не кажется, что было бы полезно упомянуть, что ты уже пробовал?
наверное да, но я думаю, что много информации отпугнет некоторых людей

Я получаю желаемую производительность, используя опцию «нет» при назначении приложения на рабочий стол. Но если приложение открыто на другом рабочем столе, вы попадете на этот рабочий стол, если попытаетесь открыть другой экземпляр приложения. Я не знаю обходного пути для этого. Просто не открывайте приложение на рабочем столе, отличном от того, которое вы хотите. Если для этого есть обходной путь, возможно, другой ответчик узнает.

да, как только приложение открыто и назначено определенному рабочему столу, я могу добиться такого поведения, например, в open -nF /Applications/Google\ Chrome.app/терминале на другом рабочем столе. Но я не хочу, чтобы приложение всегда работало.
Конечно, просто открывайте его только с правильного рабочего стола. В Sierra у меня нет возможности выбрать рабочий стол для его назначения.
О, подождите, у меня есть возможность выбрать, какой рабочий стол назначить. Вы можете перейти к определенному рабочему столу, а затем использовать назначение на этот рабочий стол. Извини
да, но все же проблема возникает, если дважды щелкнуть значок приложения. На самом деле, я хочу открывать и закрывать приложение на другом рабочем столе... но это долгий путь, пока