CyberDesktop

从一个想法,
到一枚桌面插件。

原生 C / C++、稳定的 C ABI、独立预览与单文件交付。使用现成模板,把时间留给真正想创造的东西。

Windows x64C ABI 1CyberCanvas.cdpkg

独立开发,无需编译整个桌面。

准备 Visual Studio C++ 桌面开发组件、Windows SDK、CMake 3.26+ 和 Ninja。在 MSVC x64 开发终端中运行下面的命令。模板默认采用 /MT 构建,不需要 Qt、protobuf 或 CyberDesktop 本体源码。

SDK 公开下载入口将在正式发布时提供。下面的流程适用于已取得并解压的 SDK 1.3 开发包;示例安装路径为 D:/CyberDesktopSDK。

宿主提供实例设置、状态保存和公共数据服务。你可以用 CyberCanvas 绘制内容,也可以根据接口约定实现自己的渲染方式。

选择与你的想法最接近的模板。

静态卡片

主题卡片、点击计数和独立设置。没有持续定时器,适合第一个插件。

数据组件

订阅宿主系统数据,显示 CPU 与内存;仅在可见值变化时刷新。

动态组件

可调速动画、暂停与恢复,以及随实例保存的动画状态。

SDK 1.3 还提供 info、tasks、media 和 calendar 模板,分别用于信息仪表、待办列表、媒体控制和日历。

建立你的第一个插件。

生成器会更新插件 ID、名称和工程描述。目标目录必须不存在或为空。

$sdk = 'D:/CyberDesktopSDK'
& "$sdk/share/cyberdesktop-sdk/scripts/new-plugin.ps1" `
  -Destination 'D:/MyPlugins/FirstCard' `
  -Id 'com.example.first-card' `
  -Name '我的第一张卡片' -Template static

cmake -S 'D:/MyPlugins/FirstCard' `
  -B 'D:/MyPlugins/FirstCard/build' -G Ninja `
  -DCMAKE_BUILD_TYPE=Release "-DCMAKE_PREFIX_PATH=$sdk"
cmake --build 'D:/MyPlugins/FirstCard/build' --parallel 10

$package = 'D:/MyPlugins/FirstCard/build/plugins/com.example.first-card'
& "$sdk/bin/cd-sdk.exe" test $package

修改生成工程的 Plugin.cpp、CMakeLists.txt 和 plugin.textproto。每次构建会生成二进制描述,保持代码与描述中的 ID 和版本一致。

独立预览,快速看到变化。

& "$sdk/bin/cd-sdk-preview.exe" $package

# 按实际 DPI 检查
& "$sdk/bin/cd-sdk-preview.exe" $package --dpr 2

在预览器中按 P 暂停、L 切换布局、S 打开实例设置。数据模板使用模拟值;安装到真实宿主后,再确认系统数据、媒体控制和桌面行为。

分别检查浅色与深色、不同尺寸、DPI、隐藏恢复和重新加载。独立预览不能替代真实宿主的最终运行验证。

将插件交付为一个文件。

& "$sdk/bin/cd-sdk.exe" pack $package 'first-card.cdpkg'
& "$sdk/bin/cd-sdk.exe" validate 'first-card.cdpkg'
& "$sdk/bin/cd-sdk.exe" inspect 'first-card.cdpkg'

在 CyberDesktop 的插件设置中导入 .cdpkg。包内包含 DLL 与声明的资源,用户实例状态由宿主单独保存。更新前先停用相关插件或退出桌面,避免覆盖正在加载的 DLL。

原生插件会执行本机代码。包校验用于检查完整性与格式,不验证发布者身份,也不构成执行沙箱。请从可信来源安装插件。

让组件自然融入桌面。

  • 按宿主提供的尺寸与 DPI 绘制,保持图像比例和文字可读性。
  • 只请求当前实例的局部刷新,隐藏时取消不必要的计时与数据订阅。
  • 将网络、扫描和图片解码放在后台,渲染回调读取已准备的状态。
  • 在 C ABI 边界捕获 C++ 异常;释放订阅、异步任务和图形资源时确保回调生命周期正确。
  • 图片按实际显示尺寸缓存,资源就绪后让依赖的纹理缓存失效。
  • 为插件提供可生效的设置页,并对持久化状态显式标记版本。

完整 API、数据服务、渲染扩展与契约文档随开发包提供,位于 share/cyberdesktop-sdk 下的文档目录。官网首版先提供这条可执行的入门路径。

[寻找组件灵感

](/#collection)