Як зробити натискання на піктограму в dock == відкрити новий екземпляр


16

У моєму доку кілька додатків, які можуть відкривати кілька примірників (наприклад, Chrome, iTerm, Sublime тощо)

Коли я натискаю на одну з піктограм, я хочу, щоб відкрилося нове вікно (це те, що відбувається, якщо зараз немає вікон). Однак, якщо екземпляр уже відкритий, він просто перенесе мене до цього примірника.

Це стає особливо прикро, коли екземпляр знаходиться на цілому іншому екземплярі робочого столу і викликає зміни мого робочого столу.

Чи є налаштування, яке ви можете встановити так, щоб при натисканні на іконку воно відкривало нове вікно, а не перенаправляло вас до вже відкритого вікна?


2
Я міг би показати вам, як це зробити за допомогою трохи AppleScript, який ви могли б зберегти в доці.
Ян C.

Або ви просто можете натиснути ctrl + n.
CoffeeRain

3
@CoffeeRain Ctrl-N? Що це? Не робить нічого в iTerm та Chrome. Я думаю, ви мали на увазі Cmd-N - але це працює лише в тому випадку, якщо додаток на першому плані.
Ян C.

@IanC. Вибачте, так, я мав на увазі Cmd-N.
CoffeeRain

Відповіді:


17

Ви можете зімкнути щось разом з деяким 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

Ви можете скористатися кнопкою Run у редакторі, щоб перевірити, чи працює вона. Якщо ви хочете, щоб інший профіль відкрився, змініть "За замовчуванням" у рядку 12 на ім'я профілю, який ви хочете відкрити.

Тепер збережіть цей AppleScript. У діалоговому вікні "Збереження" у розділі "Формат файлу" внизу виберіть зі списку "Застосування".

Я зберегла шахту як "Новий iTerm.app" на своєму робочому столі.

Тепер кожного разу, коли я натискаю "New iTerm.app" на своєму робочому столі, я отримую нове вікно iTerm. Я можу перетягнути "Новий iTerm.app" до своєї доки, і це буде значок 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 у New iTerm

Тепер він повинен мати значок iTerm.

/ApplicationsЯкщо ви хочете, ви можете перемістити "Новий iTerm.app" у свою папку. Перетягніть його з папки, яку ви вирішили зберегти, назад до док-станції, і тепер ви можете натиснути на неї в док-станції, щоб відкрити нове вікно iTerm з кожним клацанням.

Якщо ви хотіли б відрізнити його від запущеного значка док-станції iTerm.app, ви можете розглянути можливість вставити значок у редактор зображень, наприклад Pixelmator, і додати до нього великий червоний колір, +щоб він чітко був ідентифікований як значок, який потрібно натиснути для нового iTerm вікно замість піктограми, щоб натиснути, щоб побачити вихідний додаток iTerm.

Ось ще кілька сценаріїв для інших програм, щоб розпочати налаштування речей:

Google Chrome (нове вікно)

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

Google Chrome (нова вкладка)

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

Піднесений текст 2

На жаль, схоже, що у ST2 немає доступних розширень AppleScript. Ви завжди можете подивитися інструмент командного рядка OS X, з яким постачається ST2 . Ви можете зателефонувати з простого сценарію в док-станцію, щоб відкрити нове вікно в 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

2
Чудова відповідь з чіткими прикладами, що охоплюють різні випадки використання та деталі! Спасибі!
Адам Девіс

@AdamDavis Я тільки починаю з AppleScript, тому було приємною вправою перевірити те, що я навчився.
Ян C.

Чи можна це використовувати для отримання імені поточно запущеної програми?
Вільям

Чи є спосіб перевірити, чи працює програма, І НЕ на поточному робочому столі? Я люблю нове вікно, лише якщо існуюче вікно знаходиться на іншому робочому столі.
adamdport
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.