Я пытаюсь открыть приложение на другом рабочем столе на моем MacBook (macOS Sierra версии 10.12.5).
На скриншоте я назначил Chrome другому пространству (Рабочий стол 1). Я перехожу на рабочий стол 2, и когда я нажимаю значок Chrome, я автоматически переключаюсь на рабочий стол 1. Как я могу оставаться на рабочем столе 2?
РЕДАКТИРОВАТЬ
Может логи помогут. Какой процесс запускает переключение рабочего стола?
Из комментариев - похоже, что это работает для ОП, хотя я не смог заставить его работать сам на Эль-Капитане.
Из «Защитить приложения от кражи фокуса при открытии в OS X» — автор Тофер Кесслер [так что хотя бы у него хорошая родословная, но он с 2011 года]
Чтобы программа всегда открывалась в фоновом режиме, вам нужно будет отредактировать список свойств в пакете программы и добавить пару строк в файл. Для этого следуйте этим инструкциям:
Найдите файл пакета приложения для рассматриваемой программы.
Щелкните правой кнопкой мыши и выберите «Показать содержимое пакета».
Перейдите в каталог «Содержание» в приложении и откройте файл «Info.plist» в текстовом редакторе.
Добавьте в файл следующие строки (проще всего разместить их сразу после тега
<dict>
, перед первым<key>
тегом в верхней части документа):<key>LSBackgroundOnly</key> <string>True</string>
Сохраните и закройте файл, а также закройте окна пакета приложений.
После этого программа теперь должна всегда запускаться позади других, а затем выводиться на передний план только в том случае, если вы щелкнете окно для программы. Предупреждаю: редактирование содержимого приложений нарушит подпись их кода, которая необходима некоторым приложениям для автоматической работы с системными службами, такими как брандмауэр приложений. Без неповрежденной подписи кода система всегда может попросить вас разрешить приложениям проходить через брандмауэр при их запуске, что может доставлять некоторые неудобства. Кроме того, это может работать не для всех приложений, но тогда вы не сможете легко удалить добавленные строки, чтобы восстановить полную функциональность программы.
Второй вариант воздействия на запускаемую программу — разработать скрипт, который будет запускать ее в фоновом режиме. В основе этого скрипта лежит использование команды терминала «открыть» с флагом «-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
Я получаю желаемую производительность, используя опцию «нет» при назначении приложения на рабочий стол. Но если приложение открыто на другом рабочем столе, вы попадете на этот рабочий стол, если попытаетесь открыть другой экземпляр приложения. Я не знаю обходного пути для этого. Просто не открывайте приложение на рабочем столе, отличном от того, которое вы хотите. Если для этого есть обходной путь, возможно, другой ответчик узнает.
open -nF /Applications/Google\ Chrome.app/
терминале на другом рабочем столе. Но я не хочу, чтобы приложение всегда работало.
фсб
Энди
фсб
Энди
фсб
ааплматематик
Энди
Тецуджин
Энди