Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Start up tmux with custom windows, panes and applications running
#!/bin/sh
#
# Setup a work space called `work` with two windows
# first window has 3 panes.
# The first pane set at 65%, split horizontally, set to api root and running vim
# pane 2 is split at 25% and running redis-server
# pane 3 is set to api root and bash prompt.
# note: `api` aliased to `cd ~/path/to/work`
#
session="work"
# set up tmux
tmux start-server
# create a new tmux session, starting vim from a saved session in the new window
tmux new-session -d -s $session -n vim #"vim -S ~/.vim/sessions/kittybusiness"
# Select pane 1, set dir to api, run vim
tmux selectp -t 1
tmux send-keys "api;vim" C-m
# Split pane 1 horizontal by 65%, start redis-server
tmux splitw -h -p 35
tmux send-keys "redis-server" C-m
# Select pane 2
tmux selectp -t 2
# Split pane 2 vertiacally by 25%
tmux splitw -v -p 75
# select pane 3, set to api root
tmux selectp -t 3
tmux send-keys "api" C-m
# Select pane 1
tmux selectp -t 1
# create a new window called scratch
tmux new-window -t $session:1 -n scratch
# return to main vim window
tmux select-window -t $session:0
# Finished setup, attach to the tmux session!
tmux attach-session -t $session
@Niouby

This comment has been minimized.

Copy link

commented Jul 29, 2016

I love you! You help me to automatize all my tmux lauch, I will save so much time each morning!

@joshbaptiste

This comment has been minimized.

Copy link

commented May 20, 2017

Great script, helped me figure out default startup parameters,, cheers

@azizLIGHT

This comment has been minimized.

Copy link

commented Mar 23, 2018

Found this on google. Great way to startup common tasks

@jpdippenaarS

This comment has been minimized.

Copy link

commented May 3, 2018

Rock star. Thanks!!

@iosifv

This comment has been minimized.

Copy link

commented Sep 16, 2018

Legend!

@AffanIndo

This comment has been minimized.

Copy link

commented Jan 14, 2019

Thank you for this! But there are several things that I don't understand.

  1. What is the function of whitespace after C-m on line 20 and 24? I remove the whitespace and it is still works.

  2. I try to use my script without tmux start-server, and it still work perfectly.

Once again, thank you! this gist is the best.

@zackyaple

This comment has been minimized.

Copy link

commented Jan 22, 2019

Great script!!

@kosivantsov

This comment has been minimized.

Copy link

commented Feb 18, 2019

Love it, thanks a ton for the script.

@develforever

This comment has been minimized.

Copy link

commented Mar 29, 2019

Carefuly read man page: http://man7.org/linux/man-pages/man1/tmux.1.html @AffanIndo

Thank you for this! But there are several things that I don't understand.

  1. What is the function of whitespace after C-m on line 20 and 24? I remove the whitespace and it is still works.
    m Mark the current pane (see select-pane -m).
  2. I try to use my script without tmux start-server, and it still work perfectly.

Once again, thank you! this gist is the best.

start-server
(alias: start)
Start the tmux server, if not already running, without creating
any sessions.

send-keys [-lMRX] [-N repeat-count] [-t target-pane] key ...
(alias: send)
Send a key or keys to a window. Each argument key is the name
of the key (such as ‘C-a’ or ‘NPage’) to send; if the string is
not recognised as a key, it is sent as a series of characters.
The -l flag disables key name lookup and sends the keys liter‐
ally. All arguments are sent sequentially from first to last.
The -R flag causes the terminal state to be reset.

         -M passes through a mouse event (only valid if bound to a mouse
         key binding, see MOUSE SUPPORT).

         -X is used to send a command into copy mode - see the WINDOWS
         AND PANES section.  -N specifies a repeat count.
@rcgoodfellow

This comment has been minimized.

Copy link

commented May 1, 2019

awesome, thanks!

@botenvouwer

This comment has been minimized.

Copy link

commented May 6, 2019

Very nice, much thanks, it makes my day easier.

@cmdcolin

This comment has been minimized.

Copy link

commented May 19, 2019

As long as we are here, you might consider getting on the tmux-resurrect train https://github.com/tmux-plugins/tmux-resurrect along with other plugins with tmux-plugin-manager. Pretty simple to save and restore apps that are running, but some are non-default and you can add them with

set -g @resurrect-processes '~cmus'
@mcai4gl2

This comment has been minimized.

Copy link

commented Aug 18, 2019

Brilliant!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.