KWCC (Kite Window Canvas Core) — A tiny, self-contained desktop UI engine.
Kite(风筝)取轻盈之意 · Window 桌面窗口 · Canvas 画布渲染 · Core 自包含核心引擎
极轻量级自包含桌面 UI 引擎,macOS 10.14+。
零外部依赖 — 所有第三方源码通过 setup.sh 下载到 deps/ 目录,开发者只需有编译器即可运行。
mquickjs (脚本逻辑) → microui (IMGUI 布局) → NanoVG (向量渲染) → Sokol (窗口/GFX)
# 下载依赖
./setup.sh
# 编译运行
make && ./kwcc两阶段构建:
- 编译 host tool 生成
mqjs_stdlib.h - 编译主二进制(仅 4 个 mquickjs 核心 .c 文件)
- 单向数据流:
$store.state+$bus事件总线 + 模块注册体系 - SVG 渲染:支持文件路径和内联 SVG 字符串,128 槽帧安全缓存
- 多窗口:microui 原生多窗口同时渲染
- 中文支持:自动识别 CJK 字体,PingFang SC 默认字体
- ES5 脚本层:mquickjs 引擎,轻量快速
所有示例位于 app/modules/examples/:
| 模块 | 说明 |
|---|---|
test/ |
最小计数器,验证 store + event bus 闭环 |
calc/ |
完整计算器,四则运算 + 状态驱动 UI |
svg/ |
SVG 渲染,内联字符串 + 文件路径两种方式 |
├── deps/ # 第三方源码 (setup.sh 自动下载)
├── src/
│ ├── main.m # Sokol 生命周期 + NanoVG 渲染
│ ├── kwcc_base.h # 纯 C 基础设施(config getter 声明)
│ ├── kwcc.c # config JSValue 存储实现
│ ├── kwcc_ui.c/h # UI 模块(g_mu、microui 桥接、input、SVG、字体)
│ ├── kwcc_js.c/h # JS lifecycle(create/destroy JSContext、stdlib stubs)
│ ├── kwcc_bus.c/h # C→JS 消息总线桥接(topic map + dispatch_event + bind_topic)
│ ├── kwcc.h # 入口 umbrella header(聚合各模块头文件)
│ └── kwcc_io.h # I/O 模块声明
├── app/
│ ├── main.js # 模块入口
│ ├── runtime/ # store.js + bus.js
│ └── modules/examples/ # 示例模块
└── assets/ # 字体资源
- JS 语法: ES5 兼容(无 let/const/箭头函数/模板字符串)
- C 层: 非必要不修改
- 调试: macOS 使用
lldb定位崩溃,不使用 printf
- spec.md — 完整项目规范
- requirements/store-data-flow-v2.md — 单向数据流方案
- requirements/store-data-flow-v2-plan.md — 实施计划
MIT