WakeFrame is a lightweight Windows tray app that plays a fullscreen wake video when the user returns to their PC. It can trigger on resume, unlock, sign-in, or Windows startup, then hands playback to a short-lived player process so the background agent stays small while idle.
Steam Staturn video used in demo: designed by tossEAC, from Saturn.
This is a Rust workspace split into focused crates:
wakeframe-agent: tray process, startup registration, and Windows event handlingwakeframe-ui: settings window for trigger options, video folder selection, and rotation managementwakeframe-player: fullscreen libmpv video player launched only when playback is neededwakeframe-common: shared config and video discovery code
Settings are stored per user at %APPDATA%\WakeFrame\config.json.
Build everything:
cargo build --workspaceOpen the settings UI:
cargo run --bin wakeframe-uiStart the tray agent:
cargo run --bin wakeframe-agent -- idleTest playback directly with a local video:
cargo run --bin wakeframe-player -- "C:\Videos\wake.mp4"Simulate a resume trigger without sleeping the PC:
cargo run --bin wakeframe-agent -- simulate-resumeThis repository uses Git LFS for large binary assets, including the demo GIF and the bundled libmpv-2.dll. Install Git LFS before cloning or pushing changes:
git lfs installRun the test suite and formatter before handing off changes:
cargo test --workspace
cargo fmtPushing a version tag builds a Windows installer and attaches it to a GitHub Release:
git tag v0.1.0
git push origin v0.1.0The release workflow produces WakeFrame-Setup.exe for users to download and run. Users do not need installer-building tools; Inno Setup is only used by maintainers or GitHub Actions to compile the setup file from installer\WakeFrame.iss.
Manual workflow runs also build the installer and publish it as a workflow artifact.
To inspect the bundled app locally without installer tooling, build a portable ZIP:
.\scripts\package-portable.ps1 -Version "0.1.0"The portable bundle is written to dist\WakeFrame-Portable-0.1.0.zip.
To compile the installer locally, install Inno Setup once:
winget install JRSoftware.InnoSetupThen build the installer with:
.\scripts\package-installer.ps1 -Version "0.1.0"The local installer compiler writes dist\installer\WakeFrame-Setup.exe.
WakeFrame is Windows-first and uses native Windows APIs for tray integration, startup registration, power/session notifications, and the fullscreen player window.

