69 lines
2.3 KiB
Plaintext
69 lines
2.3 KiB
Plaintext
= iTermWindow
|
|
|
|
<em>Developed March 17, 2008 by Chris Powers, Killswitch Collective http://killswitchcollective.com</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 |