rocksdanister/lively · warning · ArgumentException
Customisation not supported.
Error message
Customisation not supported.
What it means
Thrown by CustomiseWallpaperViewModel.CreatePropertyCopy when obj.LivelyPropertyPath is null — the wallpaper has no LivelyProperties.json, so there is nothing to customise. ArgumentException signals a bad argument rather than a runtime fault.
Source
Thrown at src/Lively/Lively.UI.Shared/ViewModels/CustomiseWallpaperViewModel.cs:262
desktopCore.SendMessageWallpaper(currentScreen, Model, msg);
break;
case WallpaperArrangement.span:
case WallpaperArrangement.duplicate:
desktopCore.SendMessageWallpaper(Model, msg);
break;
}
});
}
/// <summary>
/// Get LivelyProperties.json copy filepath and corresponding screen logic.
/// </summary>
/// <param name="obj">LibraryModel object</param>
/// <returns></returns>
private (string filePath, DisplayMonitor screen) CreatePropertyCopy(LibraryModel obj, WallpaperArrangement arrangement, DisplayMonitor selectedScreen)
{
if (obj.LivelyPropertyPath == null)
throw new ArgumentException("Customisation not supported.");
string propertyCopyPath = null;
DisplayMonitor wallpaperScreen = null;
var items = desktopCore.Wallpapers.Where(x => x.LivelyInfoFolderPath == obj.LivelyInfoFolderPath);
if (!items.Any())
{
// We create the files only when wallpaper is not running, when launching the wallpaper the Core will create the file for us.
wallpaperScreen = selectedScreen;
var dataFolder = Path.Combine(userSettings.Settings.WallpaperDir, Constants.CommonPartialPaths.WallpaperSettingsDir);
//Create a directory with the wallpaper foldername in SaveData/wpdata/, copy livelyproperties.json into this.
//Further modifications are done to the copy file.
string wallpaperDataDirectoryPath = null;
switch (arrangement)
{
case WallpaperArrangement.per:
wallpaperDataDirectoryPath = Path.Combine(dataFolder, new DirectoryInfo(obj.LivelyInfoFolderPath).Name, wallpaperScreen.Index.ToString());
break;
case WallpaperArrangement.span:View on GitHub (pinned to c1036feb66)
Solutions
- Guard the UI: disable/hide 'Customise' when LivelyPropertyPath is null.
- If properties are expected, re-import the wallpaper ensuring LivelyProperties.json is present.
- Catch ArgumentException in the customise flow and show 'This wallpaper has no customisable settings.'
Example fix
// before
if (obj.LivelyPropertyPath == null)
throw new ArgumentException("Customisation not supported.");
// caller-side guard (preferred)
if (string.IsNullOrEmpty(obj.LivelyPropertyPath))
{
CanCustomise = false;
return;
} Defensive patterns
Strategy: validation
Validate before calling
if (string.IsNullOrEmpty(obj.LivelyPropertyPath))
{
CanCustomise = false;
return;
} Type guard
static bool IsCustomisable(LibraryModel obj) => !string.IsNullOrEmpty(obj.LivelyPropertyPath);
Try / catch
try { (var path, var screen) = CreatePropertyCopy(obj, arrangement, selectedScreen); }
catch (ArgumentException ex) when (ex.Message.Contains("Customisation not supported"))
{ ShowInfo("This wallpaper has no customisable settings."); } Prevention
- Bind the 'Customise' affordance's enabled-state to LivelyPropertyPath != null.
- Skip wallpapers without LivelyProperties.json in batch customise loops.
- Re-import wallpapers that should have properties but don't.
When it happens
Trigger: CreatePropertyCopy(obj, arrangement, selectedScreen) for a wallpaper whose LivelyPropertyPath is null — typical for plain video/online wallpapers that ship no property schema.
Common situations: User opens 'customise' on a video wallpaper or a web wallpaper with no LivelyProperties.json; the wallpaper was imported in a way that skipped/removed the property file.
Related errors
- LivelyInfo.json not found
- A LivelyInfo.json file was found in this project folder. It
- LivelyInfo.json not found
- Not Lively .zip
- i18n.GetString("LivelyExceptionNotLivelyZip")
AI-assisted analysis of rocksdanister/lively@c1036feb66 (2026-08-13).
Data as JSON: /api/errors/05296910a41777bd.
Report an issue: GitHub.