[2.1.17][Arch Linux] Steam wrapper incompatible with FMTK
Posted: Tue Sep 01, 2026 11:08 pm
The wrapper used to launch the x86_64 version of factorio calls a utility (arch) that is not natively on Arch Linux since 2023. When running using Steam, the script works fine, probably because the utility is part of the steam linux binaries, but this means that using the FMTK and other debugging tools does not work on Arch (or other systems without `arch`) unless the file is manually edited or wrapped itself.
It would be nice if the wrapper called `uname -m`, unless the steam emulation layers now require such a hook and their own binaries. I do not see that given the other binaries available in the runtime, though.
arch:
uname:
factorio.sh:
It would be nice if the wrapper called `uname -m`, unless the steam emulation layers now require such a hook and their own binaries. I do not see that given the other binaries available in the runtime, though.
arch:
Code: Select all
SteamLibrary]$ find -name arch
./steamapps/common/SteamLinuxRuntime_soldier/var/tmp-Z11LU3/usr/bin/arch
./steamapps/common/SteamLinuxRuntime_soldier/soldier_platform_2.0.20260805.254767/files/bin/arch
Code: Select all
SteamLibrary]$ ./steamapps/common/SteamLinuxRuntime_soldier/var/tmp-Z11LU3/usr/bin/uname -m
x86_64Code: Select all
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
ARCH=$(arch)
if [[ "$ARCH" == "x86_64" ]]; then
exec "$SCRIPT_DIR/../x64_/factorio" "$@"
elif [[ "$ARCH" == "aarch64" ]] || [[ "$ARCH" == "arm64" ]]; then
if [[ -e "$SCRIPT_DIR/../arm64/factorio" ]]; then
exec "$SCRIPT_DIR/../arm64/factorio" "$@"
else
echo "factorio.sh: arm64 binary missing, launching x64 binary instead"
exec "$SCRIPT_DIR/../x64_/factorio" "$@"
fi
else
echo "factorio.sh: Unsupported architecture $ARCH"
exit 1
fi