Windows live wallpaper app: video behind desktop icons, controlled by the WhalePaper desktop UI.
$env:FFMPEG_DIR = "C:\ffmpeg"
cd web-ui && npm run build && cd ..
cargo build -p wallpaper-runtime -p wallpaper-api --features app
Copy-Item web-ui\dist target\debug\dist -Recurse -Force
.\copy_ffmpeg_dlls.ps1 -FFmpegPath "C:\ffmpeg"
cargo run -p wallpaper-api --features app -- --appOr after building: target\debug\wallpaper-api.exe --app
- Close the window → app stays in the system tray (wallpaper keeps playing). Tray: Open / Pause / Resume / Next / Quit.
- Second launch focuses the existing window (single instance).
- Installer (
scripts\build-installer.ps1) packages this same path (single-exe+app).
wallpaper-ui (Slint) remains in the repo for experiments. Prefer WhalePaper (wallpaper-api --app) for day-to-day use and releases.
- Windows 10/11, Rust stable, FFmpeg full_build-shared (see FFMPEG_DOWNLOAD.md)
- Node.js only when rebuilding
web-ui
| Crate | Role |
|---|---|
wallpaper-core |
Engine, video decode/present, telemetry, session config |
wallpaper-host-windows |
WorkerW / DirectComposition host |
wallpaper-runtime |
Process/service, IPC, auto-pause / occlusion |
wallpaper-api |
HTTP bridge + WhalePaper desktop shell (--app) |
web-ui |
React UI served by the API |
wallpaper-ui |
Legacy Slint controller |
- Video wallpapers (HW decode when FFmpeg D3D11VA is available)
- Pause / resume, fit, FPS cap, performance mode
- Auto-pause: fullscreen, window occlusion, lock, low battery
- Library: recent + favorites (
%LOCALAPPDATA%\WhalePaper\library.json) - Playlists / timed slideshow
- Start with Windows: logon task (no admin) or Windows Service (admin)
- RUNNING.md — run notes
- FFMPEG_DOWNLOAD.md — correct FFmpeg package
- web-ui/README.md — API /
--appdetails