从bash脚本控制嵌套的tmux会话

时间:2017-11-06 22:37:28

标签: bash tmux

我正在尝试编写一个bash脚本来设置一个包含2个嵌套会话的tmux会话会话,如下图所示。

x:外部会话的名称

x-left:左侧嵌套会话的名称

x-right:右侧嵌套会话的名称

------------------------------
|   -----------  ----------   |
|  |          | |          |  |
|  |  x-left  | |  x-right |  |
|  |  pane 1  | |  pane 1  |  |
|   ----------| |----------   |
|  |          | |          |  |
|  | x-left   | |  x-right |  |
|  | pane 2   | |  pane 2  |  |
|   ----------   ----------   |
--------session name: x--------

我到目前为止的脚本如下:

SESSIONNAME=$1

tmux new-session -s $SESSIONNAME \; \
   split-window -h \; \
   setw synchronize-panes \; \
   send-keys 'unset TMUX' C-m \; \
   setw synchronize-panes off \; \
   send-keys 'tmux new-session -s ' $SESSIONNAME-right C-m \; \
   select-pane -t 1 \; \
   send-keys 'tmux new-session -s ' $SESSIONNAME-left C-m \; \
   split-window -v \;

直到脚本中的最后一行" split-window -v \;"适用于外部会话。如何在此脚本中控制嵌套会话?

1 个答案:

答案 0 :(得分:0)

我没有找到我正在寻找的确切答案,但是对我有用的解决办法是首先设置我计划用作嵌套会话的tmux会话,然后最后设置外部主机会话并附加从那里到嵌套会话。以下是我在原始帖子中描述的用于生成环境的脚本:

SESSIONNAME=$1

# set up right hand side nested session, dont attach to it yet
tmux new-session -d -s $SESSIONNAME-right \; \
   rename-window remote-work \; \
   split-window -v -p 50 \; \
   setw synchronize-panes \; \
   send-keys 'clear' C-m \; \
   setw synchronize-panes off \;

# set up left hand side nested session, dont attach to it yet
tmux new-session -d -s $SESSIONNAME-left \; \
   rename-window local-work \; \
   split-window -v -p 50 \; \
   setw synchronize-panes \; \
   send-keys 'clear' C-m \; \
   setw synchronize-panes off \;

# attach and set up host session, and from there attach to nested sessions
tmux new-session -s $SESSIONNAME \; \
   set status off \; \
   split-window -h -p 50 \; \
   setw synchronize-panes \; \
   send-keys 'unset TMUX' C-m \; \
   setw synchronize-panes off \; \
   select-pane -t 0 \; \
   send-keys 'tmux attach -t ' $SESSIONNAME-left C-m \; \
   select-pane -t 1 \; \
   send-keys 'tmux attach -t ' $SESSIONNAME-right C-m \;