Desktop app · Windows 10 / 11
Wallive
A live video wallpaper for Windows that costs almost nothing to run.
- ~0.9%CPU while playing 1080p at 30 fps
- 29 MBmemory after 10 s paused
- 0polling timers, fully event-driven
- 13architecture decision records
The problem
Live wallpaper apps usually ship a browser engine or a general video player and keep decoding video even when every window covers the desktop. That costs CPU, memory and battery for something nobody is looking at.
What I built
Wallive is a tray-only Windows app. It plays a video behind the desktop icons on every monitor, while icons, the taskbar and windows stay on top. When you choose videos, it converts each one once, in the background, into a format your graphics chip decodes in hardware. Playback then uses the converted copy.
- Plays several videos in turn every 1 to 60 minutes, in order or shuffled, and switches only at the end of a loop so no scene is cut.
- Pauses automatically when windows cover every monitor, when a fullscreen app or game runs, when the display turns off, when Battery Saver is on, or when the session is locked.
- Frees the decoder’s memory after 10 seconds of pause and resumes when the desktop is visible again.
- Keeps working after Explorer restarts and display changes.
How it works
Frames go from the GPU’s hardware decoder through a Direct3D 11 video processor into a composition swap chain. They never pass through the CPU or a 3D render pass. One decoder feeds one DirectComposition visual per monitor. Everything else, including window coverage, power state and display changes, reacts to operating system events rather than timers.
- Two desktop layouts. It detects both the classic “WorkerW” Explorer layout and the newer Windows 11 24H2 layout, and re-attaches after Explorer restarts.
- Safe Rust by default. The crate denies
unsafecode; only thinffi.rswrappers opt back in, each block with a// SAFETY:comment. Coverage math, codec choice and config are plain Rust with unit tests. - Imports run out of process. Transcoding runs in a short-lived child process, so the always-running process stays small.
Results
Measured on the development laptop (Intel integrated graphics, 1920x1080, Windows 11):
| State | CPU | Memory |
|---|---|---|
| Playing 1080p 30 fps on AC power | about 0.9% | about 81 MB |
| Playing on battery | about 1.2% | about 81 MB |
| Paused | about 0% | 29 MB after 10 s |
What is not tested yet
The README says what has not been tested. Several monitors, 4K and high-DPI screens, NVIDIA and AMD graphics, and Windows 10 on real hardware are implemented but untested. Test reports from those setups are the project’s most-wanted contribution.