<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Engines Overview</title><link>https://sourceforge.net/p/sucrose/wiki/Engines%2520Overview/</link><description>Recent changes to Engines Overview</description><atom:link href="https://sourceforge.net/p/sucrose/wiki/Engines%20Overview/feed" rel="self"/><language>en</language><lastBuildDate>Sat, 04 Jul 2026 04:15:49 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/sucrose/wiki/Engines%20Overview/feed" rel="self" type="application/rss+xml"/><item><title>Engines Overview modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Engines%2520Overview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -131,10 +131,10 @@

     Wallpaper applied
       → Run.Start() reads SucroseInfo.Type

-         ├ Gif         → engine = setting "Gif"         (default MpvPlayer; or Vexana/Xavier/WebView/CefSharp)
+         ├ Gif         → engine = setting "Gif"         (default MpvPlayer; or Vexana/Xavier/WebView/CefSharp/VlcPlayer)
          ├ Url         → engine = setting "Url"         (default CefSharp; or WebView)
          ├ Web         → engine = setting "Web"         (default CefSharp; or WebView)
-         ├ Video       → engine = setting "Video"       (default MpvPlayer; or Nebula/WebView/CefSharp)
+         ├ Video       → engine = setting "Video"       (default MpvPlayer; or Nebula/WebView/CefSharp/VlcPlayer)
          ├ YouTube     → engine = setting "YouTube"     (default CefSharp; or WebView)
          └ Application → engine = setting "Application"  (Aurora only)
       → Commandog launches the engine .exe
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:49 -0000</pubDate><guid>https://sourceforge.net09ab460e12c4810016ed3d17fa58f6587dadfc69</guid></item><item><title>Engines Overview modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Engines%2520Overview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -1,10 +1,10 @@
 # Engines Overview

-Sucrose renders every wallpaper through one of **seven separate rendering executables** ("Live engines"), each a standalone WPF process living under `src/Live/`. A wallpaper has a **type** (one of six), and Sucrose maps each type to a configurable engine. When you apply a wallpaper, the resolved engine `.exe` is launched as a child process and draws into the desktop behind your icons. This page explains the engine roster, the `EngineType` enum, the per-type allowed-engine rules, the default mappings, how an engine is selected and launched, and how it attaches to the desktop.
+Sucrose renders every wallpaper through one of **eight separate rendering executables** ("Live engines"), each a standalone WPF process living under `src/Live/`. A wallpaper has a **type** (one of six), and Sucrose maps each type to a configurable engine. When you apply a wallpaper, the resolved engine `.exe` is launched as a child process and draws into the desktop behind your icons. This page explains the engine roster, the `EngineType` enum, the per-type allowed-engine rules, the default mappings, how an engine is selected and launched, and how it attaches to the desktop.

 ## Table of contents

