From dd02038adf738f719636db5098a281f6f3853e1e Mon Sep 17 00:00:00 2001 From: gabrix73 Date: Sun, 12 Apr 2026 17:16:08 +0200 Subject: fix: use APPIMAGE env var for base dir to avoid read-only mount path --- khimera-main.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/khimera-main.go b/khimera-main.go index 6cb0bdf..d53211d 100644 --- a/khimera-main.go +++ b/khimera-main.go @@ -75,14 +75,19 @@ func main() { // detectPortableMode detects portable environment func detectPortableMode() (*PortableConfig, error) { - // Get executable location - exe, err := os.Executable() - if err != nil { - return nil, fmt.Errorf("failed to get executable path: %w", err) + // When running as AppImage, APPIMAGE env var points to the actual .AppImage file + // os.Executable() would return the read-only mount path inside /tmp/.mount_* + var baseDir string + if appImagePath := os.Getenv("APPIMAGE"); appImagePath != "" { + baseDir = filepath.Dir(appImagePath) + } else { + exe, err := os.Executable() + if err != nil { + return nil, fmt.Errorf("failed to get executable path: %w", err) + } + baseDir = filepath.Dir(exe) } - baseDir := filepath.Dir(exe) - config := &PortableConfig{ IsPortable: true, BaseDir: baseDir, -- cgit v1.2.3