Skip to Content
示例活动监视器

活动监视器

这个示例更适合作为 showcase,而不是入门教程。

它的价值不在于“你可以直接把它复制成自己的应用”,而在于它把几条 Ansiq 能力真正放到了一个完整场景里:

  • 固定 shell 布局
  • tabs 切换
  • 进程表格渲染
  • 定时采样刷新
  • 底部摘要面板
活动监视器里的数据流
1sampler 定时采集系统快照
2快照进入 app state
3tabs 决定当前视图
4table 与底部摘要共同消费同一份 snapshot
5runtime 保持固定 shell 并局部刷新

运行方式

cargo run -p ansiq-examples --example activity_monitor
活动监视器的终端效果图

真实运行的 activity_monitor 示例界面。

这个示例适合学习什么

如果你已经做过一个小型 Ansiq app,这个示例最值得看的不是“表格长什么样”,而是:

  • app shell 如何固定住头部、主体和底部摘要
  • 实时数据如何以 snapshot 形式进入 UI
  • Tabs + Table + Summary panels 如何协同工作
  • 为什么系统采样应该在 service/sampler 层,而不是 render 里

这个示例主要用到哪些 widgets

你在运行时应该观察什么

1. 顶部 tabs 切换的是“视图”,不是数据源本身

CPU / Memory / Energy / Disk / Network 五个标签页并不是五套完全独立的应用。
它们共享同一个应用壳层,只是切换了不同的焦点数据视角。

2. 中间进程表是“稳定壳层里的主要内容区”

这个示例很好地体现了为什么 fixed shell 很重要:

  • 顶部结构不会乱跳
  • 底部摘要不会被正文挤走
  • 主内容区承担了大部分动态变化

它是应用的另一个实时视图,和进程表一起构成了一个更完整的监控界面。

读代码时先看什么

读这个示例时,不建议先看具体的表格 cell 是怎么拼的。

更推荐的顺序是:

  1. 快照模型是什么
  2. 采样器如何生成 ActivitySnapshot
  3. 场景状态如何保存当前 tab 和选中的进程
  4. 最后再看 UI 树如何消费这些状态

这样你会更容易理解:
这个示例真正展示的是 runtime + state + shell,而不只是一个漂亮表格。

这个示例故意没有追求什么

第一版活动监视器没有追求和 macOS 原版逐字段完全一致。

例如:

  • Energy 仍然是近似值
  • Network 依赖系统命令能力
  • 一些字段在权限受限时会降级

这不是缺陷,而是这个示例的边界:
它要展示的是 Ansiq 如何承载“真实系统数据驱动的 TUI”,而不是一比一复刻 Apple 的产品。

这个示例和 Guide 的关系

如果你已经读过:

再回来看这个示例,你会更容易理解:

  • 为什么这里适合用固定 shell
  • 为什么 snapshot 替换比零散字段更新更稳
  • 为什么它更像一个 showcase,而不是 onboarding 示例

推荐对应阅读:

  1. 布局与渲染
  2. 状态、焦点与输入
  3. 流式输出与异步任务
  4. Shell
  5. Table
Last updated on