我正在尝试制作键盘快捷键以在OS X Mountain Lion中启动终端。
经过一些研究后我发现我可以使用 Automator 来实现这一目标:
http://mac.tutsplus.com/tutorials/tips-shortcuts/how-to-launch-any-app-with-a-keyboard-shortcut/
它有效,但我注意到每当我使用此方法启动终端时,一个名为 WorkFlowServiceRunner 的进程启动,而永远不会终止。更糟糕的是,当我启动更多终端(或使用快捷方式再次通过Automator启动不同的应用程序)时,多个 WorkFlowServiceRunner进程启动并快速占用内存。
我也尝试过编写自己的应用程序,但问题并没有消失。这显然看起来像是内存泄漏。这是OS X Automator中的错误吗?有没有办法编写一个AppleScript,以便WorkFlowServiceRunner在完成工作后终止(例如启动终端)? Automator似乎是完成此操作的最“原生”方式,我不想使用任何第三方应用程序。
答案 0 :(得分:4)
我不时注意到这一点。
一种方法是使用Cocoa-AppleScript Applet制作自己的服务应用程序。
这不是很难。我会尽力引导你完成它。它应该只需要几分钟。
第1步。
打开您的Application Applescript Editor。然后转到"文件"菜单 - > "来自模板" - > Cocoa-AppleScript Applet.app
第2步,
将此代码粘贴到新文档中。
property NSWorkspace : class "NSWorkspace"
tell current application's NSApp to setServicesProvider_(me)
NSUpdateDynamicServices()
my runAService()
on runAService()
NSWorkspace's sharedWorkspace()'s launchAppWithBundleIdentifier_options_additionalEventParamDescriptor_launchIdentifier_("com.apple.Terminal", current application's NSWorkspaceLaunchDefault, missing value, missing value)
tell me to quit
end runAService
第3步,
<强>编译强>
(点击这个编译)
和保存应用。
*确保在保存对话框中取消选中 显示启动屏幕 。
为应用程序命名为 LaunchTerminal.app
第4步,
点击&#34;捆绑内容&#34;文档右上角的按钮。
这将打开应用程序内容视图。
单击“操作”按钮,然后单击“#34;在取景器中显示”#34;子菜单。
步骤 5,
在Finder中打开的内容文件夹中,您将看到一个文件名&#34; info.plist&#34;
打开Terminal.app并使用此文件的路径键入并运行此代码:
但请确保您不包含&#34; .plist&#34;在Terminal.app
中输入名称的一部分 /usr/bin/defaults write /Users/YourUserNameHere/myServiceApps/LaunchTerminal.app/Contents/Info NSServices -array-add '{NSMenuItem={default="Launch Terminal";}; NSMessage="runAService"; NSSendTypes=();}'
(您可以将文件拖放到终端以获取posix路径字符串) 路径部分如下所示: /Users/YourUserNameHere/myServiceApps/LaunchTerminal.app/Contents/Info
这段代码应该为plist文件添加一个数组,这是app广播它有服务的方式的一部分。
步骤 6,
再次编译并保存应用程序。
只是为了确保它获取更改。 (我发现我必须这样做,即使我不应该这样做)
步骤 7,
双击应用程序以便第一次运行它。
该应用程序将立即退出。但是第一次运行应该广播它有一个应该在系统中注册的服务
步骤 8,
打开系统偏好设置并转到服务 - &gt;一般(部分)
你会看到&#34;发射终端&#34;服务。
正常设置捷径。
希望这会有所帮助..
更新:
我注意到了应用程序&#34;终端&#34;激活。如果我关闭它们并且之前退出终端,则不会打开我的默认窗口组。如果我这样做的正常行为是我的默认窗口组打开。 (我在启动时打开了两个标签,每个CD都打开了不同的路径)。
所以我已经将打开的应用程序更改为可可方式。
打开/ application / path /的do shell脚本。也会工作。
答案 1 :(得分:0)