Termup
Automate opening up terminal tabs (or split panes) with a set of routine commands.
It's the easiest way to get started for your projects every day.
Compatible with Terminal.app and iTerm2 v3 on OSX Yosemite or later.
- For iTerm2 v2 or earlier: Termup 3.0 and up is not compatible with iTerm2 v2. Install Termup 2 by
gem install termup -v=2.0.3
- For iTerm 1: Termup 2.0 and up is not compatible with iTerm 1. Install 1.3.1 by
gem install termup -v=1.3.1
Installation
$ gem install termup
Note that you need to prepend sudo
if you're using the OSX pre-installed Ruby.
Changelog
Termup v3.0 is a complete rewrite using the new JavaScript for Automation which was introduced with OSX Yosemite.
Usage
Getting Started
Call the following command:
$ termup create myproject
This will create a new project at ~/.config/termup/myproject.yml
. Edit the file:
$ termup edit myproject
And now you're good to go:
$ termup start myproject
YAML Syntax
# ~/.config/termup/myproject.yml
---
tabs:
tab1:
- cd ~/projects/foo
- git status
- subl .
tab2:
- mysql -u root
- show databases;
tab3:
- cd ~/projects/foo
- tail -f log/development.log
tab4:
- cd ~/projects/foo
- autotest
options:
iterm:
width: 2
height: 2
Tabs can contain a single command, or YAML arrays to execute multiple commands.
Shortcut
Commands have a shortcut for even fewer keystrokes.
$ termup s myproject
That's equivalent to termup start myproject
.
iTerm 2 Split Pane Support
There are two options to deal with split panes on iTerm 2: --iterm_basic
and --iterm_advanced
--iterm_basic
termup create myproject --iterm_basic
This will generate additional options in the config file:
options:
iterm:
width: 2
height: 2
The setting above will generate four panes in the following layout.
#################
# # #
# 1 # 3 #
# # #
#################
# # #
# 2 # 4 #
# # #
#################
--iterm_advanced
termup create myproject --iterm_advanced
This will generate a config file in an advanced format:
# COMMENT OF SCRIPT HERE
---
tabs:
pane1:
commands:
- echo pane1
layout:
- split_vertically
pane2:
commands:
- echo pane2
layout:
- split_horizontally
pane3:
commands:
- echo pane3
layout:
- split_horizontally
pane4:
commands:
- echo pane4
The setting above will generate four panes in the following layout.
#################
# # #
# # 2 #
# # #
# #########
# # #
# 1 # 3 #
# # #
# #########
# # #
# # 4 #
# # #
#################
Available layout commands:
new_tab
close_tab
goto_previous_tab
goto_next_tab
goto_previous_pane
goto_next_pane
split_vertically
split_horizontally
go_left
go_right
go_down
go_up