Skip to content

Conversation

@bradleystachurski
Copy link
Member

@bradleystachurski bradleystachurski commented Jan 24, 2026

Adds Linux desktop distribution via AppImage. Users get a single portable ~86MB file that runs across Linux distros without installation. When we tag releases, CI automatically builds and attaches the AppImage to release assets alongside the APK (I'll verify this works during v0.5.0-rc testing rather than testing here).

Testing locally:

# Build portable AppImage
just build-appimage

# Run the AppImage
# - Non-NixOS: just open the .AppImage file directly
# - NixOS:
just run-appimage-nixos ./ecash-app-*.AppImage

Notable changes:

  • Linux data directory moved to ~/.local/share/ecash-app/ following XDG Base Directory conventions. Debug builds use ecash-app-dev/ for isolation so dev testing doesn't clobber release data. Android behavior unchanged.

  • Docker build for portability. Binaries built from nix develop embed /nix/store/ interpreter paths that only run on systems with those exact Nix store paths. The Docker-based just build-appimage produces binaries with standard Linux paths that work everywhere. CI uses flutter-action on ubuntu-latest for the same reason.

  • AppStream metadata included. This is standard Linux software center metadata (GNOME Software, KDE Discover, etc). After v0.5.0 ships with desktop support, we can submit to AppImageHub for broader discovery. They auto-scrape new releases after initial submission so there's almost no additional release admin overhead compared to what we do now. No app store submissions, just a release asset in the tag.

  • Release process updated to include AppStream version entries for final releases.

@m1sterc001guy
Copy link
Collaborator

Where is the icon used? Is it for the submission to one of the app directories? At least for me, after building it looked like this:

image

m1sterc001guy
m1sterc001guy previously approved these changes Jan 26, 2026
Copy link
Collaborator

@m1sterc001guy m1sterc001guy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huge. Tested on my machine and it works!

# Copy bundle as-is (preserves lib/ relative path for RPATH)
cp -r build/linux/x64/release/bundle/* AppDir/

# Copy icon and desktop file
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this missing?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ended up removing this and using only the docker build so there's only one AppImage build path and it's portable

@bradleystachurski
Copy link
Member Author

Where is the icon used? Is it for the submission to one of the app directories? At least for me, after building it looked like this:
image

What does that screenshot point to? Is that the Flutter bundle output? The icon gets embedded in the final .AppImage file after appimagetool runs. Let me know if you don't see an icon with just build-appimage or just build-appimage-portable.

@bradleystachurski
Copy link
Member Author

image

Tested on fresh Ubuntu 24.04 VM with GNOME and reproduced. The icon is embedded correctly (verified via --appimage-extract). GNOME doesn't display embedded icons for AppImage files in the file manager. Kdenlive's official AppImage has the same generic gear icon. KDE Plasma displays it correctly.

I think it's okay to move forward since this is the same behavior for other popular AppImages on GNOME, but let me know if you think it's worth continuing to find a workaround.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants