Tuesday, February 12, 2013

Terminator - Multiple Panes With No Pain

One of the habits I've adopted of the years is to keep multiple terminals open on my development desktop: one for compiling, one for running tests, one for listing and searching through code.

Similarly, for access email, I would do something similar to that, opening a separate terminal instance to run Mutt and one to run offlineimap.

When tabbed terminals started popping up, it made things easier to manage. I could have a single instance of a terminal for email, another for development, etc. This, however, had limits since I couldn't have everything easily visible at once.

Then, a while ago a friend at work turned me on to Terminator, a multi-paned terminal app. And I've easily incorporated that into my normal workflow.


The keys I commonly use for working with Terminator are ones to split the current pane vertically or horizontally, to maximize the current pane, and to switch back and forth between panes.

Splitting Panes

To split a pane vertically, creating two panes side by side, simply hit Shift+Ctrl+E. To split horizontally, creating two panes above and below, hit Shift+Ctrl+O. In both cases the newly created panes are equal in size.

Maximizing A Pane

To toggle maximizing the current pane, hit Shift+Ctrl+X. When a pane is maximized, you cannot move to a different pane, though this would be something I would add to the wish list.

Moving Between Panes

To move to the next pane, press Ctrl+Tab. To move to the previous tab, press Shift+Ctrl+Tab.

Note that the tabbing sequence appears to be defined by the creation order of the panes and not by their actual order in the window. So adding a new tab between panes 1 and 2 doesn't guarantee that this new tab will be the next tab after 1.

Programming Setup

My normal setup for programming is to open an instance of Terminator, then split it vertically once and then split the right pane horizontally once. This gives me the following layout:
Additionally, for development I use emacs as my primary editor.

When I'm writing code I hit Meta+CursorRight to move it to the right half of my display. This covers the compiling and miscellaneous panes, leaving the coding pane visible underneath. This allows me to look at other pieces of code in other source modules without leaving my editor.

When I'm fixing a compiler error, I can hit Meta+CursorLeft to move emacs to the other side of the desktop. Then I can see the compiler error as I'm fixing the code or build environment.

Also, on the fly, I can easily create temporary panes by hitting one of the split keys and then immediately maximizing that new pane. I use such panes to ssh into a build machine, to one of my other work boxes to, for example, test a new change on a different platform (such as my new Chromebook for ARM development). Then, when I'm done, simply exiting the pane restores my normal Terminator layout.


All in all, a highly useful terminal application. It provides me with the ability to have more than one piece of information on the screen at once. It works well with other tools that I use to produce code, which makes Terminator indispensable.