Skip to content

Package AppImages for Linux - #479

Closed
ravener wants to merge 7 commits into
liftoff-app:masterfrom
ravener:master
Closed

Package AppImages for Linux#479
ravener wants to merge 7 commits into
liftoff-app:masterfrom
ravener:master

Conversation

@ravener

@ravener ravener commented Aug 7, 2023

Copy link
Copy Markdown

Implements #415 by introducing AppImages.

This is a rough draft and meant to be a proof of concept, I've implemented it in the ci.yml for the purpose of easier testing instead of needing to trigger a release, but this needs to be moved to the release workflow when ready.

I've created this draft PR to get feedback if anything needs to be done differently, and additional cleanups that may be needed, other than that I can start copying it over to the release workflow and finalize the PR.

So a quick rundown of what is happening for the devs who are unfamiliar with AppImages:

  • AppImages needed FUSE so I had to add an additional dependency on the apt install command. This should be available on most distros preinstalled but it wasn't in our CI environment so I added that. See https://docs.appimage.org/user-guide/troubleshooting/fuse.html
  • The idea is we create an AppDir which holds like a custom prefix with the /usr folders and what not, see the full spec at https://docs.appimage.org/reference/appdir.html
  • within the AppDir we need a file AppRun this is responsible to prepare the environment and startup the app, this can be a shell script or anything if need be but the common convention is to use these prebuilt AppRun binaries by the AppImage team themselves. These setup the environment to start it from the .desktop file.
  • I created a minimal .desktop file and chose the icon that was available in assets/app_icon.png hope that is fine. the .desktop can be extended further if anything needs to be added, like a comment (program description basically)
  • The AppImageKit provides us a handy tool to turn the AppDir folder into the final .AppImage and so once we finished creating the final directory structure I create the AppImage with it and upload the artifact. I chose to download the continous version because latest release is like from 2020 and very outdated like it won't accept versions newer than 1.0 for the freedesktop .desktop file for example.
  • Seems like the flutter bundle wasn't meant to work in an absolute unix filesystem structure so putting the lib in /usr/lib in the appdir did not work, so I chose to stuff it all in the bin so they are relative to the binary, this should be fine as I've seen other appimages stuff everything in there as well.
  • This bundles whatever flutter gave us but not the whole libraries, things like gtk should exist on the user's system, so it's not fully contained but it's the same assumption as downloading the .tar.gz and I believe is fine.

To test this you can download the artifact from the latest commit in my fork unzip the artifact and chmod +x liftoff.AppImage and finally ./liftoff.AppImage

TODO

Like I said so far I'm opening this as a draft PR to get some feedback, once I get the OK, I will squash my commits and any other cleanups suggested.

Comment thread assets/liftoff.desktop

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

See #236

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I'm not sure what I can do?

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Just wait until the other PR is merged

@ravener ravener closed this by deleting the head repository May 21, 2026
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