Skip to content

Windows surface split

Two independent Windows integrations. Do not mix them in one code path.

SurfaceTransportUIPackage
Widgets Boardwidget_data.json keys ac:template:{id} / ac:data:{id} + pending_actionsAdaptive Cards via C# IWidgetProviderMSIX App Extension com.microsoft.windows.widgets
Desktop wallpaper (WorkerW)Existing desktop webview / widget.htmlFrameless Tauri webview HWND reparented under WorkerWNo MSIX widget extension; feature workerw

Widgets Board

  • Transpile: Rust to_adaptive_card (+ rasterize chart/canvas/gauge → PNG data URI)
  • Host write: desktop::set_widget_config on cfg(windows)
  • Provider: templates/windows-widget/WidgetProvider
  • Init: npx tauri-plugin-widgets-api init-windows
  • Preview / goldens: templates/windows-widget/PreviewHosttests/golden/windows/ (record on Windows VM via just record-windows <case>)
  • Adaptive Card JSON snapshots: tests/snapshots/adaptive/ (pnpm -C scripts cli gen-adaptive-snapshots)

WorkerW wallpaper

  • Feature flag: workerw (default off)
  • API: tauri_plugin_widgets::windows::workerw::{find_workerw, attach_to_workerw}
  • Attach after creating a frameless desktop widget window; pass its HWND
  • Compile-check via cargo xwin check --features workerw
  • Runtime smoke only on an interactive Windows desktop session (tools/win/workerw-smoke.ps1 optional)

UTM tooling

CommandRole
just win-upSSH healthcheck
just win-bootstrapInstall VS Build Tools / WinAppSDK via PS
just win-syncSync repo to C:\work\tauri-plugin-widgets
just test-windows-remoteshot.ps1 smoke
just test-windows-visual / record-windowsPreviewHost PNG
just win-pack / win-sideloadPublish + sideload helpers
just check-windows-xwinCross-check plugin
just build-windows-example-xwinCross-build demo app

Released under the MIT License. · Contributing