rocksdanister/lively

Free and open-source software that allows users to set animated desktop wallpapers and screensavers powered by WinUI 3.

19,219
Stars
almost 7 years
Age
0
Published reviews
0
Questions

Reliability breakdown

What drives the reliability score

Component scores measured daily from GitHub activity (2026-07-15).

Continuity30% of headline37

Activity on 35 of 90 tracked days in the last 90 and 6 of 30 in the last 30.

Closure30% of headline15

Merged 0 of 4 PRs opened and closed 10 of 32 issues opened over the last 90 tracked days — PR flow carries 55% of this component, issue flow 45%.

Shipping20% of headline0

0 releases in the last 180 days, 0 in the last 90 and 0 in the last 30 — a steady cadence scores highest.

Liveness10% of headline59

Last push 81 days ago — freshness decays as pushes age (roughly halves every 83 days without a push).

Support burden10% of headline60

Open-issue load isn't tracked for this repo yet.

Adoption confidence43

Modeled — how confidently teams are adopting this repo. Stargazers

Maintenance quality29

Modeled from PR/issue responsiveness and upkeep signals. Activity pulse

Risk score62

Modeled — lower is better; adoption and continuity risk. Repository

Stays active (30d)37%

Modeled chance the repo stays active over 30 days. Activity pulse

Stays active (90d)36%

Modeled chance the repo stays active over 90 days. Activity pulse

Release rhythm (180d)0

Regularity of releases over the last 180 days. Releases

Maintainer bus risk (90d)58%

Modeled — lower is better; concentration of commits in few maintainers. Contributors graph

Project Overview

Lively Wallpaper is a free, open-source Windows application that turns videos, GIFs, web pages, and shaders into animated desktop wallpapers and screensavers. The UI is built on WinUI 3, and the app targets modern Windows 10 and Windows 11 desktops. You install it, pick or import a wallpaper, and your static desktop background becomes live content while your icons and desktop interactions keep working.

Use it for exactly what it says: animated wallpapers and screensavers on Windows. If you want a video loop behind your icons, an audio-reactive visualizer, or an HTML page rendered as your desktop background, Lively does that without a license fee. If you need macOS or Linux support, stop here — Lively is Windows-only, and that is a hard boundary, not a roadmap item you should bet on.

The project is mature and widely starred, with official distribution through the Lively website, the Microsoft Store, and winget. That matters: you are not sideloading a hobby binary, you are installing a packaged app with a real release channel.

Key Challenges Addressed

Animated wallpapers sound trivial until you try to build one. Lively targets the specific problems that make naive implementations fall over:

  • Rendering behind the desktop without breaking it. Windows has no public "animated wallpaper" API. Lively attaches wallpaper render surfaces to the desktop's own layer, so icons stay on top, clicks still hit the desktop, and the wallpaper sits where a wallpaper belongs instead of floating as a borderless window that steals focus.
  • Performance cost of always-on rendering. Decoding video 24/7 burns CPU, GPU, and battery. Lively ships playback rules that pause or kill wallpaper rendering when a fullscreen application is focused, when you are on battery, or when you are in a remote desktop session.
  • Format fragmentation. Video loops, GIFs, web pages, and shader demos each need a different rendering engine. Lively unifies them: one library UI, one set of playback rules, multiple render backends under the hood.
  • Screensavers being stuck in 2003. Windows screensavers are still .scr files. Lively lets you reuse any wallpaper from your library as a screensaver, so you skip that legacy pipeline entirely.

Getting Started

Install from the Microsoft Store, the GitHub releases installer, or winget:

winget install rocksdanister.LivelyWallpaper

First useful workflow: launch Lively, pick one of the bundled wallpapers in the library and click it — your desktop is now animated. To use your own content, drag a video file, GIF, or URL onto the Lively window and it gets added to your library. Right-click a library item to set it per-monitor, customize it, or remove it.

Sharp edges you will hit immediately:

  • Web and HTML wallpapers render through Microsoft Edge WebView2. If the WebView2 runtime is missing or broken, web wallpapers render as a blank surface while video wallpapers work fine. Install the WebView2 Evergreen runtime first, then retry.
  • The default playback rules pause the wallpaper when a fullscreen app has focus. The wallpaper looks frozen the moment you alt-tab out of a game — that is the pause rule, not a bug. Check the performance settings before you go hunting for a crash.
  • On multi-monitor setups, a single video stretched across displays means you selected span placement. If it looks distorted, switch to per-display placement and assign a wallpaper to each monitor instead.

Features and Use Cases

Video and GIF wallpapers. The bread-and-butter use case. Drop in a video loop and Lively plays it behind your icons. This is the cheapest path to a live desktop and the easiest to keep performant.

