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.

Split Panes

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