FUI 与 .fuc
FUI 是这套系统的声明式界面层。.fui / .fus 文档由 tools/fuic.py 编译成 .fuc,再由内核里的运行时渲染。桌面——壁纸、图标、面板、窗口——就是一份这样的文档。
节点布局(64 字节)
record FucNode layout(packed, size=64) {
kind: u16 @0 // 节点类型
flags: u16 @2
x: i16 @4
y: i16 @6
...
}
这份布局以前有三份。
打包器里的 struct.pack、内核里的 NODE_SIZE 常量、以及文档。改一处忘两处是常态。现在它只有一份 .lom 声明,三处产物全部由生成器产出——包括这份文档里的代码块。见 L0 一节。
节点 id 的约定
桌面文档用成段的 node id:100 系列、200 系列、300 系列……分别对应面板、图标、窗口一类的角色。这些 id 此前只在一处注释里定义,而内核代码依赖它们——也就是“文档即契约”。这类魔法常量同样是 L0 的收拢对象。
编译链
| 文件 | 角色 |
|---|---|
| *.fui / *.fus | 作者写的声明式文档 |
| tools/fuic.py | 编译器,含 --check 逐字节校验 |
| *.fuc | 编译产物:64 字节节点记录序列 |
| kernel/src/fui/ | 内核内的渲染运行时 |
相关:
渲染、窗口系统与控件见 架构 · 图形与窗口系统;Loment 侧已有一个控件用 Loment 重写且节点打包逐字节一致。