Question

I'm trying to write a quick script that will close all but the current window for the terminal application. This script uses MacRuby and the Scripting Bridge. Heres' what I have so far:

#!/usr/local/bin/macruby

framework "Foundation"
framework "ScriptingBridge"

terminal = SBApplication.applicationWithBundleIdentifier("com.apple.Terminal")
terminal.windows[2].close while terminal.windows.count > 1

When I try to run this, I get the following error:

undefined method `close' for #<TerminalWindow:0x40033b0e0> (NoMethodError)

This approach seems to work fine with AppleScript. Does anybody know why it's failing here?

Was it helpful?

Solution

I found a copy of the TerminalWindow API here. Using that, all I needed to do was:

TerminalSaveOptionsNo = 'no  '.unpack('N').first
terminal.windows[1].closeSaving(TerminalSaveOptionsNo, savingIn: nil)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top