Control your terminal windows in iTerm with Ruby -- great for automation scripting!
Go to file
Chris Powers 3e08b98844 Added new specs, swapped out method_missing for dynamic method definition 2010-09-11 20:09:14 -05:00
lib Added new specs, swapped out method_missing for dynamic method definition 2010-09-11 20:09:14 -05:00
spec Added new specs, swapped out method_missing for dynamic method definition 2010-09-11 20:09:14 -05:00
.gitignore Added new specs, swapped out method_missing for dynamic method definition 2010-09-11 20:09:14 -05:00
LICENSE Removed references to previous employer 2010-03-27 10:29:57 -05:00
README.rdoc Removed references to previous employer 2010-03-27 10:29:57 -05:00
iterm_window.gemspec Removed references to previous employer 2010-03-27 10:29:57 -05:00

README.rdoc

= iTermWindow

<em>Developed March 17, 2008 by Chris Powers</em>

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 <tt>osascript</tt> 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 'chrisjpowers-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