如何使用AppleScript控制当前空间中的终端?


1

正在构建一个通过终端窗口的处理程序,然后调用脚本的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和Terminal不相处。我当前的操作系统是Sierra,我正在写这个,但是其他的盒子我运行Yosemite,它会使用这个脚本。我的最终目标是在该特定空间中识别一个终端窗口并点燃一些,do script但我似乎遇到了一个问题。是否有更简单的方法来识别终端是否正在运行,而不是创建一个新窗口,如果它正在运行,则返回window 1作为变量,以便我可以通过它do script


这个评论没有解决Spaces的任何问题,但是,这是我看到的一个问题。如果终端打开的而没有a window,那么if not (exists window 1) and not busy of window 1 then将失败并且您没有为该场景编写错误处理程序。我看到的另一个问题是,如果终端开放的而没有a window,则activate会使终端前进,但不会创建新的window。继续下一个评论...
3439894年

你要么必须编程方式单击码头 停靠平铺Dock中,或使用系统事件⌘N或告诉终端reopen到那么已经window 1在这种情况下存在。只需要考虑一些要点。
3439894

为什么不把它作为答案呢?如果出现错误,我就是为了更好地实现最终目标。
ʀ2ᴅ2去年

我没有把它作为答案发布,因为它没有解决你在Spaces遇到的问题。
3439894

Answers:


-1

你是否需要将它输入到终端窗口中,或者只是你发现它的工作方式?我不确定您是否知道这一点,但您可以使用此“do shell script”命令直接从AppleScript运行shell脚本。举个例子:

do shell script "echo snow"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.