Skip to content

feat: 支持水平分屏 #4

Description

@Ding262

背景

当前 muxkit 只支持垂直分屏(pane-split 命令),所有 pane 左右排列。水平分屏(上下排列)是终端复用器的基础功能,tmux 和 screen 都支持。

建议

数据结构

window.h 的 pane 结构中添加分屏方向:

enum split_direction {
    SPLIT_VERTICAL,    // 左右分屏(当前已有)
    SPLIT_HORIZONTAL,  // 上下分屏(新增)
};

布局计算

当前 window.cwindow_layout() 按等宽垂直分配:

pane_width = total_width / pane_count;

需要改为树形布局:每次 split 将当前 pane 一分为二,支持嵌套分屏。可以参考 tmux 的 layout_cell 树结构。

快捷键

建议:

  • Ctrl-B % — 垂直分屏(保持现有)
  • Ctrl-B " — 水平分屏(新增,与 tmux 一致)

渲染

水平分屏需要在 render.c 中添加水平边框线渲染( 字符),当前只有垂直边框()。

复杂度

这是一个较大的改动,建议分步实现:

  1. 先支持简单的上下二分屏
  2. 再支持嵌套(垂直套水平、水平套垂直)
  3. 最后支持动态调整 pane 大小

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions