89 lines
2.8 KiB
Markdown
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
|
|
|