-- [The seven engines](#the-seven-engines)
+- [The eight engines](#the-eight-engines)

 - [Wallpaper types](#wallpaper-types)
 - [The `EngineType` enum](#the-enginetype-enum)
 - [Per-type allowed engines and defaults](#per-type-allowed-engines-and-defaults)
@@ -16,13 +16,14 @@
 - [Audio-reactive and system-status wallpapers](#audio-reactive-and-system-status-wallpapers)
 - [See also](#see-also)

-## The seven engines
+## The eight engines

-Each engine is a distinct process under `src/Live/`. They are branded with internal codenames (Aurora, Nebula, Vexana, Xavier) or named after their underlying tech (WebView, CefSharp, MpvPlayer).
+Each engine is a distinct process under `src/Live/`. They are branded with internal codenames (Aurora, Nebula, Vexana, Xavier) or named after their underlying tech (WebView, CefSharp, MpvPlayer, VlcPlayer).

 | Engine project | Assembly | Underlying tech | Renders these wallpaper types |
 |---|---|---|---|
 | `Sucrose.Live.MpvPlayer` | `Sucrose.Live.MpvPlayer.exe` | libmpv (native, via `Sucrose.Mpv.NET`) | Gif, Video |
+| `Sucrose.Live.VlcPlayer` | `Sucrose.Live.VlcPlayer.exe` | libVLC (native, via LibVLCSharp.WPF) | Gif, Video |
 | `Sucrose.Live.WebView` | `Sucrose.Live.WebView.exe` | Microsoft Edge WebView2 (Chromium) | Gif, Url, Web, Video, YouTube |
 | `Sucrose.Live.CefSharp` | `Sucrose.Live.CefSharp.exe` | CEF / CefSharp (Chromium Embedded Framework, windowed HwndHost) | Gif, Url, Web, Video, YouTube |
 | `Sucrose.Live.Nebula` | `Sucrose.Live.Nebula.exe` | WPF `MediaElement` (Windows Media / DirectShow) | Video |
@@ -30,7 +31,7 @@
 | `Sucrose.Live.Xavier` | `Sucrose.Live.Xavier.exe` | `Sucrose.XamlAnimatedGif` (XAML attached behavior) | Gif |
 | `Sucrose.Live.Aurora` | `Sucrose.Live.Aurora.exe` | External process embedding (reparents a real app/game per monitor) | Application |

-Each engine project defines the `ENGINE` preprocessor symbol plus an engine-specific symbol (`LIVE_MPVPLAYER`, `LIVE_WEBVIEW`, `LIVE_CEFSHARP`, `LIVE_NEBULA`, `LIVE_VEXANA`, `LIVE_XAVIER`, `LIVE_AURORA`). Shared rendering logic lives in `src/Shared/Engine/Sucrose.Shared.Engine.*` shared-item projects, imported into the matching engine `.csproj`; the common base is `Sucrose.Shared.Engine`.
+Each engine project defines the `ENGINE` preprocessor symbol plus an engine-specific symbol (`LIVE_MPVPLAYER`, `LIVE_VLCPLAYER`, `LIVE_WEBVIEW`, `LIVE_CEFSHARP`, `LIVE_NEBULA`, `LIVE_VEXANA`, `LIVE_XAVIER`, `LIVE_AURORA`). Shared rendering logic lives in `src/Shared/Engine/Sucrose.Shared.Engine.*` shared-item projects, imported into the matching engine `.csproj`; the common base is `Sucrose.Shared.Engine`.

     :::mermaid
     flowchart LR
@@ -63,7 +64,7 @@
 `src/Shared/Sucrose.Shared.Dependency/Enum/EngineType.cs` lists every engine. The **order matters** because the values are used as integer indices (for example, into the `EngineLive` path dictionary):

     :::csharp

-    internal enum EngineType { AuroraLive, NebulaLive, VexanaLive, XavierLive, WebViewLive, CefSharpLive, MpvPlayerLive }
+    internal enum EngineType { AuroraLive, NebulaLive, VexanaLive, XavierLive, WebViewLive, CefSharpLive, MpvPlayerLive, VlcPlayerLive }

 | Index | Member | Engine |
 |---|---|---|
@@ -74,6 +75,7 @@
 | 4 | `WebViewLive` | WebView |
 | 5 | `CefSharpLive` | CefSharp |
 | 6 | `MpvPlayerLive` | MpvPlayer |
+| 7 | `VlcPlayerLive` | VlcPlayer |

 ## Per-type allowed engines and defaults

@@ -81,10 +83,10 @@

 | Type | Allowed engines (enum) | Default |
 |---|---|---|
-| `GifEngineType` | Vexana, Xavier, WebView, CefSharp, MpvPlayer | **MpvPlayer** |
+| `GifEngineType` | Vexana, Xavier, WebView, CefSharp, MpvPlayer, VlcPlayer | **MpvPlayer** |
 | `UrlEngineType` | WebView, CefSharp | **CefSharp** |
 | `WebEngineType` | WebView, CefSharp | **CefSharp** |
-| `VideoEngineType` | Nebula, WebView, CefSharp, MpvPlayer | **MpvPlayer** |
+| `VideoEngineType` | Nebula, WebView, CefSharp, MpvPlayer, VlcPlayer | **MpvPlayer** |
 | `YouTubeEngineType` | WebView, CefSharp | **CefSharp** |
 | `ApplicationEngineType` | Aurora (only) | **Aurora** |

@@ -160,13 +162,14 @@

 All engines share the same `App.xaml.cs` skeleton: wire up the exception handlers (Thread, FirstChance, Unhandled, UnobservedTask, Dispatcher) routed to `Sucrose.Shared.Watchdog`; on startup run the single-instance mutex check (`SMMRM.Live`), apply security, then `Checker()`/`Configure()`; `Configure()` loads the `SucroseInfo` JSON, verifies `Info.AppVersion &amp;lt;= app version`, resolves `Source`, then switches on `Info.Type` and shows the matching window. By default the `Backgroundog` flags `PipeRequired`, `AudioRequired`, `SignalRequired`, `PausePerformance`, and `TransmissionRequired` are off; Web wallpapers turn the audio/IPC flags back on.

-The `PropertiesType` enum (`Shared.Dependency/Enum/PropertiesType.cs`) — `Base, WebView, CefSharp, MpvPlayer` — determines which property-panel JSON a wallpaper exposes in the Portal. See [Customizing Wallpaper](Customizing-Wallpaper) and [Property Service](Property-Service).
+The `PropertiesType` enum (`Shared.Dependency/Enum/PropertiesType.cs`) — `Base, WebView, CefSharp, MpvPlayer, VlcPlayer` — determines which property-panel JSON a wallpaper exposes in the Portal. See [Customizing Wallpaper](Customizing-Wallpaper) and [Property Service](Property-Service).

 ## Platform support

 All engines target `.NET 10.0-windows` (WPF + WinForms interop) and build for **x86, x64, ARM64**, each with separate output folders. Engine-specific notes:


 - **MpvPlayer** ships its own `libmpv-{arch}.dll`; needs Windows 10 1607+ (Redstone 1).
+- **VlcPlayer** ships its own bundled libVLC (`VideoLAN.LibVLC.Windows`, one architecture per build); no OS-version check and no runtime download.
 - **WebView** needs the Edge WebView2 runtime ≥ `131.0.2903.70` (auto-download offered).
 - **CefSharp** needs the VC++ Redistributable ≥ `14.40.33816.0` (auto-download offered); CEF native binaries ship with the engine.
 - **Nebula** depends on OS media codecs.
@@ -182,6 +185,7 @@


 - [Engine Comparison](Engine-Comparison)
 - [Engine MpvPlayer](Engine-MpvPlayer)
+- [Engine VlcPlayer](Engine-VlcPlayer)
 - [Engine WebView](Engine-WebView)
 - [Engine CefSharp](Engine-CefSharp)
 - [Engine Nebula](Engine-Nebula)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:48 -0000</pubDate><guid>https://sourceforge.net4c78d11180a90e4fd4849eb055d5e7251ed46bb2</guid></item><item><title>Engines Overview modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Engines%2520Overview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -24,7 +24,7 @@
 |---|---|---|---|
 | `Sucrose.Live.MpvPlayer` | `Sucrose.Live.MpvPlayer.exe` | libmpv (native, via `Sucrose.Mpv.NET`) | Gif, Video |
 | `Sucrose.Live.WebView` | `Sucrose.Live.WebView.exe` | Microsoft Edge WebView2 (Chromium) | Gif, Url, Web, Video, YouTube |
-| `Sucrose.Live.CefSharp` | `Sucrose.Live.CefSharp.exe` | CEF / CefSharp (Chromium Embedded Framework, offscreen) | Gif, Url, Web, Video, YouTube |
+| `Sucrose.Live.CefSharp` | `Sucrose.Live.CefSharp.exe` | CEF / CefSharp (Chromium Embedded Framework, windowed HwndHost) | Gif, Url, Web, Video, YouTube |
 | `Sucrose.Live.Nebula` | `Sucrose.Live.Nebula.exe` | WPF `MediaElement` (Windows Media / DirectShow) | Video |
 | `Sucrose.Live.Vexana` | `Sucrose.Live.Vexana.exe` | WPF image + in-house frame-by-frame GIF decode | Gif |
 | `Sucrose.Live.Xavier` | `Sucrose.Live.Xavier.exe` | `Sucrose.XamlAnimatedGif` (XAML attached behavior) | Gif |
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:46 -0000</pubDate><guid>https://sourceforge.neta2491a15097938e8b417cddbc0488b989eab5db3</guid></item><item><title>Engines Overview modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Engines%2520Overview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -32,7 +32,13 @@

 Each engine project defines the `ENGINE` preprocessor symbol plus an engine-specific symbol (`LIVE_MPVPLAYER`, `LIVE_WEBVIEW`, `LIVE_CEFSHARP`, `LIVE_NEBULA`, `LIVE_VEXANA`, `LIVE_XAVIER`, `LIVE_AURORA`). Shared rendering logic lives in `src/Shared/Engine/Sucrose.Shared.Engine.*` shared-item projects, imported into the matching engine `.csproj`; the common base is `Sucrose.Shared.Engine`.

-&amp;gt; 🖼️ **Diagram needed:** Type → engine → process flow: a wallpaper's `SucroseInfo.json` Type feeds `Run.cs`, which resolves an engine setting and asks Commandog to launch `Sucrose.Live.&amp;lt;name&amp;gt;.exe`, which then attaches to the desktop.

+    :::mermaid
+    flowchart LR
+        Info["SucroseInfo.json&lt;br/&gt;Type (0-5)"] --&amp;gt; Run["Run.cs&lt;br/&gt;resolve engine setting"]
+        Run --&amp;gt; Cmd["Commandog&lt;br/&gt;✔Live✖&amp;lt;enginePath&amp;gt;"]
+        Cmd --&amp;gt; Exe["Sucrose.Live.&amp;lt;Name&amp;gt;.exe"]
+        Exe --&amp;gt; Cfg["App.Configure()&lt;br/&gt;switch on Type, show Window"]
+        Cfg --&amp;gt; Attach["Event/Handler.cs&lt;br/&gt;attach behind desktop icons&lt;br/&gt;(WorkerW / Progman)"]

 ## Wallpaper types

&amp;lt;/name&amp;gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:43 -0000</pubDate><guid>https://sourceforge.net767da73394a94bdcf067f1a19c0a9afa82221f16</guid></item><item><title>Engines Overview modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Engines%2520Overview/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="h-engines-overview"&gt;Engines Overview&lt;/h1&gt;
&lt;p&gt;Sucrose renders every wallpaper through one of &lt;strong&gt;seven separate rendering executables&lt;/strong&gt; ("Live engines"), each a standalone WPF process living under &lt;code&gt;src/Live/&lt;/code&gt;. A wallpaper has a &lt;strong&gt;type&lt;/strong&gt; (one of six), and Sucrose maps each type to a configurable engine. When you apply a wallpaper, the resolved engine &lt;code&gt;.exe&lt;/code&gt; is launched as a child process and draws into the desktop behind your icons. This page explains the engine roster, the &lt;code&gt;EngineType&lt;/code&gt; enum, the per-type allowed-engine rules, the default mappings, how an engine is selected and launched, and how it attaches to the desktop.&lt;/p&gt;
&lt;h2 id="h-table-of-contents"&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-seven-engines"&gt;The seven engines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#wallpaper-types"&gt;Wallpaper types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-enginetype-enum"&gt;The &lt;code&gt;EngineType&lt;/code&gt; enum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#per-type-allowed-engines-and-defaults"&gt;Per-type allowed engines and defaults&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#where-you-change-engines"&gt;Where you change engines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#how-an-engine-is-selected-and-launched"&gt;How an engine is selected and launched&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#desktop-attach-workerw--progman"&gt;Desktop attach (WorkerW / Progman)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#shared-engine-layer"&gt;Shared engine layer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#platform-support"&gt;Platform support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#audio-reactive-and-system-status-wallpapers"&gt;Audio-reactive and system-status wallpapers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#see-also"&gt;See also&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-the-seven-engines"&gt;The seven engines&lt;/h2&gt;
&lt;p&gt;Each engine is a distinct process under &lt;code&gt;src/Live/&lt;/code&gt;. They are branded with internal codenames (Aurora, Nebula, Vexana, Xavier) or named after their underlying tech (WebView, CefSharp, MpvPlayer).&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Engine project&lt;/th&gt;
&lt;th&gt;Assembly&lt;/th&gt;
&lt;th&gt;Underlying tech&lt;/th&gt;
&lt;th&gt;Renders these wallpaper types&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.MpvPlayer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.MpvPlayer.exe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;libmpv (native, via &lt;code&gt;Sucrose.Mpv.NET&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Gif, Video&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.WebView&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.WebView.exe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Microsoft Edge WebView2 (Chromium)&lt;/td&gt;
&lt;td&gt;Gif, Url, Web, Video, YouTube&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.CefSharp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.CefSharp.exe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;CEF / CefSharp (Chromium Embedded Framework, offscreen)&lt;/td&gt;
&lt;td&gt;Gif, Url, Web, Video, YouTube&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.Nebula&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.Nebula.exe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;WPF &lt;code&gt;MediaElement&lt;/code&gt; (Windows Media / DirectShow)&lt;/td&gt;
&lt;td&gt;Video&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.Vexana&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.Vexana.exe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;WPF image + in-house frame-by-frame GIF decode&lt;/td&gt;
&lt;td&gt;Gif&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.Xavier&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.Xavier.exe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sucrose.XamlAnimatedGif&lt;/code&gt; (XAML attached behavior)&lt;/td&gt;
&lt;td&gt;Gif&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.Aurora&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Live.Aurora.exe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;External process embedding (reparents a real app/game per monitor)&lt;/td&gt;
&lt;td&gt;Application&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Each engine project defines the &lt;code&gt;ENGINE&lt;/code&gt; preprocessor symbol plus an engine-specific symbol (&lt;code&gt;LIVE_MPVPLAYER&lt;/code&gt;, &lt;code&gt;LIVE_WEBVIEW&lt;/code&gt;, &lt;code&gt;LIVE_CEFSHARP&lt;/code&gt;, &lt;code&gt;LIVE_NEBULA&lt;/code&gt;, &lt;code&gt;LIVE_VEXANA&lt;/code&gt;, &lt;code&gt;LIVE_XAVIER&lt;/code&gt;, &lt;code&gt;LIVE_AURORA&lt;/code&gt;). Shared rendering logic lives in &lt;code&gt;src/Shared/Engine/Sucrose.Shared.Engine.*&lt;/code&gt; shared-item projects, imported into the matching engine &lt;code&gt;.csproj&lt;/code&gt;; the common base is &lt;code&gt;Sucrose.Shared.Engine&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🖼️ &lt;strong&gt;Diagram needed:&lt;/strong&gt; Type → engine → process flow: a wallpaper's &lt;code&gt;SucroseInfo.json&lt;/code&gt; Type feeds &lt;code&gt;Run.cs&lt;/code&gt;, which resolves an engine setting and asks Commandog to launch &lt;code&gt;Sucrose.Live.&amp;lt;Name&amp;gt;.exe&lt;/code&gt;, which then attaches to the desktop.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="h-wallpaper-types"&gt;Wallpaper types&lt;/h2&gt;
&lt;p&gt;The six wallpaper types are defined in &lt;code&gt;src/Shared/Sucrose.Shared.Dependency/Enum/WallpaperType.cs&lt;/code&gt;. The integer order is significant because &lt;code&gt;Type&lt;/code&gt; is stored as an integer in &lt;code&gt;SucroseInfo.json&lt;/code&gt;:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;internal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;enum&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;WallpaperType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Gif&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Web&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Video&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;YouTube&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Application&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Gif&lt;/td&gt;
&lt;td&gt;Animated GIF file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Url&lt;/td&gt;
&lt;td&gt;A remote web address shown as a single static page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Web&lt;/td&gt;
&lt;td&gt;An interactive local web theme (HTML/CSS/JS bundle, supports audio reactivity + system-status APIs)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Video&lt;/td&gt;
&lt;td&gt;A local video file (mp4, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;YouTube&lt;/td&gt;
&lt;td&gt;A YouTube video/playlist URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Application&lt;/td&gt;
&lt;td&gt;An external program/game run as the wallpaper&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;See &lt;a href="./Wallpaper-Types"&gt;Wallpaper Types&lt;/a&gt; for the user-facing description of each.&lt;/p&gt;
&lt;h2 id="h-the-enginetype-enum"&gt;The &lt;code&gt;EngineType&lt;/code&gt; enum&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;src/Shared/Sucrose.Shared.Dependency/Enum/EngineType.cs&lt;/code&gt; lists every engine. The &lt;strong&gt;order matters&lt;/strong&gt; because the values are used as integer indices (for example, into the &lt;code&gt;EngineLive&lt;/code&gt; path dictionary):&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;internal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;enum&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;EngineType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;AuroraLive&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;NebulaLive&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;VexanaLive&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XavierLive&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;WebViewLive&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CefSharpLive&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MpvPlayerLive&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Index&lt;/th&gt;
&lt;th&gt;Member&lt;/th&gt;
&lt;th&gt;Engine&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;AuroraLive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Aurora&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;NebulaLive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Nebula&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;VexanaLive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vexana&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;XavierLive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Xavier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WebViewLive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;WebView&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CefSharpLive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;CefSharp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;code&gt;MpvPlayerLive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;MpvPlayer&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="h-per-type-allowed-engines-and-defaults"&gt;Per-type allowed engines and defaults&lt;/h2&gt;
&lt;p&gt;Each type has a sub-enum (&lt;code&gt;GifEngineType&lt;/code&gt;, &lt;code&gt;UrlEngineType&lt;/code&gt;, etc.) whose members alias back to &lt;code&gt;EngineType&lt;/code&gt;. Only those members appear as choices in the Portal for that type, so you can never assign an incompatible engine through the UI. The defaults are the fields in &lt;code&gt;src/Shared/Sucrose.Shared.Space/Manage/Internal.cs&lt;/code&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Allowed engines (enum)&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GifEngineType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vexana, Xavier, WebView, CefSharp, MpvPlayer&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MpvPlayer&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;UrlEngineType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;WebView, CefSharp&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;CefSharp&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;WebEngineType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;WebView, CefSharp&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;CefSharp&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VideoEngineType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Nebula, WebView, CefSharp, MpvPlayer&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MpvPlayer&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;YouTubeEngineType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;WebView, CefSharp&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;CefSharp&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ApplicationEngineType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Aurora (only)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Aurora&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The default fields, verbatim:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEUET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;UrlEngine&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEUET&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CefSharp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEWET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;WebEngine&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEWET&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CefSharp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEGET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;GifEngine&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEGET&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MpvPlayer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEVET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;VideoEngine&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEVET&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MpvPlayer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEAET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ApplicationEngine&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEAET&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Aurora&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEYTET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;YouTubeEngine&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSDEYTET&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CefSharp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;In short: the default Gif/Video engine is &lt;strong&gt;MpvPlayer&lt;/strong&gt;, the default Url/Web/YouTube engine is &lt;strong&gt;CefSharp&lt;/strong&gt;, and &lt;strong&gt;WebView&lt;/strong&gt; is the everything-capable alternative for browser content.&lt;/p&gt;
&lt;h2 id="h-where-you-change-engines"&gt;Where you change engines&lt;/h2&gt;
&lt;p&gt;Open the Portal and go to &lt;strong&gt;Settings → Wallpaper&lt;/strong&gt;. The page (ViewModel &lt;code&gt;WallpaperSettingViewModel.cs&lt;/code&gt;) builds ComboBoxes for &lt;strong&gt;GifPlayer&lt;/strong&gt; and &lt;strong&gt;VideoPlayer&lt;/strong&gt; (in the "Extensions" area) and &lt;strong&gt;UrlPlayer, WebPlayer, YouTubePlayer, ApplicationPlayer&lt;/strong&gt; (in the "Engines" area). Each selection writes an engine setting key.&lt;/p&gt;
&lt;p&gt;The engine setting keys (&lt;code&gt;src/Library/Sucrose.Memory/Manage/Constant/Engine.cs&lt;/code&gt;) are: &lt;code&gt;Gif&lt;/code&gt;, &lt;code&gt;Url&lt;/code&gt;, &lt;code&gt;Web&lt;/code&gt;, &lt;code&gt;Video&lt;/code&gt;, &lt;code&gt;YouTube&lt;/code&gt;, &lt;code&gt;Application&lt;/code&gt;. The effective value is resolved by &lt;code&gt;src/Shared/Sucrose.Shared.Dependency/Manage/Manager/Engine.cs&lt;/code&gt;, which falls back to the Space defaults above when a key is unset.&lt;/p&gt;
&lt;p&gt;See &lt;a href="./Choosing-Engines"&gt;Choosing Engines&lt;/a&gt; for the task-oriented walkthrough and &lt;a href="./Settings-Wallpaper"&gt;Settings Wallpaper&lt;/a&gt; for the full key list.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;📷 &lt;strong&gt;Screenshot needed:&lt;/strong&gt; Portal → Settings → Wallpaper page showing the per-type engine selectors (GifPlayer / VideoPlayer / UrlPlayer / WebPlayer / YouTubePlayer / ApplicationPlayer).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="h-how-an-engine-is-selected-and-launched"&gt;How an engine is selected and launched&lt;/h2&gt;
&lt;p&gt;When a wallpaper is applied, &lt;code&gt;src/Shared/Sucrose.Shared.Live/Helper/Run.cs&lt;/code&gt; reads the wallpaper's &lt;code&gt;Info.Type&lt;/code&gt; and runs the resolved engine path through &lt;code&gt;Commandog&lt;/code&gt;:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;switch (Info.Type) {
  case Gif:         run EngineLive[Engine.Gif]
  case Url:         run EngineLive[Engine.Url]
  case Web:         run EngineLive[Engine.Web]
  case Video:       run EngineLive[Engine.Video]
  case YouTube:     run EngineLive[Engine.YouTube]
  case Application: run EngineLive[Engine.Application]
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The command sent to Commandog takes the form &lt;code&gt;{StartCommand}{CommandType.Live}{ValueSeparator}{enginePath}&lt;/code&gt;. If &lt;code&gt;PerformanceCounter&lt;/code&gt; is enabled, &lt;code&gt;Backgroundog&lt;/code&gt; is also started. Engine &lt;code&gt;.exe&lt;/code&gt; paths come from &lt;code&gt;Shared.Space.Manage.Internal.EngineLive&lt;/code&gt;, a &lt;code&gt;Dictionary&amp;lt;EngineType, string&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The decision tree, in words:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;Wallpaper applied
  → Run.Start() reads SucroseInfo.Type
     ├ Gif         → engine = setting "Gif"         (default MpvPlayer; or Vexana/Xavier/WebView/CefSharp)
     ├ Url         → engine = setting "Url"         (default CefSharp; or WebView)
     ├ Web         → engine = setting "Web"         (default CefSharp; or WebView)
     ├ Video       → engine = setting "Video"       (default MpvPlayer; or Nebula/WebView/CefSharp)
     ├ YouTube     → engine = setting "YouTube"     (default CefSharp; or WebView)
     └ Application → engine = setting "Application"  (Aurora only)
  → Commandog launches the engine .exe
  → Engine App.Configure() switches on Type again and shows the matching Window
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Switching wallpapers kills the previous engine process and launches the new one via Commandog. If a type is somehow assigned to an engine that cannot render it, that engine's &lt;code&gt;Configure()&lt;/code&gt; &lt;code&gt;switch&lt;/code&gt; hits &lt;code&gt;default → Close()&lt;/code&gt; and nothing displays — the Portal UI prevents this by only offering compatible engines per type. See &lt;a href="./Commandog-Dispatcher"&gt;Commandog Dispatcher&lt;/a&gt; for the broker that performs the launch.&lt;/p&gt;
&lt;h2 id="h-desktop-attach-workerw-progman"&gt;Desktop attach (WorkerW / Progman)&lt;/h2&gt;
&lt;p&gt;After an engine window loads, it attaches itself behind the desktop icons. The shared &lt;code&gt;Event/Handler.cs&lt;/code&gt; handles &lt;code&gt;WindowLoaded&lt;/code&gt;, &lt;code&gt;ContentRendered&lt;/code&gt;, &lt;code&gt;DisplaySettingsChanged&lt;/code&gt;, and the application-embed events, performing the WorkerW/Progman handling that places the rendering window beneath the desktop icon layer. Display changes (resolution, monitor add/remove) re-trigger the attach via &lt;code&gt;DisplaySettingsChanged&lt;/code&gt;. See &lt;a href="./Multi-Monitor"&gt;Multi-Monitor&lt;/a&gt; for per-display behavior and &lt;a href="./Lifecycle"&gt;Lifecycle&lt;/a&gt; for the full process startup sequence.&lt;/p&gt;
&lt;h2 id="h-shared-engine-layer"&gt;Shared engine layer&lt;/h2&gt;
&lt;p&gt;Every engine imports the base &lt;code&gt;Sucrose.Shared.Engine&lt;/code&gt; shared-item project, which provides the common skeleton and helpers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Helper/Run.cs&lt;/code&gt; — &lt;code&gt;Control()&lt;/code&gt;: per-tick housekeeping called from each engine's &lt;code&gt;GeneralTimer&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Helper/Awakening.cs&lt;/code&gt; — the "Stay Awake" execution-state loop.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Helper/Crashing.cs&lt;/code&gt; — crash / Explorer recovery (&lt;code&gt;CrashExplorer&lt;/code&gt; setting).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Helper/Cycyling.cs&lt;/code&gt; — wallpaper cycling / shuffle / loop scheduling.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Helper/Data.cs&lt;/code&gt; — &lt;code&gt;GetLoop()&lt;/code&gt;, &lt;code&gt;GetVolume()&lt;/code&gt;, &lt;code&gt;GetStretch()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Helper/Source.cs&lt;/code&gt; — resolves &lt;code&gt;Info.Source&lt;/code&gt; to a URL/path (screen layout, multi-monitor, screenshots, base64).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Helper/Volume.cs&lt;/code&gt; — volume monitoring loop.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Helper/Properties.cs&lt;/code&gt; — property-file watcher + JS property injection.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Manage/Internal.cs&lt;/code&gt; — global engine state (&lt;code&gt;Info&lt;/code&gt;, &lt;code&gt;Host&lt;/code&gt;, &lt;code&gt;Properties&lt;/code&gt;, &lt;code&gt;Compatible&lt;/code&gt;, &lt;code&gt;WindowHandle&lt;/code&gt;, timers) and the base64 panel definitions and config defaults.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All engines share the same &lt;code&gt;App.xaml.cs&lt;/code&gt; skeleton: wire up the exception handlers (Thread, FirstChance, Unhandled, UnobservedTask, Dispatcher) routed to &lt;code&gt;Sucrose.Shared.Watchdog&lt;/code&gt;; on startup run the single-instance mutex check (&lt;code&gt;SMMRM.Live&lt;/code&gt;), apply security, then &lt;code&gt;Checker()&lt;/code&gt;/&lt;code&gt;Configure()&lt;/code&gt;; &lt;code&gt;Configure()&lt;/code&gt; loads the &lt;code&gt;SucroseInfo&lt;/code&gt; JSON, verifies &lt;code&gt;Info.AppVersion &amp;lt;= app version&lt;/code&gt;, resolves &lt;code&gt;Source&lt;/code&gt;, then switches on &lt;code&gt;Info.Type&lt;/code&gt; and shows the matching window. By default the &lt;code&gt;Backgroundog&lt;/code&gt; flags &lt;code&gt;PipeRequired&lt;/code&gt;, &lt;code&gt;AudioRequired&lt;/code&gt;, &lt;code&gt;SignalRequired&lt;/code&gt;, &lt;code&gt;PausePerformance&lt;/code&gt;, and &lt;code&gt;TransmissionRequired&lt;/code&gt; are off; Web wallpapers turn the audio/IPC flags back on.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;PropertiesType&lt;/code&gt; enum (&lt;code&gt;Shared.Dependency/Enum/PropertiesType.cs&lt;/code&gt;) — &lt;code&gt;Base, WebView, CefSharp, MpvPlayer&lt;/code&gt; — determines which property-panel JSON a wallpaper exposes in the Portal. See &lt;a href="./Customizing-Wallpaper"&gt;Customizing Wallpaper&lt;/a&gt; and &lt;a href="./Property-Service"&gt;Property Service&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="h-platform-support"&gt;Platform support&lt;/h2&gt;
&lt;p&gt;All engines target &lt;code&gt;.NET 10.0-windows&lt;/code&gt; (WPF + WinForms interop) and build for &lt;strong&gt;x86, x64, ARM64&lt;/strong&gt;, each with separate output folders. Engine-specific notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MpvPlayer&lt;/strong&gt; ships its own &lt;code&gt;libmpv-{arch}.dll&lt;/code&gt;; needs Windows 10 1607+ (Redstone 1).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebView&lt;/strong&gt; needs the Edge WebView2 runtime ≥ &lt;code&gt;131.0.2903.70&lt;/code&gt; (auto-download offered).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CefSharp&lt;/strong&gt; needs the VC++ Redistributable ≥ &lt;code&gt;14.40.33816.0&lt;/code&gt; (auto-download offered); CEF native binaries ship with the engine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nebula&lt;/strong&gt; depends on OS media codecs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vexana / Xavier / Aurora&lt;/strong&gt; are pure managed (WPF) + Skylark; no extra native runtime beyond .NET.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See &lt;a href="./System-Requirements"&gt;System Requirements&lt;/a&gt; and &lt;a href="./Runtime-Dependencies"&gt;Runtime Dependencies&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="h-audio-reactive-and-system-status-wallpapers"&gt;Audio-reactive and system-status wallpapers&lt;/h2&gt;
&lt;p&gt;Only the &lt;strong&gt;browser engines&lt;/strong&gt; (WebView and CefSharp) rendering the &lt;strong&gt;Web&lt;/strong&gt; type support live data injection. A theme declares the data hooks it wants in a &lt;code&gt;SucroseCompatible.json&lt;/code&gt;; if &lt;code&gt;SystemAudio&lt;/code&gt; is declared, the engine flips &lt;code&gt;Backgroundog&lt;/code&gt;'s &lt;code&gt;AudioRequired&lt;/code&gt; flag, opens a communication channel, and injects audio/system data into the page via &lt;code&gt;ExecuteScriptAsync&lt;/code&gt;. Video, Gif, and Application engines do not inject system data (Aurora apps receive volume only; MpvPlayer and Nebula are pure media playback). See &lt;a href="./Create-Audio-API"&gt;Create Audio API&lt;/a&gt;, &lt;a href="./Create-System-API"&gt;Create System API&lt;/a&gt;, and &lt;a href="./Create-Web-Architecture"&gt;Create Web Architecture&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="h-see-also"&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="./Engine-Comparison"&gt;Engine Comparison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Engine-MpvPlayer"&gt;Engine MpvPlayer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Engine-WebView"&gt;Engine WebView&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Engine-CefSharp"&gt;Engine CefSharp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Engine-Nebula"&gt;Engine Nebula&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Choosing-Engines"&gt;Choosing Engines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Wallpaper-Types"&gt;Wallpaper Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Architecture-Overview"&gt;Architecture Overview&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:27 -0000</pubDate><guid>https://sourceforge.net17eccdbac9fadd8ced806b6df4982ebbafdb171b</guid></item></channel></rss>