DEV Community

Yutaka HARA
Yutaka HARA

Posted on • Edited on

2

Automatically prepare windows at tmux startup

Do you have a rule for tmux windows? For example, on which window do you start your editor? Here is my rule.

  • Window 0: reposh
  • Window 1: vim
  • Window 2: zsh
  • Window 3: Server process (i.e. rails server)

It means that everytime I start tmux, I open 4 windows and run these. Today I learned to do it automatically.

Command file

The first step is to write a tmux command file. This is a list of tmux commands that I want to run:

$ cat ~/proj/dotfiles/tools/tmux_multi
new-window
new-window
new-window
select-window -t 0
send-keys 'reposh' Enter
select-window -t 1
send-keys 'vim' Enter

Then you can load this file at tmux startup by:

$ tmux new-session ";" source-file ~/proj/dotfiles/tools/tmux_multi

Alias

Of course this is too long to remember. So I added an alias to my .zshrc:

alias tmux!='tmux new-session ";" source-file ~/proj/dotfiles/tools/tmux_multi'

Now my tmux sets up the 4 windows by tmux!.

Tips: setting iTerm2 tab title

If you are using iTerm2 on Mac, it is useful to set the tab title before starting tmux.

alias tmux!='TAB_NAME=`ruby -e "print Dir.pwd.split(\"/\").last"`; echo -ne "\e]1;$TAB_NAME\a"; tmux new-session ";" source-file ~/proj/dotfiles/tools/tmux_multi'

Top comments (1)

Collapse
 
micahriggan profile image
Micah Riggan

Never knew how to do this! I often have different tmux configurations for different projects, I eventually found github.com/tmux-python/tmuxp which uses a yaml file to describe the windows, but it's cool to know how to do this without using another tool.

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay