7

Каков наилучший способ настройки глобального сочетания клавиш для открытия вкладки в Chrome в Mac OS X?

Предостережения

  • Это должно быть как можно проще, поэтому я не хочу каждый раз <alt><tab> +<cmd><t> .
  • Это должно быть глобально, поэтому, если я нажму на свой ярлык (который, как оказалось, <cmd><return>), когда я нахожусь в Mail.app, он должен вывести Chrome на передний план и открыть новую вкладку
  • Нужно открыть страницу новой вкладки, т.е. chrome://newtab , а не такой сайт, как http://www.google.com
  • Наивысший приоритет в том, что он открывается быстро, быстро, следующий приоритет - простота настройки.

Текущее решение

Прямо сейчас у меня есть Quicksilver.app, настроенный на выполнение следующего AppleScript (или точнее, osascript ) при каждом нажатии <cmd><return>:

#!/usr/bin/osascript

tell application "Google Chrome Canary"
    activate
end tell

tell application "System Events"
    tell process "Google Chrome Canary"
        tell menu bar 1
            tell menu bar item "File"
                tell menu "File"
                    click menu item "New Tab"
                end tell
            end tell
        end tell
    end tell
end tell

Проблема в том, что это может занять до 5 секунд, если с момента моего последнего запуска прошло некоторое время. Я собрал это в * .app, но это было медленнее, чем сделать его исполняемым osascript . Я не боюсь попробовать скомпилированную версию вышеописанного скрипта, но я разработчик UNIX/web, а не OS X, и я не знаком с системой.

4 ответа4

6

Вы можете запустить следующую команду терминала (например, в скрипте bash):

open -a "Google Chrome" chrome://newtab

Это приведет к тому, что приложение Google Chrome откроет URL chrome://newtab, открыв тем самым новую вкладку.

К сожалению, Google Chrome не регистрирует тип URL chrome:// Launch Services, и он считает, что это путь к файлу.

Чтобы это исправить, щелкните правой кнопкой мыши пакет приложений Google Chrome, выберите « Показать содержимое пакета», откройте каталог « Содержание» и отредактируйте Info.plist в текстовом редакторе.

Поиск CFBundleURLTypes . Отредактируйте следующие несколько строк, чтобы добавить строки, обозначенные +:

<key>CFBundleURLTypes</key>
<array>
+   <dict>
+       <key>CFBundleURLName</key>
+       <string>Chrome Internal URLs</string>
+       <key>CFBundleURLSchemes</key>
+       <array>
+           <string>chrome</string>
+       </array>
+   </dict>
    <dict>
        <key>CFBundleURLName</key>
        <string>Web site URL</string>

Сохрани и закрой. Переместите пакет приложений Google Chrome в другой каталог и обратно, чтобы служба запуска запустила изменение (если оно не работает, выйдите из системы и снова войдите в систему).

Затем запустите open , как описано в начале.


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


Чтобы полуавтоматизировать редактирование файла Info.plist (вы должны повторить это для всех обновлений Chrome), вы можете использовать PlistBuddy в Terminal. Сначала создайте файл, например с именем chrome-url.plist со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
  <dict>
    <key>CFBundleURLName</key>
    <string>Chrome Internal URLs</string>
    <key>CFBundleURLSchemes</key>
    <array>
        <string>chrome</string>
    </array>
    </dict>
</array>
</plist>

Затем вы можете использовать следующее для исправления Info.plist Chrome:

/usr/libexec/PlistBuddy -c "Merge '/path/to/chrome-url.plist' :CFBundleURLTypes" /Applications/Google\ Chrome.app/Contents/Info.plist

5

В Chrome теперь встроена поддержка глобальных ярлыков, и я создал расширение для ярлыка Global New Tab, чтобы использовать его.

Установите его, назначьте ярлык и установите область действия Global, и вы получите сверхбыстрый доступ к OmniBar.

1

Вам не нужно будет продолжать изменять Chrome, если вы напрямую отправляете ему "get url" AppleEvent. Использовать этот:

tell application "Google Chrome"
    open location "chrome://newtab"
end tell
0

Один из способов сделать это через службу Automator:

  1. Создайте новый документ "Сервис" Automator.
  2. Измените тип ввода на "нет ввода". ("Сервис не получает вход")
  3. Перетащите действие "Запустить AppleScript" в скрипт Automator.
  4. Вставьте в скрипт ниже.
  5. Сохраните скрипт как, например, "Focus New Chrome Tab".
  6. Откройте панель "Клавиатура" в Системных настройках.
  7. Выберите вкладку "Ярлыки", а затем выберите "Услуги".
  8. В списке сервисов найдите "Focus New Chrome Tab".
  9. Включите его и добавьте привязку клавиш для "Focus New Chrome Tab".

Проверьте, переключившись, например, на iTunes, открыв меню «iTunes | Services». Должна появиться "Focus New Chrome Tab" вместе с выбранной вами комбинацией клавиш. Нажмите на связку клавиш, и вы должны получить новую вкладку Chrome.

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

Сценарий, который нужно добавить на шаге (4):

tell application "Google Chrome"
    open location "chrome://newtab"
    activate
end tell

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .