Andy Jessop
Andy Jessop

Reputation: 287

tmux can't find session: Editor

I'm trying to write a script that sets up a series of tmux panes within one window. Each pane wil have a separate program loaded into it, mimicking an IDE.

This is the script I'm running:

#!/bin/sh

tmux new-session -s Editor -n Desktop -d

# Set up main editor window
tmux select-window -t Editor:Desktop

tmux -u attach -t Editor

# Create splits
tmux send-keys -t Editor:Desktop 'C-b %' # 0

tmux send-keys -t Editor:Desktop 'C-b "' # 1
tmux send-keys -t Editor:Desktop 'C-b "' # 2
tmux send-keys -t Editor:Desktop 'C-b "' # 3

# Load programs into panes
tmux select-pane -t 0
tmux send-keys -t Editor:Desktop 'ccb' Enter
tmux send-keys -t Editor:Desktop 'vim' Enter

tmux select-pane -t 1
tmux send-keys -t Editor:Desktop 'ccb' Enter
tmux send-keys -t Editor:Desktop 'working_set --watch .' Enter

tmux select-pane -t 2
tmux send-keys -t Editor:Desktop 'ccb' Enter
tmux send-keys -t Editor:Desktop 'clear' Enter

tmux select-pane -t 3
tmux send-keys -t Editor:Desktop 'ccb' Enter
tmux send-keys -t Editor:Desktop 'npm start' Enter

This doesn't do as expected. Instead, it loads up a window without panes. When I exit, I see the errors:

can't find session: Editor
can't find session: Editor
can't find session: Editor
can't find session: Editor
can't find session: Editor
can't find session: Editor
can't find session: Editor
can't find session: Editor
can't find session: Editor
can't find session: Editor
can't find session: Editor
can't find pane: 3
can't find session: Editor
can't find session: Editor

Upvotes: 1

Views: 2519

Answers (1)

Simba
Simba

Reputation: 27568

You should use tmux split-window to achieve what you want. Keys sent by send-keys are interpreted as input in command line, not shortcut to operate tmux.

#!/bin/sh

# Note: the default window, pane index start from 0
# you may need to modify the following index if you changed it in .tmux.conf
# E.g.
# set -g base-index 1 # start window index at 1
# setw -g pane-base-index 1 # pane index starts at 1

tmux has-session -t development

if [ $? != 0  ]; then
  tmux new-session -s Editor -n Desktop -d

  # Set up main editor window
  tmux select-window -t Editor:Desktop


  # Create splits (must executed outside of the session)
  tmux split-window -h -t Editor
  tmux split-window -v -t Editor
  tmux split-window -v -t Editor
  tmux split-window -v -t Editor

  # Load programs into panes
  tmux select-pane -t 0
  tmux send-keys -t Editor:Desktop 'ccb' Enter
  tmux send-keys -t Editor:Desktop 'vim' Enter

  tmux select-pane -t 1
  tmux send-keys -t Editor:Desktop 'ccb' Enter
  tmux send-keys -t Editor:Desktop 'working_set --watch .' Enter

  tmux select-pane -t 2
  tmux send-keys -t Editor:Desktop 'ccb' Enter
  tmux send-keys -t Editor:Desktop 'clear' Enter

  tmux select-pane -t 3
  tmux send-keys -t Editor:Desktop 'ccb' Enter
  tmux send-keys -t Editor:Desktop 'npm start' Enter

fi 

tmux attach -t Editor

References

Upvotes: 1

Related Questions