正在构建一个通过终端窗口的处理程序,然后调用脚本的ID,我遇到了混合的结果,我很好奇是否有更清晰的方式获取 window 1
处理程序:
on termHandler()
set activeTerminal to ""
if application "Terminal" is running then
tell application "Terminal"
if not (exists window 1) and not busy of window 1 then
activate
tell application "Terminal" to do script "echo snow" in window 1
else
tell application "Terminal" to do script "date" in window 1
set activeTerminal to window 1
return activeTerminal
end if
do script "echo foo"
activate
set activeTerminal to window 1
return activeTerminal
end tell
else
tell application "Terminal"
activate
do script "echo bar" in window 1
set activeTerminal to window 1
return activeTerminal
end tell
end if
end termHandler
我读过和研究过的一切:
- Applescript在当前空间打开一个新的终端窗口
- 通过AppleScript打开终端
- Applescript打开特定的终端风格Windows
- 脚本打开两个终端窗口
- 使用Applescript将命令和字符串发送到Terminal.app
建议AppleScript和Terminal不相处。我当前的操作系统是Sierra,我正在写这个,但是其他的盒子我运行Yosemite,它会使用这个脚本。我的最终目标是在该特定空间中识别一个终端窗口并点燃一些,do script
但我似乎遇到了一个问题。是否有更简单的方法来识别终端是否正在运行,而不是创建一个新窗口,如果它正在运行,则返回window 1
作为变量,以便我可以通过它do script
?
你要么必须编程方式单击码头 停靠平铺在Dock中,或使用系统事件来⌘N或告诉终端要
—
3439894
reopen
到那么已经window 1
在这种情况下存在。只需要考虑一些要点。
为什么不把它作为答案呢?如果出现错误,我就是为了更好地实现最终目标。
—
ʀ2ᴅ2去年
我没有把它作为答案发布,因为它没有解决你在Spaces遇到的问题。
—
3439894
window
,那么if not (exists window 1) and not busy of window 1 then
将失败并且您没有为该场景编写错误处理程序。我看到的另一个问题是,如果终端是开放的而没有awindow
,则activate
会使终端前进,但不会创建新的window
。继续下一个评论...