eythaann/Seelen-UI · warning

Wallpaper ${wallpaper.id} has no filename, skipping

Error message

Wallpaper ${wallpaper.id} has no filename, skipping

What it means

In the settings app's ThumbnailGeneratorModal, generateThumbnails() iterates video wallpapers and builds a file path from wallpaper.filename. When a wallpaper entry has an empty/undefined filename it cannot produce a video source, so the item is skipped with this warning and processing continues with the next wallpaper.

Source

Thrown at src/ui/react/settings/components/ThumbnailGeneratorModal/thumbnailGenerator.ts:71

  onProgress: ProgressCallback,
): Promise<void> {
  const total = wallpapers.length;

  for (let i = 0; i < wallpapers.length; i++) {
    const wallpaper = wallpapers[i];
    if (!wallpaper) {
      continue;
    }

    onProgress({
      current: i,
      total,
      currentVideoName: getDisplayName(wallpaper),
    });

    try {
      if (!wallpaper.filename) {
        console.warn(`Wallpaper ${wallpaper.id} has no filename, skipping`);
        continue;
      }

      const videoSrc = convertFileSrc(wallpaper.metadata.path + "\\" + wallpaper.filename);
      const thumbnailBytes = await extractThumbnailFromSource(videoSrc, 0.9);
      if (!thumbnailBytes) {
        console.error(`Failed to extract thumbnail for ${wallpaper.id}`);
        // Mark as corrupted - won't retry during this session
        $corruptedWallpapers.value = new Set($corruptedWallpapers.value).add(wallpaper.id);
        continue;
      }

      await invoke(SeelenCommand.WallpaperSaveThumbnail, {
        wallpaperId: wallpaper.id,
        thumbnailBytes: Array.from(thumbnailBytes),
      });
    } catch (error) {
      console.error(`Error generating thumbnail for ${wallpaper.id}:`, error);

View on GitHub (pinned to dee4aaa940)

Solutions

  1. Refresh/rescan the wallpapers folder so the index rebuilds and filenames are repopulated, then regenerate thumbnails.
  2. Remove or re-add the broken wallpaper entry (delete it in Settings > Monitors/Wallpapers or delete and re-copy the file).
  3. Verify the source file actually exists at wallpaper.metadata.path and fix the entry's filename if the index is editable/stale.
  4. If you maintain the code, treat a missing filename as a repairable index defect: re-derive filename from metadata.path before skipping.

Example fix

// before
if (!wallpaper.filename) {
  console.warn(`Wallpaper ${wallpaper.id} has no filename, skipping`);
  continue;
}

// after
if (!wallpaper.filename && wallpaper.metadata?.path) {
  wallpaper.filename = wallpaper.metadata.path.split("\\").pop() ?? "";
}
if (!wallpaper.filename) {
  console.warn(`Wallpaper ${wallpaper.id} has no filename, skipping`);
  continue;
}
Defensive patterns

Strategy: validation

Validate before calling

const usable = wallpapers.filter(w => typeof w.filename === "string" && w.filename.length > 0);
if (usable.length < wallpapers.length) {
  console.warn(`${wallpapers.length - usable.length} wallpapers missing filename; refresh the index`);
}

Type guard

function hasFilename(w: Wallpaper): w is Wallpaper & { filename: string } {
  return typeof w.filename === "string" && w.filename.length > 0;
}

Prevention

When it happens

Trigger: A wallpaper in the monitored folders was detected/indexed (so it has an id and metadata.path) but its filename field is empty — e.g. the file was renamed, moved, or the scan entry was created before the filename was resolved.

Common situations: Corrupt or stale wallpaper index after moving the wallpaper folder; a file being written/locked during indexing so its name never got recorded; custom wallpapers added via a path where the filename extraction failed; OS/filesystem changes between index time and thumbnail generation.


AI-assisted analysis of eythaann/Seelen-UI@dee4aaa940 (2026-09-03). Data as JSON: /api/errors/aeb8f614ede0498d. Report an issue: GitHub.