iterm_window/README.md

89 lines
2.8 KiB
Markdown

# iTermWindow
*Make iTerm obey your command! Start up your complex development environment quickly and easily.*
The typical Rails project requires three or tour terminal windows/tabs open at once:
* The Rails app itself running using `rails s`
* Two continuous testing environments, powered by Guard or Autotest, running on your Ruby and JavaScript code
* A console ready for committing code or other maintenance tasks
* A log file or two
Opening all the necessary terminals, starting the right processes in each, and making them easily identifiable
is a long, slow process when done by hand. But guess what -- computers can be used to automate processes that
otherwise would be laborious when done manually!
Enter *iTermWindow*, a terminal window/tab multiplexer and command runner for Mac OS X and [iTerm](http://www.iterm2.com/), the really
awesome Terminal.app replacement. iTerm's scriptability and customization allows one to create complex
project configurations for one's terminal setups.
## Installation
`gem install itermwindow` or add it to your Gemfile.
## Usage
The `iterm-window` executable will open and run an `iTermfile` file in the current directory.
An `iTermfile` file looks like this:
``` ruby
open :dir => Dir.pwd do
default_tab :console
open_tab :rails, :color => :rails do
rails "s"
end
open_tab :rspec, :color => :rspec do
guard "-g rspec"
end
open_tab :log, :color => "DDB" do
tail "+F -fr log/sphinx.log"
end
end
```
In a nutshell:
* `open` blocks open new iTerm windows.
* `current` blocks use the cirrent iTerm window.
* Inside `open` or `current` blocks you can open a new tab with `open_tab`.
* Specify a tab to be the selected tab with `default_tab`.
* Inside of a tab, you can write text into the terminal with `write_text`.
* Set the title of the tab with `set_title`.
* Or run a command magically (using `method_missing`).
`open_tab` and `default_tab` can take an options hash:
* `:dir` changes to the given directory before executing commands.
* `:color` changes the window chrome and tab color to the given hex code (3 or 6 hex digits) or built-in color. See ItermWindow.colors for the list of available colors.
`open` can also take an options hash:
* `:dir` changes all tabs to the given directory before executing commands.
### Adding commands that tabs can execute
You can define your own tab commands with `ItermWindow.add_command`:
``` ruby
ItermWindow.add_command :guard do |group = nil|
command = "bundle exec guard"
command << " -g #{group}" if group
write_text command
end
open do
default_tab do
guard :rails
end
end
```
More docs coming soon! Also, look at `lib/iterm_window.rb` for more usage examples.
* Developed March 17, 2008 by Chris Powers
* Extended June 2011 and beyond by John Bintz and (hopefully) many others