{"record":{"id":"f967109770337d33","repo":"rocksdanister/lively","slug":"libmpv-depreciated-player-selected","errorCode":null,"errorMessage":"libmpv depreciated player selected.","messagePattern":"libmpv depreciated player selected\\.","errorType":"exception","errorClass":"DepreciatedException","httpStatus":null,"severity":"error","filePath":"src/Lively/Lively/Factories/WallpaperPluginFactory.cs","lineNumber":83,"sourceCode":"                                display,\n                                userSettings.Settings.WebDebugPort,\n                                lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),\n                                GetWebView2UserDataDir(arrangement, display, isWindowed),\n                                userSettings.Settings.ApplicationTheme,\n                                userSettings.Settings.AudioVolumeGlobal,\n                                GetWebView2Scale(display, isWindowed),\n                                userSettings.Settings.VisualizerAudioDeviceId);\n                    }\n                    break;\n                case WallpaperType.video:\n                    //How many videoplayers you need? Yes.\n                    switch (userSettings.Settings.VideoPlayer)\n                    {\n                        case LivelyMediaPlayer.wmf:\n                            return new VideoWmfProcess(model.FilePath, model,\n                                display, 0, userSettings.Settings.WallpaperScaling);\n                        case LivelyMediaPlayer.libmpv:\n                            throw new DepreciatedException(\"libmpv depreciated player selected.\");\n                        case LivelyMediaPlayer.libmpvExt:\n                            throw new DepreciatedException(\"libmpvExt depreciated player selected.\");\n                        case LivelyMediaPlayer.libvlc:\n                            throw new DepreciatedException(\"libvlc depreciated player selected.\");\n                        case LivelyMediaPlayer.libvlcExt:\n                            return new VideoLibVlcPlayer(model.FilePath,\n                                model,\n                                display,\n                                lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),\n                                userSettings.Settings.ApplicationTheme,\n                                userSettings.Settings.AudioVolumeGlobal,\n                                userSettings.Settings.VideoPlayerHwAccel);\n                        case LivelyMediaPlayer.mpv:\n                            return new VideoMpvPlayer(model.FilePath,\n                                model,\n                                display,\n                                lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),\n                                userSettings.Settings.VideoPlayerHwAccel,","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/rocksdanister/lively/blob/c1036feb664960722e34bf4309042c247d6a909d/src/Lively/Lively/Factories/WallpaperPluginFactory.cs#L65-L101","documentation":"Thrown by WallpaperPluginFactory when the user's selected video player is LivelyMediaPlayer.libmpv, which has been removed/deprecated. DepreciatedException is a project-local Exception subclass. It fires per-video-wallpaper launch, so the wallpaper will never play until the setting changes.","triggerScenarios":"Loading a video wallpaper while userSettings.Settings.VideoPlayer == LivelyMediaPlayer.libmpv — the factory switch hits the libmpv case and throws.","commonSituations":"User upgraded from an older Lively version that stored 'libmpv' as the preferred player; settings file carried over; user manually edited settings; libmpv build dropped from the distribution.","solutions":["Change Settings.VideoPlayer to a supported backend (wmf, mpv, or libvlcExt) and restart.","On startup, migrate/sanitize persisted settings: if VideoPlayer is deprecated, fall back to a default and notify.","Catch DepreciatedException in the wallpaper-launch path and prompt the user to pick a new player."],"exampleFix":"// before\ncase LivelyMediaPlayer.libmpv:\n    throw new DepreciatedException(\"libmpv depreciated player selected.\");\n\n// after — fall back to a supported default instead of throwing at launch\nvar preferred = userSettings.Settings.VideoPlayer;\nif (preferred is LivelyMediaPlayer.libmpv or LivelyMediaPlayer.libmpvExt or LivelyMediaPlayer.libvlc)\n    preferred = LivelyMediaPlayer.mpv;\nswitch (preferred) { /* ... */ }","handlingStrategy":"fallback","validationCode":"var player = userSettings.Settings.VideoPlayer;\nif (player is LivelyMediaPlayer.libmpv or LivelyMediaPlayer.libmpvExt or LivelyMediaPlayer.libvlc)\n{\n    userSettings.Settings.VideoPlayer = LivelyMediaPlayer.mpv; // remap deprecated\n    await userSettings.SaveAsync();\n}","typeGuard":"static bool IsSupportedVideoPlayer(LivelyMediaPlayer p)\n    => p is LivelyMediaPlayer.wmf or LivelyMediaPlayer.mpv or LivelyMediaPlayer.libvlcExt;","tryCatchPattern":"try { return factory.CreateVideoPlayer(model, display, arrangement); }\ncatch (DepreciatedException ex) when (ex.Message.Contains(\"libmpv\"))\n{ userSettings.Settings.VideoPlayer = LivelyMediaPlayer.mpv; return factory.CreateVideoPlayer(model, display, arrangement); }","preventionTips":["Migrate deprecated VideoPlayer values on settings load.","Gate the player picker UI to supported backends only.","Catch DepreciatedException at the launch boundary and auto-switch."],"tags":["deprecated","config","video-player","settings","wallpaper"],"backgroundTag":null,"analyzedSha":"c1036feb664960722e34bf4309042c247d6a909d","analyzedAt":"2026-08-13T13:03:12.648Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}