Skip to content

Linux support: native build works, config path and packaging need cleanup #17

Description

@GenesisAN

Hi, I tested IMM locally on Linux and it is already very close to working well.

I also noticed there is already a linux branch with several useful Linux-related changes, such as:

  • native 7z/extraction support
  • Linux hotreload/dependency checks
  • cross-platform path normalization
  • some Linux UI fixes

On my side, a native release binary works on Linux:

npm run build
cargo build --release --manifest-path src-tauri/Cargo.toml

The app can start, load EF/XXMI paths, scan EFMI mods, and display the mod list.

The main remaining issue I found is config file location.

There are still many places using relative config paths, for example:

readTextFile("config.json")
writeTextFile("config.json", ...)
readTextFile(`config${game}.json`)
writeTextFile(`config${game}.json`, ...)

Files involved include:

  • src/utils/init.ts
  • src/utils/filesys.ts
  • src/utils/errorCatcher.tsx

On Linux, this can make configs appear next to the executable, depending on how the app is launched. For example, if installed under ~/.local/bin, it may create:

~/.local/bin/config.json
~/.local/bin/configEF.json

For official Linux support, I think configs should use a stable Tauri app data directory instead, such as appDataDir() or localDataDir().

I also hit two AppImage packaging issues on Arch/CachyOS:

  1. linuxdeploy strip failed with .relr.dyn, fixed locally with NO_STRIP=1.
  2. The generated AppImage crashed because the WebKitGTK helper process was missing:
WebKitNetworkProcess: No such file or directory

So for the first Linux target, a native binary or .deb package may be easier than AppImage.

I also attached two screenshots from my local Linux build. They show that the app was successfully compiled, launched, and is working well with my EFMI setup.

Image Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions