A 128x128 icon is required now

Following app requirements, buildbot checks now if application ships an icon of at least 128x128 size. This means that if your application ships just SVG or file bigger than 128x128, appstream-compose will take care of converting and/or downscaling it to required size which is later used by web store and desktop frontends.

The check can be disabled by adding "skip-icons-check": true to flathub.json.


To answer some questions that were brought up here and there:

  • This is a breaking change for SDK extensions and plugins; they simply won’t build without changing flathub.json.
  • CLI applications are more tricky. Buildbot looks for the icon in /app/share/app-info; it is copied there by appstream-compose, which looks at the desktop file to find its name in /app/share/icons. If your application doesn’t ship a desktop file, you also need to disable icons check.

I keep running into issues with this change. Let me give you the example of Flacon:

Flacon has a full set of icons, both .png and .svg based, stored in /share/icons/hicolor/

When testing it locally, the display manager will display the right icons flawlessly. With the change to the server validation, the package that was fine in the past now fails the check. Still, the icons are there and the store has no trouble listing the package.

I think this script needs some work and that there should be better support for existing icons in the default folder. Right now, I work around the issue by using a post-install hook to copy the extra images, but that feels messy and redundant.

Flacon seems to be shipping its own metainfo file, and it has priority over deprecated appdata.xml file name. It points to non-existent desktop launcher, and so appstream-compose can’t find the icon.