我的扩展坞中有几个可以打开多个实例的应用程序(例如Chrome,iTerm,Sublime等)
当我单击其中一个图标时,我想打开一个新窗口(如果当前未打开任何窗口,则会发生这种情况)。但是,如果一个实例已经打开,它将带我进入该实例。
当该实例位于整个其他桌面实例上并导致我的桌面发生更改时,这尤其烦人。
是否可以进行设置,以便在单击图标时打开一个新窗口,而不是将您重定向到一个已打开的窗口?
我的扩展坞中有几个可以打开多个实例的应用程序(例如Chrome,iTerm,Sublime等)
当我单击其中一个图标时,我想打开一个新窗口(如果当前未打开任何窗口,则会发生这种情况)。但是,如果一个实例已经打开,它将带我进入该实例。
当该实例位于整个其他桌面实例上并导致我的桌面发生更改时,这尤其烦人。
是否可以进行设置,以便在单击图标时打开一个新窗口,而不是将您重定向到一个已打开的窗口?
Answers:
您可以将某些内容与一些AppleScript和一些聪明的图标图像粘贴一起存储。这是iTerm / iTerm2的处理方法。
打开AppleScript编辑器,然后粘贴以下AppleScript:
set myapp to "iTerm"
on appIsRunning(appName)
tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
# What you do here will depend on the program. This works for
# iTerm but you'll need to look up the actions for other programs
# since this bit is iTerm-specific.
tell application "iTerm"
set myterm to (make new terminal)
tell myterm
launch session "Default"
end tell
end tell
else
tell application myapp
activate
end tell
end if
您可以使用编辑器中的“运行”按钮来测试其是否正常工作。如果要打开其他配置文件,请在第12行将“默认”更改为要打开的配置文件的名称。
现在保存此AppleScript。在底部“文件格式”下的“保存”对话框中,从列表中选择“应用程序”。
我将“我的iTerm.app”保存为我的桌面。
现在,每次我在桌面上单击“ New iTerm.app”时,都会得到一个新的iTerm窗口。我可以将“ New iTerm.app”拖到我的Dock中,这将是一个Dock图标,我可以随时单击以打开新的iTerm窗口。但是该图标是通用的AppleScript图标。
让我们将其更改为iTerm图标。在桌面上选择“ New iTerm.app”,然后单击Cmd-I来显示该应用程序的属性屏幕。
现在,/Applications
在Finder窗口中导航到,在已安装的应用程序列表中找到iTerm,将其选中,然后单击Cmd-I打开iTerm应用程序的属性屏幕。
单击iTerm信息窗口中的图标,以使其周围带有柔和的蓝色阴影。按Cmd-C将图标复制到剪贴板。
现在,单击“ New iTerm.app”信息窗口中的图标,然后按Cmd-V将iTerm图标粘贴到“ New iTerm.app”应用程序上。
现在,它应该具有一个iTerm图标。
/Applications
如果愿意,可以将“ New iTerm.app”移动到您的文件夹中。将其从您决定保留的文件夹中拖回并停靠,现在您可以在Dock中单击它,每次单击都会打开一个新的iTerm窗口。
如果您希望将其与正在运行的iTerm.app Dock图标区分开来,则可以考虑将其粘贴到Pixelmator之类的图像编辑器中并为其添加大红色+
,以便将其明确标识为要按下新iTerm的图标窗口,而不是要按下以查看退出的iTerm应用程序的图标。
以下是一些其他应用程序的脚本,可帮助您开始自定义内容:
set myapp to "Google Chrome"
on appIsRunning(appName)
tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
tell application "Google Chrome"
make new window
end tell
else
tell application myapp
activate
end tell
end if
set myapp to "Google Chrome"
on appIsRunning(appName)
tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
tell application "Google Chrome"
make new tab at end of tabs of window 1
end tell
else
tell application myapp
activate
end tell
end if
不幸的是,ST2似乎没有AppleScript可访问的扩展。您可以随时查看ST2附带的OS X命令行工具。您可以从Dock中的简单脚本中调用它,以在ST2中打开一个新窗口。所以:
set myapp to "Sublime Text 2"
on appIsRunning(appName)
tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
# Assumes you've installed the subl command line tool for ST2
# in to /usr/local/bin. Adjust accordingly.
do shell script "/usr/local/bin/subl --new-window"
else
tell application myapp
activate
end tell
end if