Skip to content

Submit the AppImage to the AppImage catalog (appimage.github.io) #721

Description

@manusa

Description

appimage.github.io is the crowd-sourced catalog of AppImages. AppImage-focused software centers and stores read its JSON feed, for example AppImagePool, NX Software Center and Manjaro's AppImage listing.

ElectronIM publishes an AppImage for every release but isn't listed there. The catalog doesn't host or redistribute files; it links to our own download location.

Status

The AppImage side is done in #725, but no release contains it yet (the latest is v0.0.123). What's left is a screenshot, a release, and the catalog PR itself, in that order.

What #725 changed, checked against the catalog's checklist in an Ubuntu 22.04 container (the image the catalog's own check runs on) and in CI:

The AppImage must v0.0.123 Next release
Run on the oldest still-supported Ubuntu LTS (22.04) without extra packages ✘ The app starts, but the spell checker doesn't load: Nodehun.node needed GLIBC_2.38 because the release was built on ubuntu-latest (24.04) ✔ Built in an ubuntu:22.04 container. utils/check-glibc.sh fails CI and the release when a native binary needs more than 22.04 provides
Work with X11, and pass appdir-lint.sh ✔ Warned that there's no appdata file ✔ Also validates the appdata file
Have a desktop file that passes desktop-file-validate ✔ ✔
Run without an Internet connection and show something sensible ✔ The first launch opens the settings dialog ✔
Optional: have AppStream metainfo in usr/share/metainfo that passes appstreamcli validate ✘ None ✔ com.marcnuri.electronim.appdata.xml, validated with AppStream 0.15 and 1.0, with its release stamped at tag time. No screenshot yet, see below

The metainfo is named *.appdata.xml because the catalog only reads listing data from files with that name.

Before submitting: add a screenshot

This blocks the submission. Without <screenshots> in the shipped metainfo the catalog listing gets no image at all. It doesn't fall back to the screenshot it takes itself: in code/worker.sh the *appdata.xml branch wins and writes no screenshots: key, the screenshot.png branch below it is unreachable, and _includes/app_teaser.html only renders images under {% if post.screenshots %}.

The catalog captures the listing once, when the catalog PR merges, from the released AppImage. So the screenshot has to be in the release we submit. Adding it afterwards changes nothing until someone touches data/ElectronIM again.

The existing images in docs/screenshots aren't usable. They're from 2020, show a settings dialog that was redesigned in 2022, and main.png shows a personal Twitter profile.

What the screenshot needs:

  • The current UI, ideally a real conversation in one of the services, with a few tabs and without personal data. Flathub's guidelines ask for a window of at most 1000×700, including the window's shadow.
  • A file in docs/screenshots, referenced by a raw URL pinned to the commit that adds it, not to main: https://raw.githubusercontent.com/manusa/electronim/<sha>/docs/screenshots/<file>.png. Released AppImages keep that metainfo forever, so a branch URL would change or break their listings later.
  • Exactly one <image> in the first <screenshot type="default">. The catalog reads screenshot[1]/image and concatenates every <image> in it into a single URL.
  • A one-line <caption>, then appstreamcli validate again (it must stay free of warnings on AppStream 0.15 and 1.0; .github/workflows/tests.yml runs validate-tree on the AppImage).

How to submit

Open a PR that adds a one-line file under data/, data/ElectronIM, containing the stable download URL:

https://github.com/manusa/electronim/releases/latest/download/electronim-linux-x86_64.AppImage

The catalog's test script uses a GitHub URL that contains download as is. A repository URL wouldn't work: autodetection only finds assets named like ElectronIM-1.1-x86_64.AppImage, and renaming ours would break existing download links. Their checklist prefers a constant URL without the version anyway.

A GitHub Actions check then downloads the AppImage, lints it and runs it offline under firejail, and shows the result on the PR.

Tasks

Related

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions