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.
HotkeysThe 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 PanesTo 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 PaneTo 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 PanesTo 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 SetupMy 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:
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.