Доступ к значку панели инструментов по щелчку правой кнопкой мыши с помощью AppleScript - PullRequest
7 голосов
/ 12 мая 2010

Есть ли способ получить AppleScript для доступа к пунктам меню, которые появляются при щелчке правой кнопкой мыши на значке дока?

В частности, вот что я хочу сделать:

Я использую Google Chrome в качестве веб-браузера на MacOS X Snow Leopard. Я наркоман по сочетанию клавиш, и я использую QuickSilver для создания сочетаний клавиш для всего, что я могу. Одна из самых распространенных вещей, которые я делаю, - это открыть новое окно веб-браузера. Но я часто использую пробелы для разделения своих задач, над которыми я сейчас работаю, и когда я открываю веб-браузер или веб-страницу с помощью триггера QuickSilver, пробелы переключаются на последний пробел, на котором я использовал Chrome, и открывают новую вкладку, которая часто отвлекает меня на несколько часов, потому что это приводит меня в другое пространство и, следовательно, к другой задаче. Я могу это исправить, щелкнув правой кнопкой мыши значок Google Chrome и выбрав «Новое окно», чтобы открыть новое окно в текущем пространстве. Но в AppleScript, чтобы сделать что-нибудь с Google Chrome, первое, что мне нужно сделать, это активировать его, что возвращает меня к исходной проблеме! Кто-нибудь может придумать решение этой проблемы, AppleScript или иным образом? Это стало серьезной проблемой. Назад, когда я использовал Firefox, я решил проблему, изменив элемент предпочтения, который говорит: «Всегда открывать всплывающие ссылки в новом окне» или что-то в этом роде, что было своего рода кувалдой, но это работало. Я всегда могу вернуться к Firefox, но я решил сначала задать свой вопрос здесь. У кого-нибудь есть идеи?

Ответы [ 4 ]

14 голосов
/ 26 января 2011

Не уверен, если вы все еще заинтересованы, но ...

 tell application "Dock"
    activate
end tell
tell application "System Events"
    tell process "Dock"
        set frontmost to true
        activate
        tell list 1
            perform action "AXShowMenu" of UI element "Google Chrome"
            delay 1
            repeat 4 times -- count number of items to the one you want
                key code 126 -- up arrow
                -- key code 125 -- down arrow
            end repeat
            delay 1
            repeat 2 times
                key code 36 -- return key
            end repeat
        end tell
    end tell
end tell
3 голосов
/ 27 августа 2010

Ночные сборки Chromium теперь содержат поддержку AppleScript, и это должно вскоре сделать это в Chrome. Это означает, что теперь вы можете сделать:

tell application "Chromium"
    make new window
    activate
end tell
3 голосов
/ 26 августа 2010

Для тех, кто заинтересован, я думаю, что у меня есть разумное рабочее решение этой проблемы, но оно не требует щелчка правой кнопкой мыши на значках док-станции.

Во-первых, вы должны снять флажок «При переключении на приложение переключиться на пространство с открытыми окнами для приложения» на панели настроек «Пробелы» в Системных настройках. Затем я написал следующий AppleScript:

tell application "Google Chrome" to activate

tell application "System Events"
    tell process "Google Chrome"
        try
            set var to get name of window 1
        on error
            set var to "no window exists!!!"
        end try
    end tell
end tell

if var is "no window exists!!!" then
    tell application "System Events"
        tell process "Google Chrome"
            click menu item "New Window" of menu "File" of menu bar 1
        end tell
    end tell
else
    tell application "System Events"
        tell process "Google Chrome"
            click menu item "New Tab" of menu "File" of menu bar 1
        end tell
    end tell
end if

Я запускаю этот AppleScript, используя Spark , что позволяет мне назначить ему комбинацию клавиш.

Это немного медленно, особенно когда система находится под нагрузкой, но обычно для ее запуска не требуется больше секунды. Это также позволяет избежать проблемы, с которой я столкнулся в Firefox, и в конце дня у меня бы открылись десятки окон.

0 голосов
/ 29 мая 2019

В качестве альтернативы вы также можете вызвать эту скрытую опцию:

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

Это также имеет, для меня, положительный эффект, что вы больше не выбрасываетесь на рабочие столы при переключении приложений. Просто сделайте Cmd + N с Chrome в качестве активного приложения.

Кстати, вы можете перейти к пробелам непосредственно с помощью Fn + 1, Fn + 2 и т. Д., Если вы установите их вместо ⌃1, ⌃2 и т. Д. Вы должны сделать пробелы, прежде чем сочетания клавиш можно будет установить в клавиатуре - > Настройки ярлыков.

...