跳转到内容

UniDesktop API (UDA)

用一套类型安全的 Rust API,把应用接入原生桌面。

开发跨平台桌面应用时,同一功能通常需要为每个平台分别实现:Windows 上调用 SystemParametersInfoW,Linux 上则分别使用 gsettings、qdbus、swww、hyprpaper。各实现的失败模式与会话假设互不相同,且缺少统一的类型系统。

UDA 以一套**能力驱动(capability-driven)**的 Rust API 统一这些差异:探测运行环境、选择可用后端、按能力降级,避免在不可用环境下直接失败。

级联回退

严格的层级链:XDG Desktop Portal → 原生桌面环境 IPC → CLI 工具 → 强类型 UdaError::NotSupported。壁纸与防休眠从第二级开始,目前只有外观检测使用 Portal。

能力驱动

功能主动上报 SupportLevel::Full / Partial(reason) / None,让你的应用在出错前就能分流,并能解释降级原因而不是靠猜。

零重型依赖

Linux 侧为纯 Rust zbus,Windows 侧为 windows-rs。不依赖 Qt、GTK 或任何打包工具箱。

入口 适用场景
Rust crate 原生 Rust 应用,直接用 AppearanceManager、TrayManager 等 trait
C-ABI (include/uda.h) C/C++、或需要稳定 ABI 的场景
Python / Node.js SDK examples/python/uda.py(ctypes)与 examples/nodejs/uda.js(koffi),零原生编译步骤

v0.2.1 包含以下模块:深浅色外观检测、壁纸管理、原生通知、防休眠锁、系统托盘、媒体播控、会话与电源生命周期(锁屏、注销、睡眠、休眠、重启、关机)。

各功能在不同桌面环境下的支持情况见平台支持矩阵。

安装

按宿主语言列出的前置条件与获取方式。打开

第一个桌面能力

十行代码检测主题并发送一条通知。打开

能力与降级

SupportLevel 三态、四级降级链,以及如何在调用前查询。打开

故障排查

按模块列出的症状、原因与处置。打开