Skip to content

Linux - Bundle as AppImage #55

Closed
Closed

Description

@govt-boot-licker

What would you like?

Should be considered, release versions using AppImage

Platform (if it matters)

No response

Activity

  1. lschaupp commented on Oct 7, 2026

    @lschaupp
    Contributor

    Thanks for the suggestion! An AppImage makes sense for Linux and we'll look at it. The main work is that the setup writes your game dump, the compiled game code, saves and settings next to the program, and an AppImage is read-only, so all of that has to move to a writable folder first. Is something not working for you with the current zip, or is it mainly about convenience (one file, desktop integration)?

  2. xsoalokinx commented on Oct 7, 2026

    @xsoalokinx

    Thanks for the suggestion! An AppImage makes sense for Linux and we'll look at it. The main work is that the setup writes your game dump, the compiled game code, saves and settings next to the program, and an AppImage is read-only, so all of that has to move to a writable folder first. Is something not working for you with the current zip, or is it mainly about convenience (one file, desktop integration)?

    On standard linux systems the place to write this stuff to would be inside the users home folder.
    ~/.config/ZeldaWWHDRecomp
    or
    ~/.local/share/ZeldaWWHDRecomp

    going with any of these locations would be ideal.
    the user has full permissions for these directories and anything inside ~/ which is just an alias for /home/some_user

    https://docs.appimage.org/packaging-guide/index.html
    ^ relevant package guide for appimages.

    appimages themselves are just more convenient, take less steps to setup compared to a zip file that has a bunch of loose files inside.
    it also makes it easier to manage updates without having to repeat the process of getting everything setup again.

    Basically you allow the user to store the appimage anywhere they feel like. The user then executes this appimage. Any writing for config files and similar will happen at a directory like ~/.config/ZeldaWWHDRecomp which is where such files are stored per app. Store any configs/generated assets here.

  3. govt-boot-licker commented on Oct 8, 2026

    @govt-boot-licker
    Author

    Thanks for the suggestion! An AppImage makes sense for Linux and we'll look at it. The main work is that the setup writes your game dump, the compiled game code, saves and settings next to the program, and an AppImage is read-only, so all of that has to move to a writable folder first. Is something not working for you with the current zip, or is it mainly about convenience (one file, desktop integration)?

    Convenience, save data and config files could be saved to ~/.config/WWHDRecomp for example (or set by user in the WWHD settings stuff)

  4. lschaupp commented on Oct 9, 2026

    @lschaupp
    Contributor

    Done: PR #101 by @mhbxyz adds a single-file AppImage for Linux (x86_64 and aarch64) next to the zip, starting with the next release. Since an AppImage is read-only, it keeps the game, its compiled code, saves and settings in your user folders ($XDG_DATA_HOME/wwhd, usually ~/.local/share/wwhd); --data-dir picks another folder. On distros without libfuse2 (e.g. Ubuntu 24.04+), run it with --appimage-extract-and-run. The zip release stays as it is. Thanks everyone for the suggestions here!

  5. missionfloyd commented on Oct 11, 2026

    @missionfloyd

    $OWD should be the working directory when the appimage was run, or you can get the folder containing it from $APPIMAGE.
    https://docs.appimage.org/packaging-guide/environment-variables.html

  6. lschaupp commented on Oct 11, 2026

    @lschaupp
    Contributor

    Thanks @missionfloyd, good pointer! We kept the per-user folders as the default (that's the usual place for AppImages, and the AppImage's own folder isn't always writable), and added a simple portable mode using $APPIMAGE: if a folder named like the AppImage plus .data exists next to it (for example WindWakerHD-…-linux-x86_64.AppImage.data), the AppImage keeps the game, its code, saves, settings and caches in that folder. Without the folder nothing changes. It's in devel now and will be in the next release.

  7. lschaupp commented on Oct 11, 2026

    @lschaupp
    Contributor

    Closing the issue for now. Let us know if you have a follow up on this and reopen it.

  8. missionfloyd commented on Oct 12, 2026

    @missionfloyd

    You don't actually have to do anything for that to work, Appimages do it on their own.
    https://docs.appimage.org/user-guide/portable-mode.html

  9. lschaupp commented on Oct 12, 2026

    @lschaupp
    Contributor

    Thanks @missionfloyd, you're right: the AppImage runtime's own portable mode (<name>.AppImage.home, created with --appimage-portable-home) already covers this, since the game keeps its data under ~/.local/share/wwhd and ~/.config/wwhd. We'll drop our own .data folder before it gets released and document the standard way in the README instead.

  10. lschaupp commented on Oct 12, 2026

    @lschaupp
    Contributor

    A correction to my last comment: the .data folder had already shipped in v0.2.13, not only in devel.

    The standard AppImage portable mode is now in devel and in the development build, and it will be in the next release: start the AppImage once with --appimage-portable-home, or create <name>.AppImage.home next to it. Our own .data folder is no longer used.

    If you used ….AppImage.data with v0.2.13, move its contents before starting the new version:

    • ….AppImage.data/share → ….AppImage.home/.local/share
    • ….AppImage.data/config → ….AppImage.home/.config
    • ….AppImage.data/cache → ….AppImage.home/.cache

    Then start the AppImage once with --setup. If a .data folder is still next to the AppImage, the new version shows a hint about this. The steps are also in the release notes (CHANGELOG.md).

    The issue stays closed; comment /reopen if something doesn't work.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions