如果 shell 命令中的 运行 tmux resizep 无法按预期工作
tmux resizep not working as expected if run in shell command
我正在尝试从 bash 脚本设置一个 tmux 会话,而不使用像 tmuxinator/tmuxp/...
这样的任何会话管理器
如果我运行这个代码
#!/bin/sh
tmux \
new '/path/to/a/script.sh' \; \
splitw -v '/path/to/another/program' \; \
selectp -U \; \
resizep -y 4 \;
它可以工作,除了一件事:根据 man tmux
,我希望它将顶部窗格的大小调整为 4 行,但它会将其调整为可变的行数,具体取决于终端的大小 window(不一定是4行,也不是window高度的4%)。
如果我删除 resizep 行
#!/bin/sh
tmux \
new '/path/to/a/script.sh' \; \
splitw -v '/path/to/another/program' \; \
selectp -U \;
然后我从会话内部手动 运行 :resizep -y 4
tmux 命令,然后它有效地将其大小调整为 4 行。
有人知道为什么会这样吗?我该怎么做才能解决?
根据man tmux
规格
OS: 拱门 Linux
WM: dwm (suckless)
终端:ts(suckless)
Shell: bash
编辑:我在 ts/bash shell 中执行这个 bash 脚本,所以在我执行它的那一刻, shell window 已经存在及其宽度和高度。
好的!
最后我解决了它(差不多一年后),它是如此简单......
我刚刚为会话添加了一个名称,并在 resizep 命令中指定了会话名称和 window 编号。
我把代码贴在这里,也许对以后的人有帮助。
tmux \
new '/path/to/a/script.sh' \; \
rename "session_name" \; \
splitw -v '/path/to/another/script.sh' \; \
selectp -U \; \
resizep -t "session_name:1" -y 4 \;
注意会话名称中的 1
。通常它是 0
但在我的 .tmuxrc 中我设置了 set -g base-index 1
我正在尝试从 bash 脚本设置一个 tmux 会话,而不使用像 tmuxinator/tmuxp/...
如果我运行这个代码
#!/bin/sh
tmux \
new '/path/to/a/script.sh' \; \
splitw -v '/path/to/another/program' \; \
selectp -U \; \
resizep -y 4 \;
它可以工作,除了一件事:根据 man tmux
,我希望它将顶部窗格的大小调整为 4 行,但它会将其调整为可变的行数,具体取决于终端的大小 window(不一定是4行,也不是window高度的4%)。
如果我删除 resizep 行
#!/bin/sh
tmux \
new '/path/to/a/script.sh' \; \
splitw -v '/path/to/another/program' \; \
selectp -U \;
然后我从会话内部手动 运行 :resizep -y 4
tmux 命令,然后它有效地将其大小调整为 4 行。
有人知道为什么会这样吗?我该怎么做才能解决?
根据man tmux
规格
OS: 拱门 Linux
WM: dwm (suckless)
终端:ts(suckless)
Shell: bash
编辑:我在 ts/bash shell 中执行这个 bash 脚本,所以在我执行它的那一刻, shell window 已经存在及其宽度和高度。
好的! 最后我解决了它(差不多一年后),它是如此简单......
我刚刚为会话添加了一个名称,并在 resizep 命令中指定了会话名称和 window 编号。
我把代码贴在这里,也许对以后的人有帮助。
tmux \
new '/path/to/a/script.sh' \; \
rename "session_name" \; \
splitw -v '/path/to/another/script.sh' \; \
selectp -U \; \
resizep -t "session_name:1" -y 4 \;
注意会话名称中的 1
。通常它是 0
但在我的 .tmuxrc 中我设置了 set -g base-index 1