如何设置Tmux右上窗格固定高度,右下窗格占剩余空间?
解决tmux右上窗格固定高度的问题
我来帮你搞定这个tmux窗格布局的问题!核心思路是调整拆分顺序,在创建右上窗格时直接指定高度,而不是先均分再调整,这样就能让它保持固定尺寸,右下窗格自动占据剩余空间。
修正后的脚本方案
这里有两种可靠的实现方式,你可以根据习惯选择:
方案一:先分左右,再把右边拆成固定高度的上下
这个思路和你原来的脚本逻辑更接近,只是调整了拆分时的参数和顺序:
smi_processes=$(nvidia-smi pmon -c 1 | wc -l) smi_height=$((${smi_processes} + 3)) # 可根据实际输出微调偏移量 tmux \ new-session 'htop' \; \ # 1. 水平拆分出右侧大窗格(当前活动窗格自动切换到右侧) split-window -h \; \ # 2. 垂直拆分右侧窗格,上半部分高度设为smi_height,直接运行nvidia-smi split-window -v -l ${smi_height} 'nvidia-smi -l 1' \; \ # 3. 切换到右下窗格(可选,如果你要在这里运行其他命令) select-pane -t 1 \; \ # 4. 执行终端全屏操作(将xdotool命令发送到当前窗格执行) send-keys 'xdotool key F11' C-m \;
方案二:先分上下固定高度,再把上半部分拆成左右
这种逻辑更直观,先锁定顶部区域的高度,再拆分左右:
smi_processes=$(nvidia-smi pmon -c 1 | wc -l) smi_height=$((${smi_processes} + 3)) tmux \ new-session 'htop' \; \ # 1. 垂直拆分出顶部固定高度的窗格(当前窗格变为顶部区域) split-window -v -l ${smi_height} \; \ # 2. 水平拆分顶部区域,右侧运行nvidia-smi split-window -h 'nvidia-smi -l 1' \; \ # 3. 切换到右下窗格(可选) select-pane -t 1 \; \ # 4. 终端全屏 send-keys 'xdotool key F11' C-m \;
为什么原来的方法不行?
你之前的脚本是先水平拆分,再连续两次垂直拆分,这会让右侧两个窗格自动均分高度。而通过先选中目标区域,再用-l参数指定拆分后的新窗格高度,就能直接固定右上窗格的尺寸,剩余空间会自动分配给右下窗格,不受终端整体尺寸变化的影响。
微调高度计算
如果nvidia-smi -l 1的输出还是出现滚动,你可以手动调整smi_height的偏移量:
- 先运行
nvidia-smi pmon -c 1看实际输出的行数 - 把
+3改成更合适的数值(比如+2或+4),确保刚好容纳所有输出行
内容的提问来源于stack exchange,提问作者RnRoger
相关产品推荐
相关产品推荐

