rocksdanister/lively · error · PluginNotFoundException
xaml island gif player not available.
Error message
xaml island gif player not available.
What it means
Thrown by WallpaperPluginFactory.CreateWallpaper when a WallpaperType.gif item is created with userSettings.Settings.GifPlayer == LivelyGifPlayer.win10Img. The win10Img backend relied on a UWP XAML Island control that is no longer shipped/compiled into the app, so the factory refuses to construct it rather than silently substituting another backend. No fallback player is selected automatically; the caller receives the exception directly.
Source
Thrown at src/Lively/Lively/Factories/WallpaperPluginFactory.cs:116
model,
display,
lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),
userSettings.Settings.VideoPlayerHwAccel,
isWindowed: isWindowed,
userSettings.Settings.VideoTargetColorSpaceMode);
case LivelyMediaPlayer.vlc:
return new VideoVlcPlayer(model.FilePath,
model,
display,
userSettings.Settings.WallpaperScaling,
userSettings.Settings.VideoPlayerHwAccel);
}
break;
case WallpaperType.gif:
switch (userSettings.Settings.GifPlayer)
{
case LivelyGifPlayer.win10Img:
throw new PluginNotFoundException("xaml island gif player not available.");
case LivelyGifPlayer.libmpvExt:
throw new DepreciatedException("libmpvExt depreciated player selected.");
case LivelyGifPlayer.mpv:
return new VideoMpvPlayer(model.FilePath,
model,
display,
lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),
userSettings.Settings.VideoPlayerHwAccel,
isWindowed: isWindowed,
userSettings.Settings.VideoTargetColorSpaceMode);
case LivelyGifPlayer.libvlcExt:
return new VideoLibVlcPlayer(model.FilePath,
model,
display,
lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),
userSettings.Settings.ApplicationTheme,
userSettings.Settings.AudioVolumeGlobal,
userSettings.Settings.VideoPlayerHwAccel);View on GitHub (pinned to c1036feb66)
Solutions
- Set the GIF player to mpv (or libvlcExt) in Settings and restart Lively.
- On startup, migrate/reset userSettings.Settings.GifPlayer to a supported value when it equals win10Img.
- Remove win10Img from the settings picker so it can never be selected.
Example fix
// before
switch (userSettings.Settings.GifPlayer)
{
case LivelyGifPlayer.win10Img:
throw new PluginNotFoundException("xaml island gif player not available.");
case LivelyGifPlayer.mpv:
return new VideoMpvPlayer(model.FilePath, model, display, ...);
}
// after: migrate the removed value to the supported mpv backend instead of throwing
switch (userSettings.Settings.GifPlayer)
{
case LivelyGifPlayer.win10Img:
case LivelyGifPlayer.mpv:
return new VideoMpvPlayer(model.FilePath, model, display,
lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),
userSettings.Settings.VideoPlayerHwAccel,
isWindowed: isWindowed,
userSettings.Settings.VideoTargetColorSpaceMode);
} Defensive patterns
Strategy: validation
Validate before calling
if (model.LivelyInfo.Type == WallpaperType.gif &&
userSettings.Settings.GifPlayer == LivelyGifPlayer.win10Img)
{
// win10Img backend removed; auto-migrate to the supported mpv backend
userSettings.Settings.GifPlayer = LivelyGifPlayer.mpv;
} Type guard
static bool IsGifBackendSupported(LibraryModel model, IUserSettingsService s) =>
model.LivelyInfo.Type != WallpaperType.gif ||
s.Settings.GifPlayer != LivelyGifPlayer.win10Img; Try / catch
try
{
var wp = factory.CreateWallpaper(model, display, arrangement);
}
catch (WallpaperPluginFactory.PluginNotFoundException ex) when (ex.Message.Contains("gif player"))
{
Logger.Warn(ex, "Migrating removed GIF player; retrying with mpv.");
userSettings.Settings.GifPlayer = LivelyGifPlayer.mpv;
wp = factory.CreateWallpaper(model, display, arrangement);
} Prevention
- Migrate removed player-enum values to a supported default on app startup, before any wallpaper is created.
- Filter the settings UI options against the set of players the running build actually compiles in.
- Add a smoke test that loads one wallpaper of each type with the default config after every player-enum change.
When it happens
Trigger: Calling factory.CreateWallpaper(model, display, arrangement) where model.LivelyInfo.Type == WallpaperType.gif and userSettings.Settings.GifPlayer == LivelyGifPlayer.win10Img.
Common situations: A user upgraded Lively and their persisted settings file still stores the removed win10Img GIF player. Dev builds that exclude the XAML Island project surface it. Manually editing the config JSON to win10Img reproduces it immediately.
Related errors
- libmpv depreciated player selected.
- libmpvExt depreciated player selected.
- libvlc depreciated player selected.
- Wallpaper player not found.
- Program wallpaper on MSIX package not allowed.
AI-assisted analysis of rocksdanister/lively@c1036feb66 (2026-08-13).
Data as JSON: /api/errors/6e524fedb074cce9.
Report an issue: GitHub.