我想强制tmux
会话中的窗口为特定大小,无论我的终端有多大。我怎样才能做到这一点?
语境
我正在尝试在 asciinema 中记录 tmux,如此处所述https://github.com/asciinema/asciinema/wiki/Recording-tmux-session(在命令上运行 asciinema tmux attach
)。但是显示器太大了,我想强制调整tmux window
.
我尝试过的事情
我有一个成功的解决方案,我使用 tmux 会话的第二个视图来mate-terminal -e 70x20
强制窗口大小......但这看起来像是一个 hack。
尝试使用 -x 强制会话大小
tmux new-session -x $X -y $Y -d
这些选项似乎被忽略(我尝试摆弄激进的调整大小设置)
答案1
您可能需要至少打开 3 个窗格来占据不需要的区域。尝试类似的东西
tmux new-session \; split-window -h \; split-window -v \; resize-pane -x 70 -y 20
答案2
这应该做你想要的:
tmux new-session \; setw force-width 80 \; setw force-height 24 \; attach
当然,或者与$X
和。$Y
答案3
这是 tmux 中的一个错误,已在开发版本中修复。目前最新发布的版本是3.2a,没有修复该问题。
它似乎只是忽略新分离会话的 -x 和 -y 选项。文档说这些值将覆盖新窗口的默认大小设置,这建议创建一个新会话,设置默认大小,启动一个新窗口,然后终止初始窗口。这样可行。但是,您可以使用 -x 和 -y 选项覆盖默认大小设置以避免需要调整它,但您仍然需要创建一个新窗口。问题在于 -x 和 -y 在创建初始窗口后修改了会话的默认大小。
tmux new-session -d -x $X -y $Y \; new-window ${MY_COMMAND} \; kill-window -t 0
因此,这将创建一个具有您想要的默认大小的新会话,然后创建一个具有所需大小的新窗口,运行 ${MY_COMMAND},最后杀死另一个窗口。这应该适用于在需要任何尺寸的虚拟终端中运行命令。