#6889·lutris

[RFC] Separate custom artwork (by id) from lutris.net artwork (by slug)

Author: loucassCreated Sep 13, 2026Updated Sep 13, 2026

Follow-up to #6867.

Right now banner/, coverart/ and icons/ are all keyed by slug (LutrisBanner/Icon/Coverart, resources.py, get_possible_media_paths()).

What happened to me:

  1. Added Undertail -> slug=undertail
  2. Duplicated it and renamed the copy to Plants vs Zombie, but the copy kept slug=undertail
  3. Both entries ended up pointing at the same coverart/undertail.png

#6867 tried to fix this with unique slugs (undertail-2, ...) in add_game(), but I agree with @danieljohnson2 that this breaks lutris.net lookup and library sync. Slug is the API key, id is the local key. So dropping that. What I'd like to do instead:

  • Keep lutris.net downloads by slug as-is.
  • Store custom artwork by game id, e.g. coverart/custom-id.jpg.
  • Prefer custom file if it exists, otherwise fall back to the slug file.
  • Small migration: if has_custom_* is set, copy .* to custom-.* once.