iterm_window
iterm_window copied to clipboard
Control your terminal windows in iTerm with Ruby -- great for automation scripting!
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
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