Web pages as wallpapers. Lively renders HTML/CSS/JavaScript as a wallpaper surface. That is the escape hatch for anything dynamic: audio-reactive visualizers, clocks, animated canvases, custom dashboards. If you can build it as a web page, you can run it as your desktop.

Shader wallpapers. GPU shader demos run as wallpapers, which gets you procedural animated backgrounds without shipping video files at all.

Applications and games as wallpaper. Lively can host running applications as the desktop background. Treat this as the power-user lane: it is the most resource-hungry mode and the easiest way to make your desktop feel sluggish if you point it at something heavy.

Screensaver mode. Any wallpaper in your library can double as your screensaver, so one library serves both purposes.

Playback rules. Per-condition pause behavior — fullscreen applications, battery power, remote sessions. This is the feature that makes animated wallpapers viable on a work laptop instead of a desk ornament for desktops only.

Command-line control. Lively exposes a documented command-line interface, so you can script wallpaper changes — rotate wallpapers on a schedule, switch by time of day, or wire it into your own automation.

Ecosystem and Dependencies

Lively stands on well-known engines rather than reinventing rendering:

  • mpv handles video playback. You inherit mpv's codec breadth and hardware-decode support, which is why obscure video formats mostly just work.
  • Microsoft Edge WebView2 renders web wallpapers. You get a current Chromium engine, but every active web wallpaper is a real browser surface with browser-level memory cost.
  • WinUI 3 (Windows App SDK) drives the UI, which is why the app looks native on Windows 11 and why older Windows versions are out of scope.

The practical consequence: wallpaper compatibility problems are usually upstream problems. A video that fails in Lively will usually fail in mpv too, and a web wallpaper that leaks memory will leak in Edge. Debug at that layer, not in Lively's settings.

Architectural Overview

Lively splits into a WinUI 3 front end and wallpaper host processes. The UI manages your library, settings, and playback rules; the actual wallpapers run in separate processes whose render output is attached to the desktop's wallpaper layer.

That process isolation is the design decision that matters most for you. A crashing web wallpaper takes down its own process, not your desktop session and not the Lively UI. It also means each wallpaper's resource use is visible and attributable in Task Manager — when something eats RAM, you can see exactly which wallpaper did it.

The playback-rule engine watches foreground windows and power state, then pauses or resumes the wallpaper processes. Because pausing stops the render loop rather than hiding the window, a paused Lively wallpaper costs close to nothing — which is what makes the fullscreen and battery rules genuinely effective instead of cosmetic.

Pros and Cons

Pros:

  • Free and open source — the obvious comparison is the commercial Wallpaper Engine on Steam, and Lively covers the core use cases without the purchase.
  • Broad format support in one tool: video, GIF, web, shaders, and hosted apps.
  • Playback rules make it usable on laptops and gaming machines, not just idle desktops.
  • Process-isolated wallpapers keep failures contained and resource use visible.
  • Real distribution channels: Microsoft Store, winget, and signed releases.

Cons:

  • Windows-only, and WinUI 3 restricts it to modern Windows 10/11. No macOS, no Linux, ever in the current architecture.
  • Web wallpapers carry full browser memory cost per active monitor. A multi-monitor setup running three web wallpapers is three WebView2 surfaces.
  • The community wallpaper library is small compared to Wallpaper Engine's Steam Workshop. You will import or build more of your own content.
  • Hosted-application wallpapers can be heavy, and there is no sandboxing beyond process separation — only run content you trust.

Comparison and Alternatives

Measured 90-day trends for this project and its alternatives.

GitHub stars

Weekly star gains

63320
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

Lively

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
ScreenPlay

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

149 observed daily rows. Missing days are not fabricated.

DateValue
hidamari

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

153 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Weekly total

740
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Lively

GitHub API observation. Historical values render only when the source provides a real observation for that day.

151 observed daily rows. Missing days are not fabricated.

DateValue
ScreenPlay

GitHub API observation. Historical values render only when the source provides a real observation for that day.

142 observed daily rows. Missing days are not fabricated.

DateValue
hidamari

GitHub API observation. Historical values render only when the source provides a real observation for that day.

142 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Weekly total

320
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Lively

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

151 observed daily rows. Missing days are not fabricated.

DateValue
ScreenPlay

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

142 observed daily rows. Missing days are not fabricated.

DateValue
hidamari

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

142 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Weekly total

210
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Lively

GitHub API observation. Historical values render only when the source provides a real observation for that day.

151 observed daily rows. Missing days are not fabricated.

DateValue
ScreenPlay

GitHub API observation. Historical values render only when the source provides a real observation for that day.

142 observed daily rows. Missing days are not fabricated.

DateValue
hidamari

GitHub API observation. Historical values render only when the source provides a real observation for that day.

142 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Weekly total

320
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Lively

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

151 observed daily rows. Missing days are not fabricated.

