首页 > 解决方案 > 如果在 shell 命令中运行,tmux resizep 无法按预期工作

问题描述


我正在尝试从 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 行,但它会将其调整为可变数量的行,这取决于终端窗口的大小(不一定是 4 行,它是不是窗口高度的 4%)。

如果我删除 resizep 行

#!/bin/sh

tmux \
    new '/path/to/a/script.sh' \; \
    splitw -v '/path/to/another/program' \; \
    selectp -U \;

然后从会话内部我手动运行:resizep -y 4tmux 命令,然后它有效地将其调整为 4 行。

有谁知道它为什么会发生,我能做些什么来解决它?

根据man tmux

规格
OS:Arch Linux
WM:dwm (suckless)
Terminal:ts (suckless)
Shell:bash

编辑:我在 ts/bash shell 中执行这个 bash 脚本,所以在我执行它的那一刻,shell 窗口已经存在,它的宽度和高度。

标签: bashscriptingresizetmux

解决方案


推荐阅读