iTermWindow

Developed March 17, 2008 by Chris Powers

The ItermWindow class models an iTerm terminal window and allows for full control via Ruby commands. Under the hood, this class is a wrapper of iTerm’s Applescript scripting API. Methods are used to generate Applescript code which is run as an osascript command when the ItermWindow initialization block is closed.

ItermWindow::Tab models a tab (session) in an iTerm terminal window and allows for it to be controlled by Ruby. These tabs can be created with either the ItermWindow#open_bookmark method or the ItermWindow#open_tab method. Each tab is given a name (symbol) by which it can be accessed later in the code using the tab name as an ItermWindow method.

EXAMPLE - Open a new iTerm window, cd to a project and open it in TextMate

require 'rubygems'
require 'iterm_window'

ItermWindow.open do
  open_tab :my_tab do
    write "cd ~/projects/my_project/trunk"
    write "mate ./"
  end
end

EXAMPLE - Use the current iTerm window, cd to a project and open in TextMate, launch the server and the console and title them

ItermWindow.current do
  open_tab :project_dir do
    write "cd ~/projects/my_project/trunk"
    write "mate ./"
    set_title "MyProject Dir"
  end
  open_tab :server do
    write "cd ~/projects/my_project/trunk"
    write "script/server -p 3005"
    set_title "MyProject Server"
  end
  open_tab :console do
    write "cd ~/projects/my_project/trunk"
    write "script/console"
    set_title "MyProject Console"
  end
end

EXAMPLE - Same thing, but use bookmarks that were made for the server and console. Also, switch focus back to project dir.

ItermWindow.current do
  open_tab :project_dir do
    write "cd ~/projects/my_project/trunk"
    write "mate ./"
  end
  open_bookmark :server, 'MyProject Server'
  open_bookmark :console, 'MyProject Console'
  project_dir.select

EXAMPLE - Arbitrarily open two tabs, switch between them and run methods/blocks with Tab#select method and Tab#write directly

ItermWindow.open do
  open_tab :first_tab
  open_tab :second_tab
  first_tab.select do
    write 'cd ~/projects'
    write 'ls'
  end
  second_tab.write "echo 'hello there!'"
  first_tab.select # brings first tab back to focus
end