如何获得非交互式tmux窗格的大小?

时间:2014-03-05 23:58:29

标签: size tmux

我在窗口中运行了几个tmux窗格,这些窗格的语法如下:

tmux split-window -h -l {dynamic value} tail -f somefile.txt
tmux split-window -v -l {dynamic value} tail -f someotherfile.txt
tmux split-window -h -l {dynamic value} nc -l -p {random port}

当我使用此脚本创建新窗格时,我需要使用每个“窗口”(窗格)的大小更新脚本中的数组。

如果tmux窗格包含交互式shell,我可以在其中运行tput cols和tput行来获取大小。我检查了tmux手册页,但没有看到我正在寻找的命令。

1 个答案:

答案 0 :(得分:2)

如果您知道窗格的ID(例如%24)或其名称(例如session_name:win_idx.pane_idx;请参阅手册页中的target-pane),那么您可以使用display-message -p来查询尺寸:

tmux display-message -pt "$pane" -F '#{pane_width}x#{pane_height}'

如果您还没有办法命名为窗格,那么您可以在使用-P选项和-F选项将其拆分时收集窗格ID:

pane_a=$(tmux split-window -PF '#{pane_id}' -hl "$dynamic_value" 'tail -f somefile.txt')
⋮ # create other panes
pane_a_width=$(tmux display-message -pt "$pane_a" -F '#{pane_width}')

如果您想了解窗口中的所有窗格,那么您可以将list-panes与窗口的ID(例如@5)或名称(例如session_name.win_idx)一起使用;请参阅{{ 1}}在手册页中):

target-window

其中一些选项和格式说明符在旧版本的 tmux 中不可用,但通常有解决方法(取决于您的版本的使用年限)。