/tmuxinator

executing commands sequentially in different panes and windows

tmuxinator

###Executing commands sequentially in different panes and windows

Open terminal

$ sudo apt-get install tmux

$ sudo apt-get install ruby

$ sudo su

$ gem install tmuxinator

Exit from su

The directory .tmuxinator contains the config file.

$ export EDITOR='gedit'

$ echo $EDITOR

Ignore if already included in ~/.bashrc

###To start new session

$ tmux new-session

Result:A green strip must appear at bottom

###To create a new project session:

$ mux new project_name

Result:config file opens in default editor ###Writing the config file

A default config file will look like this:

# ~/.tmuxinator/sample.yml

name: sample
root: ~/

# Optional. tmux socket
# socket_name: foo

# Runs before everything. Use it to start daemons etc.
# pre: sudo /etc/rc.d/mysqld start

# Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions.
# pre_window: rbenv shell 2.0.0-p247

# Pass command line options to tmux. Useful for specifying a different tmux.conf.
# tmux_options: -f ~/.tmux.mac.conf

# Change the command to call tmux.  This can be used by derivatives/wrappers like byobu.
# tmux_command: byobu

# Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used.
# startup_window: logs

windows:
  - editor:
      layout: main-vertical
      panes:
        - vim
        - guard
  - server: bundle exec rails s
  - logs: tail -f log/development.log

Change this to :

# ~/.tmuxinator/project.yml

name: project
root: ~/

# Optional tmux socket
# socket_name: foo

# Runs before everything. Use it to start daemons etc.
# pre: sudo /etc/rc.d/mysqld start

# Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions.
# pre_window: rbenv shell 2.0.0-p247

# Pass command line options to tmux. Useful for specifying a different tmux.conf.
# tmux_options: -f ~/.tmux.mac.conf

# Change the command to call tmux.  This can be used by derivatives/wrappers like byobu.
# tmux_command: byobu

# Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used.
# startup_window: logs

# Controls whether the tmux session should be attached to automatically. Defaults to true.
# attach: false

# Runs after everything. Use it to attach to tmux with custom options etc.
# post: tmux -CC attach -t project

windows:
  - controls:
      layout: tiled
      panes:
        - sudo ./xboxdrv.sh
        - sleep 1;sudo ./launch.sh
        - sleep 5;cd arduino && sudo ./arduino
        - sleep 12;sudo ./robo_launch.sh
        - sleep 10;sudo ./encoder_pkg.sh
  - planner:
      layout: tiled
      panes:
        - #empty
        - #empty
        - #empty
        - #empty
  - sensors:
      layout: tiled
      panes:
        - #empty
        - #empty
        - #empty
        - #empty
# - server: bundle exec rails s
# - logs: tail -f log/development.log

Here,Controls,planner,sensors are the name of the windows under which sub-windows termed as panes open up.

Each window can be designated for carrying out a particular process and each pane to carry out a particular command.

Layout decides the splitting size and shape of the panes opening up.Generally,tiled will be preferd.

Below the text panes: ,you can add as many commands in format shown above.And each command will be executed in a new pane only

A #empty command specifies opening a new pane without any initial command executed.

Similiarly , a new window can also be contructed by editing the above config file in controls,planner,sensors format.

#####WARNING The config file is space sensitive.Use of TAB is not recommended. If any command is initilaized with sudo ,and proper changes haven't been made to sudoers file,then that particular command will not executed simultaneosly as others (It will prompt for password).

Its better to make the following changes to sudoers file so as to increase the time limit and password versatility in any other terminal.

To open sudoers file: Type $ visudo in a new terminal.

Defaults        env_reset,timestamp_timeout=120
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$
Defaults        !tty_tickets

Since,tmux executes all the commands in the panes simultaneosly,it can give errors for the processes that must be executed sequentially.Under such case, use of command sleep [time in seconds] will be preferable as shown in controls window of the above config file.

Moreover,a new session can also be executed separetely for planner and sensors modules of the above config file incase they have prerequsite commands like mentioned in controls module.

###For ease in navigation during the tmux session,

Open a new terminal

$ sublime .tmux.conf

Write the following lines in this empty conf file and save:

set-option -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on

Here,all the Configuration process ends.

###Execution commands in Tmux session

Open a new terminal.

$ tmux new-session

$ mux project_name Result:All windows with corresponding panes starts executing the commands.

To kill all execution at once,

type in any pane of the the session as:

$ killall tmux

To edit the config file of project_name: During the session,

$ tmux open project_name