背景
当前 muxkit 只支持垂直分屏(pane-split 命令),所有 pane 左右排列。水平分屏(上下排列)是终端复用器的基础功能,tmux 和 screen 都支持。
建议
数据结构
在 window.h 的 pane 结构中添加分屏方向:
enum split_direction {
SPLIT_VERTICAL, // 左右分屏(当前已有)
SPLIT_HORIZONTAL, // 上下分屏(新增)
};
布局计算
当前 window.c 的 window_layout() 按等宽垂直分配:
pane_width = total_width / pane_count;
需要改为树形布局:每次 split 将当前 pane 一分为二,支持嵌套分屏。可以参考 tmux 的 layout_cell 树结构。
快捷键
建议:
Ctrl-B % — 垂直分屏(保持现有)
Ctrl-B " — 水平分屏(新增,与 tmux 一致)
渲染
水平分屏需要在 render.c 中添加水平边框线渲染(─ 字符),当前只有垂直边框(│)。
复杂度
这是一个较大的改动,建议分步实现:
- 先支持简单的上下二分屏
- 再支持嵌套(垂直套水平、水平套垂直)
- 最后支持动态调整 pane 大小
背景
当前 muxkit 只支持垂直分屏(
pane-split命令),所有 pane 左右排列。水平分屏(上下排列)是终端复用器的基础功能,tmux 和 screen 都支持。建议
数据结构
在
window.h的 pane 结构中添加分屏方向:布局计算
当前
window.c的window_layout()按等宽垂直分配:需要改为树形布局:每次 split 将当前 pane 一分为二,支持嵌套分屏。可以参考 tmux 的 layout_cell 树结构。
快捷键
建议:
Ctrl-B %— 垂直分屏(保持现有)Ctrl-B "— 水平分屏(新增,与 tmux 一致)渲染
水平分屏需要在
render.c中添加水平边框线渲染(─字符),当前只有垂直边框(│)。复杂度
这是一个较大的改动,建议分步实现: