一键还原整套开发布局:如何用Muxy布局系统管理分屏终端(附YAML示例)
【免费下载链接】muxyLightweight and Memory efficient terminal for Mac built with SwiftUI and libghostty项目地址: https://gitcode.com/gh_mirrors/muxy1/muxy
Muxy是一款用 SwiftUI + libghostty 打造的轻量、省内存的 Mac 终端,除了流畅的分屏体验,它还内置了强大的布局系统(Layouts):你可以把「编辑器 + 日志 + 监控 + Shell」这类多分屏开发布局保存成一个简单的 YAML 文件,下次打开项目时一键还原整套开发布局,再也不用手动拖拽分屏。本文面向新手,带 3 步上手教程和完整 YAML 示例,帮你快速掌握 Muxy 分屏终端管理。
一、为什么需要终端布局管理?
如果你用过终端分屏,一定有过这样的痛苦:
- 每次打开项目都要重新分 3~4 块屏:编辑器、日志、服务进程、Shell;
- 换一台电脑或重开窗口,整套布局全部丢失;
- 团队成员各摆各的布局,新人不知道「标准姿势」是什么。
Muxy 的布局系统就是为解决这些问题而生:布局文件就放在你的项目仓库里(.muxy/layouts/目录),可以随代码一起提交,任何人克隆项目后都能一键应用同款分屏。
💡 布局文件路径:
<项目根目录>/.muxy/layouts/,支持.yaml、.yml、.json三种扩展名,文件名去掉扩展名就是布局名称。
二、3步把分屏布局保存成 YAML 文件
第 1 步:在项目里创建.muxy/layouts/目录
我的项目/ └── .muxy/ └── layouts/ ├── dev.yaml # 日常开发布局 └── release.yaml # 发布调试布局第 2 步:写一个最小布局
最简单的布局就是一个终端面板,dev.yaml示例:
tab: name: shell想要左右分屏(左边 nvim 编辑器,右边 Shell),layout: horizontal即可:
layout: horizontal panes: - tab: name: editor command: nvim . - tab: name: shell效果长这样:
Tab strip: [ editor ] ┌─────────────────────┬───────────────────┐ │ editor │ shell │ │ nvim . │ │ └─────────────────────┴───────────────────┘第 3 步:在顶栏一键应用
项目里只要有 1 个以上布局文件,Muxy 顶栏就会出现一个布局选择器图标(田字形rectangle.split.2x2)。点它 → 选择dev→ 确认,整套分屏即刻还原。✅
三、读懂 YAML 布局字段:如何拼出 2×2 甚至更复杂的分屏
布局本质上是一棵「面板树」:分支用layout+panes描述排列方向,叶子用tab描述单个终端。核心字段只有 4 个:
| 字段 | 说明 |
|---|---|
layout | horizontal(左右并排)或vertical(上下堆叠),默认horizontal |
panes | 子面板数组,存在时该节点就是「分支」 |
tab.name | 可选标题,不写则默认取命令的第一个词 |
tab.command | 可选启动命令,字符串或字符串列表(列表会自动用&&串联执行) |
经典「dev」布局:左编辑器,右上下分屏
layout: horizontal panes: - tab: name: editor command: nvim . - layout: vertical panes: - tab: name: top command: top - tab: name: shell嵌套分支可以无限层深,用两层vertical就能拼出2×2 四宫格(quad.yaml):
layout: horizontal panes: - layout: vertical panes: - tab: name: tl - tab: name: bl - layout: vertical panes: - tab: name: tr - tab: name: br小贴士:一条命令写不出来?用列表形式
tab: name: setup command: - cd src - npm install多行命令会按顺序用&&拼接执行,非常适合「进入目录 → 装依赖 → 启动服务」这类初始化场景。🚀
更完整的字段说明(含 JSON 写法和旧版tabs:兼容规则)见官方文档:docs/layouts/schema.md,更多现成示例见:docs/layouts/examples.md。
四、一键应用布局时的 3 个关键行为
理解这 3 点,就能完全掌握 Muxy 布局的应用逻辑(实现可参考 AppState.swift 中的requestApplyLayout与 WorkspaceReducer.swift):
- 绝不自动应用:打开项目不会静默改动你的窗口,必须手动在顶栏选择器里点选——安全、无惊吓;
- 应用前会弹确认框:确认后当前 worktree 里的所有终端/标签会被关闭,再按布局文件重建整棵分屏树;
- 第一个面板决定标签名:按深度优先顺序找到的第一个
tab成为顶层标签页,其余面板都成为它的子分屏。
此外,布局还原后把顶层标签拖到别的标签旁边(Docking),完整的标签内分屏结构会被原样保留——这意味着你可以把同一套分屏布局复制到其他项目标签里继续用。
顶栏选择器的界面实现非常简洁,可阅读源码:LayoutPickerMenu.swift;YAML 解析与布局构建分别在 LayoutConfig.swift 和 LayoutWorkspaceBuilder.swift。
五、实用场景清单:布局系统能帮你做什么
- 📦团队统一姿势:
dev.yaml随仓库提交,新人克隆后一键还原标准开发环境; - 🚀多模式切换:
debug.yaml(日志 + btop + Shell)、release.yaml(构建 + 上传命令)各存各的,顶栏一键切换; - 🧪临时实验:随手建个
scratch.json试新工具,不污染日常布局; - 🖥️换机零成本:布局跟项目走,换电脑后分屏环境一模一样。
六、延伸阅读:官方文档与源码路径
想深入 Muxy 布局系统的内部机制,可以按下面的路径探索:
| 内容 | 路径 |
|---|---|
| 布局系统概览 | docs/layouts/overview.md |
| 现成 YAML 示例(单屏/双屏/三列/四宫格) | docs/layouts/examples.md |
| 完整字段 Schema 与 JSON 写法 | docs/layouts/schema.md |
| YAML 解析与布局发现逻辑 | LayoutConfig.swift |
| 分屏树构建器 | LayoutWorkspaceBuilder.swift |
| 顶栏布局选择器 UI | LayoutPickerMenu.swift |
总结:Muxy 的布局系统把「终端分屏」从手工操作变成了声明式配置文件——在.muxy/layouts/下写一个几行的 YAML,就能一键还原整套开发布局。把它提交到仓库里,你的团队从此共享同一套高效分屏终端环境。现在就去给你的项目写第一个dev.yaml吧!
【免费下载链接】muxyLightweight and Memory efficient terminal for Mac built with SwiftUI and libghostty项目地址: https://gitcode.com/gh_mirrors/muxy1/muxy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考