Skip to content

Building

Dani John edited this page Jun 1, 2024 · 101 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.18362 and 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:

  • ../Plugins/UI
  • ../Plugins/Wv2
  • ../Plugins/Cef
  • ../Plugins/Wmf
  • ../Plugins/Mpv
  • ../Plugins/Watchdog

Create a Plugins folder inside the Core project, build and copy the required plugin (for basic functioning Cef, Mpv, UI and Watchdog is recommended) 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.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.ConsoleDemo - Sample console project using Lively.Grpc.Client library.
  • Lively.Watchdog - Program that monitors and cleans up resources in the event Lively core crashes unexpectedly.
  • Lively.Screensaver - Screensaver utility.
  • Lively.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.

External projects

Browser (Lively CefSharp)

Video player (Mpv)

Create wallpaper plugin

Implement IWallpaper and add it to IWallpaperPluginFactory.

Debugging

TODO