快速开始
DesktopEngine 应用只做核心服务:运行小程序、管理资源库和播放列表、分配显示器。动态壁纸、小组件和桌面伙伴由开发者和创作者用这个 SDK 制作,用户在应用里导入后使用。
SDK 包含:
desktopengine命令行:新建、运行调试、构建、检查和打包项目- 壁纸、小组件、桌面伙伴三种项目模板,壁纸另有 WebGL、three.js 和 PixiJS 版本
- 运行时 API 的类型声明,编辑器可据此补全和检查类型(见 API 参考)
manifest.json的 JSON Schema
安装
需要 Node.js 18 或更新版本,以及安装了 DesktopEngine 的 Mac。
npm install -g @desktopengine/sdk
desktopengine --version不想全局安装,也可以每次用 npx @desktopengine/sdk <命令>。
较新的 npm 会提示 esbuild 的安装脚本(postinstall)没有运行,可以忽略:SDK 不需要它。
新建并运行
desktopengine create widget ~/Projects/day-progress --id com.example.day-progress --name 今日进度
desktopengine dev ~/Projects/day-progresscreate 的类型可以是 wallpaper(壁纸)、widget(小组件)或 pet(桌面伙伴),生成的项目结构见项目和构建。
dev 会打开 DesktopEngine 并在其中运行这个小程序:
第一次连接时应用会询问是否允许(没有打开「开发」菜单时会先询问是否打开)。
保存文件后自动重新构建、重新载入;窗口被拖到的位置在重新载入后保留。
console.log等输出、未捕获的异常(带调用栈)、没人处理的 Promise rejection 和postMessage('host', …)都显示在终端里。Mac App Store 版的 DesktopEngine 看不到没人 await 或 catch 的 async 函数的 rejection,例如脚本末尾的main();:请写成main().catch(console.error);。用参数模拟用户在详情栏里的选择,
DesktopEngine.launchOptions和安装后完全一致:bashdesktopengine dev . --size medium --level floating --display 2 --param accent=#FF9F0A --param workday=true加上
--perf,终端最后一行每秒更新一次帧率、CPU、唤醒次数和内存,见性能。按 Ctrl-C 停止,小程序也会从桌面上移除。
断点调试
在 Safari 的「设置 › 高级」里打开「显示网页开发者功能」,然后选择「开发 › 这台 Mac › 小程序」。打开 DesktopEngine 的「开发」菜单之后载入的小程序才能被检查;src/ 项目在开发构建里带有 source map,检查器里看到的是原始文件。
不用 dev 也可以:先 desktopengine build,再打开「设置 › 高级 › 在菜单栏中显示「开发」菜单」,选择「开发 › 载入本地小程序…」(⌘⌥O)选择项目的 dist/package/ 文件夹,重新构建后会自动重新载入。这种方式下 DesktopEngine.launchOptions 是空对象 {}(模板里都写了缺省值)。
检查、打包和导入
desktopengine validate ~/Projects/day-progress
desktopengine pack ~/Projects/day-progresspack 在项目的 dist/ 下生成 <id>-<version>.zip。在 DesktopEngine 的「全部壁纸」「小组件」或「伙伴」页点工具栏里的导入按钮,或选择「文件 › 导入…」,就可以导入它。请导入 pack 生成的包:应用也能导入文件夹,但会原样导入,项目文件夹里的其他文件(.env、node_modules…)会一起进去,里面有符号链接时会被拒绝。导入后按类型出现在对应的地方:壁纸出现在壁纸网格里(工具栏筛选「动态」),小组件和桌面伙伴出现在各自的页面。导入同一个 id 会替换旧版本,桌面上正在运行的实例会用新版本重新启动。
目前通过 .zip 或文件夹分发内容,还没有签名、上传审核和在线内容库。
