Tag Archives: tmux

Tmux with teamocil

Several days ago I was suggested to check usage of Screen to not to switch between open tabs in Terminal.

Several words about Screen fo those who do not know what is it. There is an excerpt from Screen home page:

Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells. Each virtual terminal provides the functions of the DEC VT100 terminal and, in addition, several control functions from the ANSI X3.64 (ISO 6429) and ISO 2022 standards (e.g., insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows the user to move text regions between windows. When screen is called, it creates a single window with a shell in it (or the specified command) and then gets out of your way so that you can use the program as you normally would. Then, at any time, you can create new (full-screen) windows with other programs in them (including more shells), kill the current window, view a list of the active windows, turn output logging on and off, copy text between windows, view the scrollback history, switch between windows, etc. All windows run their programs completely independent of each other. Programs continue to run when their window is currently not visible and even when the whole screen session is detached from the users terminal.

But I have something more useful for me then Screen this is tmux. BTW I have a post regarding it “Tmux cheat sheet“. But here I’d like to describe what I’ve found more regarding tmux. There is a nice ruby gem teamocil for session/pane configuration with simple YAML file.

Now I have several configuration files to support my console activities on several projects at once without constant reconfiguring windows.

Here is a simple sample what can be done with teamocil.

windows:
  - name: "local"
    clear: true
    options:
      synchronize-panes: false
    root: "~/dev/projects/tasil"
    filters:
      before:
        - "source ~/.bash_profile"
    splits:
      - cmd: ["ssh tasil@vm.tasil"]
  - name: "remote"
    clear: true
    options:
      synchronize-panes: false
    root: "~/dev/projects/tasil"
    filters:
      before:
        - "source ~/.bash_profile"
    splits:
      - cmd: ["ssh tasil@some_remote_host"]

Configuration of my MacBook Pro was done using steps from this gist https://gist.github.com/4545794

 

Tmux cheat sheet

It’s just several lines of tmux commands to not to forget and start googling again;)

tmux is a terminal multiplexer: it enables a number of terminals (or windows), each running a separate program, to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached.

tmux attach || tmux new — attaches to existing server process or creates new if it does not exist.

When you are in tmux terminal window you can use next commands to manage your session:

Ctrl+b d — to exit.

Ctrl+b c — to create new window;

Ctrl+b 0…9 — to switch to window number;

Ctrl+b p — to switch to previous window;

Ctrl+b n — to switch to next window;

Ctrl+b l — to switch to previous active window (from which you switched to current);

Ctrl+b & — to close window (you can also type exit).

In one window you can have several panels:
Ctrl+b % — to split current window to 2 panels vertically;
Ctrl+b “ — to split current window to 2 panels horizontally;
Ctrl+b →←↑↓ — to switch between panels;
Ctrl+b x — to close panel (or you can do this by typing exit).

Hope this will help someone.