# 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 as a method of ItermWindow. # # EXAMPLE - Open a new iTerm window, cd to a project and open it in TextMate # # 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 # end # # 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 # The ItermWindow class models an iTerm terminal window and allows for full control via Ruby commands.