Installation
Prerequisites
Section titled “Prerequisites”| Host language | Requirement |
|---|---|
| Rust | Rust 2021 edition, cargo, and the workspace’s target toolchain |
| Python | Python 3.10+ — no third-party packages, the SDK is stdlib only |
| Node.js | Node 18+ and npm install koffi inside examples/nodejs/ |
| C / C++ | any C11 compiler; include include/uda.h and link the shared library |
Building from source additionally needs the Rust toolchain. Every SDK loads a prebuilt library if one exists, so a host application needs no Rust toolchain at runtime.
Building the library
Section titled “Building the library”git clone https://github.com/UniDesktop/SDK.gitcd SDKcargo build -p uda-ffi --releaseThat produces libuda_ffi.so on Linux or uda_ffi.dll on Windows. Cross-compiling the Windows target from Linux:
cargo build -p uda-ffi --release --target x86_64-pc-windows-gnuThe SDKs look for the library in this order:
- the
UDA_LIBRARYenvironment variable, - the target directory reported by
cargo metadata(bothdebugandrelease), - common in-repo build directories,
- the system dynamic-library search path.
An explicit path can always be passed to the SDK’s constructor.
Linux runtime dependencies
Section titled “Linux runtime dependencies”| Feature | Package |
|---|---|
| Everything D-Bus | dbus (the session bus must be reachable) |
| Portal features | xdg-desktop-portal |
| Notifications | any org.freedesktop.Notifications implementation (dunst, mako, …) |
| System tray | a StatusNotifierWatcher — GNOME needs the AppIndicator extension |
| Wallpaper on X11 | feh or nitrogen (only if no portal or DE IPC is available) |
There is no hard dependency on any of these: UDA probes for each and degrades to a typed error when none is present.
Windows runtime dependencies
Section titled “Windows runtime dependencies”None beyond Windows 10 / 11 itself. Toasts, tray, media and power all use built-in platform APIs, and UDA registers the AppUserModelID an unpackaged process needs.
Verifying the install
Section titled “Verifying the install”cargo run -p uda-cliThe diagnostic CLI walks every subsystem and prints what it found and which backend tier answered. It is the fastest confirmation that the session is usable.
See Troubleshooting when something reports unexpected.
Next steps
Section titled “Next steps”- Build the library — what the workspace produces
- Hello, desktop — a first working example
