-
-
Notifications
You must be signed in to change notification settings - Fork 60
Engine Comparison
This page is a side-by-side matrix of Sucrose's seven render engines — their underlying technology, the wallpaper types each can render, runtime requirements, interactivity, and support for the audio-reactive / system-status JavaScript APIs. Use it to decide which engine to assign per type on the Settings → Wallpaper page. Each wallpaper has a type (Gif, Url, Web, Video, YouTube, Application), and Sucrose maps that type to a configurable engine, launching the chosen .exe as a child process behind the desktop icons.
Audience: users and developers. For the conceptual overview and launch mechanics, see Engines-Overview.
- The seven engines
- Engine enum order
- Type → allowed engines
- Full capability matrix
- Runtime requirement matrix
- Hardware acceleration behavior
- Interactivity and data-API support
- Choosing an engine
- See also
| Engine | Assembly | Underlying tech | Renders |
|---|---|---|---|
| MpvPlayer | Sucrose.Live.MpvPlayer.exe |
libmpv (native, via Sucrose.Mpv.NET) |
Gif, Video |
| WebView | Sucrose.Live.WebView.exe |
Microsoft Edge WebView2 (Chromium) | Gif, Url, Web, Video, YouTube |
| CefSharp | Sucrose.Live.CefSharp.exe |
CEF / CefSharp (Chromium Embedded, offscreen) | Gif, Url, Web, Video, YouTube |
| Nebula | Sucrose.Live.Nebula.exe |
WPF MediaElement (Windows Media / DirectShow) |
Video |
| Vexana | Sucrose.Live.Vexana.exe |
WPF image + in-house frame-by-frame GIF decode | Gif |
| Xavier | Sucrose.Live.Xavier.exe |
Sucrose.XamlAnimatedGif (XAML attached behavior) |
Gif |
| Aurora | Sucrose.Live.Aurora.exe |
External process embedding (per monitor) | Application |
🖼️ Diagram needed: A matrix/grid graphic mapping the six wallpaper types (rows) to the seven engines (columns), with cells marked "default" or "available".
The internal EngineType enum (src/Shared/Sucrose.Shared.Dependency/Enum/EngineType.cs) defines the canonical engine order, which is used as integer indices:
internal enum EngineType { AuroraLive, NebulaLive, VexanaLive, XavierLive, WebViewLive, CefSharpLive, MpvPlayerLive }The six wallpaper types are defined in WallpaperType.cs:
internal enum WallpaperType { Gif, Url, Web, Video, YouTube, Application }Per-type allowed engines are sub-enums whose values alias back to EngineType. The default for each type comes from src/Shared/Sucrose.Shared.Space/Manage/Internal.cs:
| Type | Allowed engines | Default |
|---|---|---|
Gif (GifEngineType) |
Vexana, Xavier, WebView, CefSharp, MpvPlayer | MpvPlayer |
Url (UrlEngineType) |
WebView, CefSharp | CefSharp |
Web (WebEngineType) |
WebView, CefSharp | CefSharp |
Video (VideoEngineType) |
Nebula, WebView, CefSharp, MpvPlayer | MpvPlayer |
YouTube (YouTubeEngineType) |
WebView, CefSharp | CefSharp |
Application (ApplicationEngineType) |
Aurora (only) | Aurora |
The defaults in source:
public static SSDEUET UrlEngine = SSDEUET.CefSharp;
public static SSDEWET WebEngine = SSDEWET.CefSharp;
public static SSDEGET GifEngine = SSDEGET.MpvPlayer;
public static SSDEVET VideoEngine = SSDEVET.MpvPlayer;
public static SSDEAET ApplicationEngine = SSDEAET.Aurora;
public static SSDEYTET YouTubeEngine = SSDEYTET.CefSharp;You change these in Portal → Settings → Wallpaper (see Choosing-Engines and Settings-Wallpaper). The combo boxes are GifPlayer and VideoPlayer in the Extensions area, and UrlPlayer, WebPlayer, YouTubePlayer, ApplicationPlayer in the Engines area; each writes the engine setting key (Gif, Url, Web, Video, YouTube, Application).
| Engine | Tech | Gif | Url | Web | Video | YouTube | Application | Interactive | Audio/System data |
|---|---|---|---|---|---|---|---|---|---|
| MpvPlayer | libmpv | ✔ (default) | – | – | ✔ (default) | – | – | No | No |
| WebView | Edge WebView2 | ✔ | ✔ | ✔ | ✔ | ✔ | – | Yes | Yes (Web only) |
| CefSharp | CEF / CefSharp | ✔ | ✔ (default) | ✔ (default) | ✔ | ✔ (default) | – | Yes | Yes (Web only) |
| Nebula | WPF MediaElement | – | – | – | ✔ | – | – | No | No |
| Vexana | In-house GIF parser | ✔ | – | – | – | – | – | No | No |
| Xavier | XamlAnimatedGif | ✔ | – | – | – | – | – | No | No |
| Aurora | Process embedding | – | – | – | – | – | ✔ (default) | Input forwarded | Volume only |
Notes:
- "Audio/System data" means the JavaScript audio-reactive and system-status APIs (
SucroseAudioData,SucroseProcessorData, etc.). These are delivered only for the Web type on WebView or CefSharp. See Create-Audio-API and Create-System-API. - MpvPlayer intentionally does not serve the YouTube type even though libmpv could — YouTube is routed only to the browser engines.
- "Interactive" reflects which engines forward input: WebView, CefSharp, and Aurora reference
RawInput.Sharp; MpvPlayer, Nebula, Vexana, and Xavier are non-interactive renderers.
| Engine | Extra runtime requirement | Auto-download offered? | Min OS / version |
|---|---|---|---|
| MpvPlayer | Ships its own libmpv-{x86,x64,ARM64}.dll (no external install) |
n/a (bundled) | Windows 10 1607 (Redstone 1) via IsRedstone1 check |
| WebView | Edge WebView2 runtime ≥ 131.0.2903.70 | Yes (Continue / Download / Remember / Close) | — |
| CefSharp | VC++ Redistributable ≥ 14.40.33816.0; CEF native binaries shipped with engine | Yes (Continue / Download / Remember / Close) | — |
| Nebula | OS media codecs (Media Foundation / DirectShow) | n/a | — |
| Vexana | None (pure managed WPF) | n/a | — |
| Xavier | None (pure managed WPF) | n/a | — |
| Aurora | None beyond .NET + Skylark; the embedded app supplies its own | n/a | — |
All engines target .NET 10.0-windows and ship for x86, x64, and ARM64. The .NET 10 runtime is bundled privately as Sucrose.Runtime — no system .NET install is required. See System-Requirements and Runtime-Dependencies.
The HardwareAcceleration toggle (Settings → Wallpaper) maps to engine-specific flags:
| Engine | HardwareAcceleration ON | HardwareAcceleration OFF |
|---|---|---|
| MpvPlayer | hwdec=auto-safe |
hwdec=no |
| WebView |
--enable-gpu + --enable-gpu-vsync
|
--disable-gpu + --disable-gpu-vsync
|
| CefSharp |
enable-gpu=1 + enable-gpu-vsync=1
|
disable-gpu=1 + disable-gpu-vsync=1 (skipped on Germanium) |
| Nebula / Vexana / Xavier / Aurora | n/a (WPF/native handles it) | n/a |
Stay Awake applies across all engines via a 30-second SetThreadExecutionState loop (ON → ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED; OFF → ES_CONTINUOUS); MpvPlayer additionally rewrites its stop-screensaver config. See Performance-Rules and Choosing-Engines.
-
Interactive engines: WebView, CefSharp, Aurora (reference
RawInput.Sharp; forward mouse/keyboard). - Non-interactive renderers: MpvPlayer, Nebula, Vexana, Xavier.
-
Audio-reactive + system-status JS APIs: Only the Web type on WebView or CefSharp. The engine flips
Backgroundog'sAudioRequired = true, opens a communication channel (CommunicationType: Pipe / Signal / Transmission), receives data fromBackgroundog, and callsExecuteScriptAsyncwith the theme's JS callbacks. Video/Gif/Application engines inject no system data (Aurora apps get volume only). See Create-Web-Architecture and IPC.
| If you want… | Use |
|---|---|
| The most format-robust video/GIF playback | MpvPlayer (default for Gif & Video) |
| Audio-reactive / system-data web wallpapers | CefSharp (default for Web) or WebView |
| The most versatile browser engine across all browser types | WebView |
| A lightweight video player without libmpv | Nebula (relies on OS codecs) |
| A lightweight local-GIF player, no native runtime | Vexana |
| A GIF streamed from a remote URL, no native runtime | Xavier |
| To run an app/game as the wallpaper | Aurora (Application only) |
If a type is manually assigned to an engine that cannot render it, the engine's Configure() switch hits default → Close() and nothing shows — but the Portal only offers compatible engines per type, so this is a safeguard.
- Engines-Overview — selection and launch mechanics
- Choosing-Engines — changing engines per type in Settings
- Settings-Wallpaper — the per-type engine selectors
- Performance-Rules — Close/Pause/Resume behavior per engine
- Wallpaper-Types — the six types and their defaults
- Create-Web-Architecture — how web wallpapers receive live data
Getting Started
- Installation
- System Requirements
- Quick Start
- Portal Interface Tour
- Updating Sucrose
- Uninstalling Sucrose
Wallpaper Types
Using Sucrose
- Managing Library
- Using Store
- Customizing Wallpaper
- Multi-Monitor
- Wallpaper Cycling
- Choosing Engines
- Performance Rules
- Theme, Tray & Startup
- Discord Rich Presence
Settings Reference
- Settings Overview
- Settings: General
- Settings: Personal
- Settings: Performance
- Settings: Wallpaper
- Settings: System
- Settings: Other
- Settings: All Keys
Creating Wallpapers
- Create Overview
- Create: Step By Step
- Create: Package Format
- Create: Customization Controls
- Create: JS Bridge
- Create: Audio API
- Create: System API
- Create: Property Listener & Filters
- Create: Web Architecture
- Create: Compatibility
- Create: Example Wallpapers
- Create: Sharing & Publishing
Engine Reference
- Engines Overview
- Engine: MpvPlayer
- Engine: VlcPlayer
- Engine: WebView
- Engine: CefSharp
- Engine: Nebula
- Engine: Vexana
- Engine: Xavier
- Engine: Aurora
- Engine Comparison
Automation & Command Line
Architecture & Internals
- Architecture Overview
- Lifecycle
- Commandog Dispatcher
- Single-Instance Mutexes
- IPC
- Backgroundog Service
- Crash Reporting
- Update Internals
- Property Service
- Undo Internals
Data, Files & Diagnostics
Building & Contributing
- Building From Source
- Repository Layout
- Shared Item Projects
- Code Conventions
- Preprocessor Symbols
- Publish Pipeline
- Bundle Installer Internals
- Extending Sucrose
- Contributing
- Translating with Localizer
- Localization Coverage
- Security Policy
- Privacy & Telemetry
Help & Support