Skip to content

Building

Dani John edited this page Sep 29, 2026 · 115 revisions

Requirements

Lively is developed using Visual Studio Community 2022 and require:

  1. .NET Core cross-platform development
  2. .NET Desktop Development
  3. WinUI 3 (Unpackaged)
  4. Required latest .NET Desktop SDK and .NET Framework 4.7.2
  5. Windows 10.0.22621 SDK.

Set CPU architecture to x64 from Any CPU.

Project Structure

Lively is split into separate application and communicate over grpc ipc protocol using namedpipes.

The Core (Lively project) is a wpf project and has no dependency on the main UI project.

The wallpaper player plugins are also separate projects and has no dependency on Core or UI project.

Plugins are structured in the Core folder as follows (Required):

  • ../Plugins/UI
  • ../Plugins/WebView2
  • ../Plugins/Mpv
  • ../Plugins/Watchdog

Optional plugins:

  • ../Plugins/Cef
  • ../Plugins/Wmf
  • ../Plugins/Vlc
  • ../Plugins/Libvlc

Create a Plugins folder inside the Core project, build and copy the required plugin there - the core project will copy it to output during build.

Lively's own wallpaper plugin programs are designed to close themselves in the event of unexpected shutdown - for the rest Watchdog is required.

Hierarchy

  • Lively - Core that handles all the system tasks.
  • Lively.Models - Data models shared between projects.
  • Lively.Common - Helper functions and constants shared between projects.
  • Lively.Common.Services - Commonly used services shared between projects.
  • Lively.UI.Shared - Shared project with common UI code.
  • Lively.UI.WinUI - Primary UI front-end.
  • Lively.Grpc.Common - Grpc classes and proto files.
  • Lively.Grpc.Client - Client library used to interact with the core.
  • Lively.ML - Machine Learning library (Example: Depth wallpaper.)
  • Lively.Player.Vlc - libVLC media wallpaper player.
  • Lively.Player.WebView2 - WebView2 html wallpaper player.
  • Lively.Player.CefSharp - CefSharp html wallpaper player.
  • Lively.Player.Wmf - Windows Media Foundation media wallpaper player.
  • Lively.Utility.ConsoleDemo - Sample console project using Lively.Grpc.Client library.
  • Lively.Utility.Watchdog - Program that monitors and cleans up resources in the event Lively core crashes unexpectedly.
  • Lively.Utility.Screensaver - Screensaver utility.
  • Lively.Utility.Commandline - Commandline control utility.

Most class libraries use .NET Standard 2.0 for compatibility.

Some plugins may use .NET Framework 4.7.2 to reduce build size.

Build Process

Installer (x64):

  1. Set IsMsixRelease in Build.props to false.
  2. Include default wallpaper in Lively\Bundle\Wallpapers\ and theme Lively\Bundle\Themes\ folder in filename 0.zip,1.zip..etc
  3. Download mpv player x64 and place in Lively/Plugins/Mpv folder.
  4. Publish win10-x64 build of Lively UI with Frame-work dependent (installer will install runtime on host system.) setting and copy to Lively/Plugins/UI/
  5. For beta build set Constants.ApplicationType.IsTestBuild to true.
  6. Publish win-x64 build of Lively core with Frame-work dependent setting (visual studio will copy bundle and plugins to output.)
  7. Package using Inno installer script.

Microsoft store:

  1. Set IsMsixRelease in Build.props to true.
  2. Same as installer.
  3. Same as installer.
  4. Publish win-x64 build of Lively core with Frame-work included setting.
  5. Copy (4) output to Lively.UI.WinUI\Build folder.
  6. Package and publish Lively.UI.WinUI into msix.
  7. Copy the msix file into src folder and convert to msixbundle file by using cmd: "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86\MakeAppx.exe" bundle /d "C:\src" /p C:\dest\out.msixbundle

Clone this wiki locally