DateValue
ScreenPlay

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

142 observed daily rows. Missing days are not fabricated.

DateValue
hidamari

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

142 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Weekly total

110
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Lively

GitHub API observation. Historical values render only when the source provides a real observation for that day.

151 observed daily rows. Missing days are not fabricated.

DateValue
ScreenPlay

GitHub API observation. Historical values render only when the source provides a real observation for that day.

142 observed daily rows. Missing days are not fabricated.

DateValue
hidamari

GitHub API observation. Historical values render only when the source provides a real observation for that day.

142 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed pull request ratio

Weekly average

100500
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Lively

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
ScreenPlay

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

149 observed daily rows. Missing days are not fabricated.

DateValue
hidamari

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

153 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed issues ratio

Weekly average

100500
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Lively

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
ScreenPlay

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

149 observed daily rows. Missing days are not fabricated.

DateValue
hidamari

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

153 observed daily rows. Missing days are not fabricated.

DateValue

Releases

Weekly total

110
Full metrics details

GitHub release published_at events bucketed by UTC day; drafts are excluded.

Lively

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
ScreenPlay

GitHub release published_at events bucketed by UTC day; drafts are excluded.

149 observed daily rows. Missing days are not fabricated.

DateValue
hidamari

GitHub release published_at events bucketed by UTC day; drafts are excluded.

153 observed daily rows. Missing days are not fabricated.

DateValue

Hotness score

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

Lively

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
ScreenPlay

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

149 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
hidamari

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

153 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

Lively

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
ScreenPlay

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

149 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
hidamari

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

153 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

The strongest commercial competitor is Wallpaper Engine, which is closed source and sold on Steam — if you want its Workshop content library, no open-source tool matches it. Among open-source options, ScreenPlay is the closest match: a Qt-based live wallpaper app with cross-platform ambitions covering video, web, and scene wallpapers. On Linux, komorebi provides animated and parallax desktop backgrounds for GNOME-family desktops, and hidamari focuses on video wallpapers for Wayland and X11. If you want minimal instead of full-featured, weebp is a tiny C utility that pins a video player to the Windows desktop and nothing more. On macOS, Plash takes the web-page-as-wallpaper idea and makes it the entire product.

Project Repo Hotness (~6mo) PRs merged (~6mo) Star growth (~6mo)
Lively https://github.com/rocksdanister/lively 4.36 0 7965
ScreenPlay https://github.com/kelteseth/ScreenPlay metrics pending 0 metrics pending
komorebi https://github.com/cheesecakeufo/komorebi metrics pending 0 metrics pending
hidamari https://github.com/jeffshee/hidamari metrics pending 0 metrics pending
weebp https://github.com/Francesco149/weebp metrics pending 0 metrics pending
Plash https://github.com/sindresorhus/Plash metrics pending 0 metrics pending

The best overall alternative is ScreenPlay: it is the only open-source option in this set that matches Lively's multi-format scope (video, web, scenes) while targeting more than one operating system, and it has sustained maintenance behind it.

Conclusion

If you run Windows and want animated wallpapers without buying Wallpaper Engine, install Lively — it covers video, web, and shader wallpapers with playback rules that keep your laptop battery and game frame rates intact. Start at the official Lively site for downloads and documentation. I recommend it as the default open-source choice on Windows.

Do not disable the fullscreen pause rule in Lively's performance settings on a gaming machine — with it off, Lively keeps decoding video behind your game and you pay for it in dropped frames. Do this first: run winget install rocksdanister.LivelyWallpaper, drag one short video loop onto the Lively window, and confirm the wallpaper pauses when you launch a fullscreen app before you build out a multi-monitor setup.

Join the conversation

Reviews · Questions · Posts

Share what you know about lively — write a review from your real experience, ask an implementation question, or publish a post about how you use it.

Share your experience

Write or update your review

Explain what worked, what broke down, and what another team should know before adopting lively.

Write your review now — it saves locally and publishes automatically after you sign in.

Rating
Positive attributes
Negative attributes

Project Q&A

Questions and answers

Browse implementation threads tied directly to rocksdanister/lively. Each question links through to the full answer page.

Q&A No threads yet

Be the first to ask how teams run lively in production. Every question you post becomes a durable, searchable answer page other developers can find.

Ask the first question

Related posts

Posts tagged with the same topics

These posts come from the same topic surface as this repo, so readers can move from project evaluation into practical writeups and migration notes without leaving context.

Posts No topic-linked posts yet

Share how your team uses lively — a migration note, an architecture writeup, or a comparison. Your post reaches everyone browsing these same topics.

Write the first post
Get a weekly email with the hottest new projects in the Ai world.
No Spam. Unsubscribe easily at any time.

Copyright 2018-2026 Awesome Open Source.  All rights reserved.