公告

FujoOS公布日延期,以仓库发布为准

文档 参考 FUI 与 .fuc

FUI 与 .fuc

FUI 是这套系统的声明式界面层。.fui / .fus 文档由 tools/fuic.py 编译成 .fuc,再由内核里的运行时渲染。桌面——壁纸、图标、面板、窗口——就是一份这样的文档。

节点布局(64 字节)

lom lom/fuc.lom
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 重写且节点打包逐字节一致。