在 Mac OS X 上的 Chrome 中打开标签的全局键盘快捷键

在 Mac OS X 上的 Chrome 中打开标签的全局键盘快捷键

在 Mac OS X 上的 Chrome 中配置全局键盘快捷键以打开选项卡的最佳方法是什么?

注意事项

  • 它应该尽可能简单,所以我不想每次都<alt><tab>+ 。<cmd><t>
  • 这必须是全球的,因此,如果我在 Mail.app 中按下快捷键(恰好是 <cmd><return>),它需要将 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,而且我不熟悉该系统。

答案1

您可以运行以下终端命令(例如在 bash 脚本中):

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

这将导致应用程序谷歌浏览器打开 URLchrome://newtab,从而打开一个新标签页。

不幸的是,Google Chrome 没有chrome://在启动服务中注册 URL 类型,它会认为这是一个文件路径。

要解决此问题,请右键单击 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命令的 shell 脚本,然后由启动器调用该脚本。由于我相信延迟是由osascript加载引起的,因此您在此处选择的任何解决方案都应该足够快。


要半自动化编辑文件Info.plist(您必须对所有 Chrome 更新重复此操作),您可以PlistBuddy在终端中使用。首先,创建一个名为的文件,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>

然后,你可以使用以下命令修补 Chrome Info.plist

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

答案2

Chrome 现在已内置支持全局快捷键,我创建了全局新标签快捷方式扩展来利用它。

安装它,分配一个快捷方式并将范围设置为全局,然后您就可以超快速访问 OmniBar。

答案3

如果您直接向 Chrome 发送“获取 URL”AppleEvent,则无需继续修改 Chrome。使用以下命令:

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

答案4

实现此目的的一种方法是通过 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 | 服务”菜单。应该会列出“聚焦新 Chrome 标签页”以及您选择的按键绑定。按下按键绑定,您就会看到一个新的 Chrome 标签页。

[请注意,在“全局”键绑定在给定应用程序中起作用之前,存在一个错误,您需要打开其“服务”菜单,这使得它在目前的使用中有些烦人。]

步骤(4)中添加的脚本:

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

相关内容