aschnei
aschnei

Reputation: 54

Tmux loading multiple enviroments from different files

Hello I would like to load multiple environments from different files. For example:

First File builds a session with 1 window and 3 panes. Second File builds a session with 2 windows first window with 2 panes and second window with one pane.

Like:

tmux -f /path/to/file/basic.conf a

and then after detaching from the first session, i would like to load the same way the other enviroment.

tmux -f /path/to/file/scripting.conf a

but when i fire the second command i will attach to the first session (basic.conf). But i would expect that when I fire the second script I would attach to the second session.

And tmux ls list only one session.

(The conf files by itself are running with no problem)

How is it possible to have multiple session build trough differnt conf files with tmux, and only with tmux no tmuxinator no tmuxp or anything else?

Or should i have one big conf file which builds everything that now is in muliply conf files?

basic.conf

SESSION_NAME="basic"
FIRST_WINDOW="shells"
SECOND_WINDOW="console"

source ~/.tmux.conf

new-session -s $SESSION_NAME -n $FIRST_WINDOW -d

split-window -h -t $SESSION_NAME
split-window -v -t $SESSION_NAME

new-window -n $SECOND_WINDOW -t $SESSION_NAME

select-window -t $SESSION_NAME:0.0

scripting.conf

SESSION_NAME="script"
FIRST_WINDOW="editor"
SECOND_WINDOW="console"

source ~/.tmux.conf

new-session -s $SESSION_NAME -n $FIRST_WINDOW -d

split-window -v -p 5 -t $SESSION_NAME

send-keys -t $SESSION_NAME:0.0 'cd ~/Code' C-m
send-keys -t $SESSION_NAME:0.0 'vim' C-m
send-keys -t $SESSION_NAME:0.1 'cd ~/Code' C-m
send-keys -t $SESSION_NAME:0.1 C-l C-m

new-window -n $SECOND_WINDOW -t $SESSION_NAME
send-keys -t $SESSION_NAME:1 'cd ~/Code' C-m

select-window -t $SESSION_NAME:0

Upvotes: 2

Views: 845

Answers (1)

aschnei
aschnei

Reputation: 54

I think I found a solution by myself.

The command:

tmux -f /path/to/file.conf a 

should only be used when you would like to load another tmux config file instead of the default one.

If you like to start multiple sessions , which are preconfigured in files, then you have to do something like this:

tmux source-file -q .dotfiles/tmux/enviroments/basic.conf && tmux attach -t basic

Perhaps there is a better solution, but for now this solves my problem.

P.S. i made a little function to load the files less complicated.

function muxload(){

    if [ -f ~/.dotfiles/tmux/enviroments/$1 ]; then
        tmux source-file -q ~/.dotfiles/tmux/enviroments/$1 && tmux attach -t $1
    fi

    if [ -f ~/.dotfiles/tmux/enviroments/$1.conf ]; then
        tmux source-file -q ~/.dotfiles/tmux/enviroments/$1.conf && tmux attach -t $1
    fi

}

run it like this:

muxload {name_of_conf_file}

Upvotes: 2

Related Questions