CLantigua2/WakeFrame

WakeFrame is a lightweight Windows tray app that plays a custom fullscreen video when you return to your PC after sleep, unlock, sign-in, or startup, bringing a Steam Deck-style wake animation to desktop Windows.

★ 0Forks 0RustGitHub ↗Compare

README

WakeFrame

WakeFrame

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.

WakeFrame demo

Steam Staturn video used in demo: designed by tossEAC, from Saturn.

Workspace

This is a Rust workspace split into focused crates:

  • wakeframe-agent: tray process, startup registration, and Windows event handling
  • wakeframe-ui: settings window for trigger options, video folder selection, and rotation management
  • wakeframe-player: fullscreen libmpv video player launched only when playback is needed
  • wakeframe-common: shared config and video discovery code

Settings are stored per user at %APPDATA%\WakeFrame\config.json.

Run Locally

Build everything:

cargo build --workspace

Open the settings UI:

cargo run --bin wakeframe-ui

Start the tray agent:

cargo run --bin wakeframe-agent -- idle

Test 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-resume

Development

This 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 install

Run the test suite and formatter before handing off changes:

cargo test --workspace
cargo fmt

Releases

Pushing a version tag builds a Windows installer and attaches it to a GitHub Release:

git tag v0.1.0
git push origin v0.1.0

The 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.InnoSetup

Then 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.

Contributors

CLantigua2

Issues