在 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 服务:
- 创建一个新的“服务”Automator 文档。
- 将输入类型更改为“无输入”。(“服务未接收输入”)
- 将“运行 AppleScript”操作拖到 Automator 脚本中。
- 粘贴下面的脚本。
- 将脚本保存为例如“Focus New Chrome Tab”。
- 在系统偏好设置中打开“键盘”窗格。
- 选择“快捷方式”选项卡,然后选择“服务”。
- 在服务列表中,找到“Focus New Chrome Tab”。
- 启用它,并为“Focus New Chrome Tab”添加键绑定。
测试方法是切换到 iTunes,打开“iTunes | 服务”菜单。应该会列出“聚焦新 Chrome 标签页”以及您选择的按键绑定。按下按键绑定,您就会看到一个新的 Chrome 标签页。
[请注意,在“全局”键绑定在给定应用程序中起作用之前,存在一个错误,您需要打开其“服务”菜单,这使得它在目前的使用中有些烦人。]
步骤(4)中添加的脚本:
tell application "Google Chrome"
open location "chrome://newtab"
activate
end tell