У меня в доке есть несколько приложений, которые могут открывать несколько экземпляров (например, Chrome, iTerm, Sublime и т. д.).
Когда я нажимаю на один из значков, я хочу, чтобы открылось новое окно (это происходит, если ни одно окно в данный момент не открыто). Однако, если экземпляр уже открыт, он просто перенаправляет меня к этому экземпляру.
Это становится особенно раздражающим, когда экземпляр находится на другом экземпляре рабочего стола и вызывает изменение моего рабочего стола.
Есть ли параметр, который вы можете установить, чтобы при нажатии на значок открывалось новое окно, а не перенаправляло вас в уже открытое окно?
Вы можете что-то запутать вместе с AppleScript и какой-нибудь умной вставкой изображения значка. Вот как вы это сделаете для iTerm/iTerm2.
Откройте редактор AppleScript и вставьте следующий AppleScript:
set myapp to "iTerm"
on appIsRunning(appName)
tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
# What you do here will depend on the program. This works for
# iTerm but you'll need to look up the actions for other programs
# since this bit is iTerm-specific.
tell application "iTerm"
set myterm to (make new terminal)
tell myterm
launch session "Default"
end tell
end tell
else
tell application myapp
activate
end tell
end if
Вы можете использовать кнопку «Выполнить» в редакторе, чтобы проверить, работает ли он. Если вы хотите открыть другой профиль, измените «По умолчанию» в строке 12 на имя профиля, который вы хотите открыть.
Теперь сохраните этот AppleScript. В диалоговом окне «Сохранить» в разделе «Формат файла» внизу выберите «Приложение» из списка.
Я сохранил свой как «Новый iTerm.app» на рабочем столе.
Теперь каждый раз, когда я нажимаю «Новый iTerm.app» на рабочем столе, я получаю новое окно iTerm. Я могу перетащить «New iTerm.app» в свой Dock, и это будет значок Dock, на который я могу щелкнуть в любое время, когда захочу открыть новое окно iTerm. Но значок является общим значком AppleScript.
Давайте изменим его на значок iTerm. Выберите «Новый iTerm.app» на рабочем столе и нажмите Cmd-I, чтобы открыть экран свойств приложения.
Теперь перейдите /Applications
в окно Finder, найдите iTerm в списке установленных приложений, выберите его и нажмите Cmd-I, чтобы открыть экран свойств приложения iTerm.
Щелкните значок в информационном окне iTerm, чтобы вокруг него появилась мягкая синяя тень. Нажмите Cmd-C, чтобы скопировать значок в буфер обмена.
Теперь щелкните значок в информационном окне «Новый iTerm.app» и нажмите Cmd-V, чтобы вставить значок iTerm в приложение «Новый iTerm.app».
Теперь у него должен быть значок iTerm.
Вы можете переместить «Новый iTerm.app» в свою /Applications
папку, если хотите. Перетащите его из папки, в которой вы решили сохранить его, обратно в док-станцию, и теперь вы можете щелкнуть его в док-станции, чтобы открывать новое окно iTerm при каждом щелчке.
Если вы хотите отличить его от запущенного значка iTerm.app Dock, вы можете вставить значок в редактор изображений, такой как Pixelmator, и добавить к нему большой красный цвет +
, чтобы он четко определялся как значок, который нужно нажать для нового iTerm. окно вместо значка, чтобы нажать, чтобы увидеть выход, открыть приложение iTerm.
Вот еще несколько скриптов для некоторых других приложений, которые помогут вам начать настройку:
set myapp to "Google Chrome"
on appIsRunning(appName)
tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
tell application "Google Chrome"
make new window
end tell
else
tell application myapp
activate
end tell
end if
set myapp to "Google Chrome"
on appIsRunning(appName)
tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
tell application "Google Chrome"
make new tab at end of tabs of window 1
end tell
else
tell application myapp
activate
end tell
end if
К сожалению, ST2, похоже, не имеет расширений, доступных для AppleScript. Вы всегда можете взглянуть на инструмент командной строки OS X, который поставляется вместе с ST2 . Вы можете вызвать это из простого скрипта в Dock, чтобы открыть новое окно в ST2. Так:
set myapp to "Sublime Text 2"
on appIsRunning(appName)
tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
# Assumes you've installed the subl command line tool for ST2
# in to /usr/local/bin. Adjust accordingly.
do shell script "/usr/local/bin/subl --new-window"
else
tell application myapp
activate
end tell
end if
Я хотел бы расширить комментарий от @CoffeeRain и сделать его более ясным в качестве правильного ответа. Вы можете добиться этого без приложения запуска с помощью Mission Control, настроенного на наличие более одного виртуального рабочего стола в Big Sur и более поздних версиях.
Чтобы открыть новое окно на текущем рабочем столе:
Ян С.
КофеДождь
Ян С.
КофеДождь