Skip to content

Instantly share code, notes, and snippets.

@sxiii
Last active August 29, 2026 21:22
Show Gist options
  • Select an option

  • Save sxiii/9d9b8435fd343b2024b16b8cbe86a69e to your computer and use it in GitHub Desktop.

Select an option

Save sxiii/9d9b8435fd343b2024b16b8cbe86a69e to your computer and use it in GitHub Desktop.
How to fix Worms W.M.D. launch on ArchLinux, Manjaro, Garuda, Artix Linux & Linux Mint

Game information Worms W.M.D.

Distribution name and version where applicable Manjaro 20.1.1 (Mikah)

Problem description Worms doesn't launch out of the box without two small tweaks. When launching Worms W.M.D. in Manjaro and Archlinux, you need to do two things:

  1. Install this apps: sudo pacman -S libcurl-gnutls libidn11 qt5-base qt5-xcb-private-headers(If you are on any other distro then Arch, you can skip this step. At least this is reported to be OK to skip for Linux Mint)
  2. Edit file "Run.sh" in Worms W.M.D. directory, usually it's located here: ~/.steam/steam/steamapps/common/WormsWMD/Run.sh, and replace it's content with this:
#!/bin/bash
export LC_ALL=C
export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib"
export LD_PRELOAD="$(
	printf "%s " ~/.steam/steam/steamapps/common/WormsWMD/lib/libQt5*.so* \
		~/.steam/steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libdbus-1.so.3 \
		~/.steam/steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libdbus-1.so.3.5.8
)"
chmod a+x ./Worms\ W.M.Dx64
./Worms\ W.M.Dx64

Finally, you can launch Worms WMD either through Steam (by pressing play and choosing "Run with Run.sh", or via CLI by just ./Run.sh.

Does this issue reproduce with native Steam Yes, the issue seems like an upstream Steam Linux WMD distribution bug.

@cgiAlexis

cgiAlexis commented May 9, 2026 •

Copy link
Copy Markdown

Looks like the issue in the script is actually related to Valve's work on Steam Runtime and Linux x86_64 for Steam. They've restructured the files in the root Steam folder so that the ones we were relying on have moved around. We just need to find where they live and update the script.

It's also notable that Valve have started adding distrobox to the SteamOS image, this means a onetime WormsWMD image may be a solution if we can craft that.

In the meantime it's worth noting that ubuntu12_32 and ubuntu12_64 are basically stripped out now and the contents are in steamrt64. However it appears that steamrt64 may be dynamicaly linked in the style of Fedora UniversalBlue where image updates are downloaded and then the Steam client creates links in a temporary directory.

Results of 2026 Steam root scan

ls ~/.steam/steam -1
appcache
bin
bootstrap.tar.xz
clientui
compatibilitytools.d
config
controller_base
d3ddriverquery64.dxvk-cache
depotcache
fossilize_engine_filters.json
friends
GameOverlayRenderer64.dll
graphics
installscriptevalutor_log.txt
legacycompat
linux32
linux64
local.vdf
logs
music
package
public
resource
standalone_installscript_progress_228980.vdf
steam
steamapps
steamclient64.dll
steamclient.dll
steam_dev.cfg
steam_msg.sh
steamrt32
steamrt64
steam.sh
steam_subscriber_agreement.txt
steamui
tenfoot
ThirdPartyLegalNotices-Chromium.html
ThirdPartyLegalNotices.css
ThirdPartyLegalNotices.doc
ThirdPartyLegalNotices.html
ubuntu12_32
ubuntu12_64
update_hosts_cached.vdf
userdata

Result of new runtime directory scan

ls ~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-M1WLH3/ -1
bin
etc
lib
lib32
lib64
overrides
sbin
usr

Current work-in-progress Run.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

# Make a script that loooks in the steamrt64 directory structure to find the "tmp-" directory and navigate in there

export LC_ALL=C
export LD_LIBRARY_PATH="$SCRIPT_DIR/lib:~/.steam/steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/:~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-M1WLH3/lib/x86_64-linux-gnu/:/usr/lib:/usr/local/lib"
export LD_PRELOAD="$(
	printf "%s " ~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-M1WLH3/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 \
		~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-M1WLH3/lib/x86_64-linux-gnu/libssh2.so.1 \
		~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-M1WLH3/lib/x86_64-linux-gnu/libbz2.so.1.0 \
		~/.local/share/Steam/ubuntu12_32/steam-runtime.old/usr/lib/x86_64-linux-gnu/libidn.so.11
)"
chmod a+x ./Worms\ W.M.Dx64
./Worms\ W.M.Dx64

Remaining error is; ./Worms W.M.Dx64: symbol lookup error: /lib64/libsndfile.so.1: undefined symbol: lame_encode_buffer_interleaved_int - Bazzite 44

@initdream

Copy link
Copy Markdown

@cgiAlexis thanks for the heads up, the fix for your problem is to point the libsndfile.so.1 to your tmp folder, instead of using your OS' library.

~/.local/share/Steam/ubuntu12_32/steam-runtime.old/usr/lib/x86_64-linux-gnu/libsndfile.so.1 or
~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-M1WLH3/lib/x86_64-linux-gnu/libsndfile.so.1

This current version of the script works perfectly for me, I've added two DBUS exports, because it was crashing for me, so be aware that there might be some DBUS bug (the solution is using the old libraries again).

#!/bin/bash
export LC_ALL=C 
export MESA_GL_VERSION_OVERRIDE=2.0COMPAT 
export MESA_GLSL_VERSION_OVERRIDE=410
export DBUS_FATAL_WARNINGS=0
export QT_NO_DBUS=1

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

export LD_LIBRARY_PATH="$SCRIPT_DIR/lib:~/.steam/steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/:~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-5OHSH3/lib/x86_64-linux-gnu/:/usr/lib:/usr/local/lib"
export LD_PRELOAD="$(
	printf "%s " ~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-5OHSH3/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 \
		~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-5OHSH3/lib/x86_64-linux-gnu/libssh2.so.1 \
		~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-5OHSH3/lib/x86_64-linux-gnu/libbz2.so.1.0 \
		~/.local/share/Steam/ubuntu12_32/steam-runtime.old/usr/lib/x86_64-linux-gnu/libidn.so.11 \
                ~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-5OHSH3/usr/lib/x86_64-linux-gnu/libgnutls.so.30 \
                ~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-5OHSH3/usr/lib/x86_64-linux-gnu/libunistring.so.2 \
                ~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-5OHSH3/usr/lib/x86_64-linux-gnu/libbrotlidec.so.1.0.9 \
                ~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-5OHSH3/usr/lib/x86_64-linux-gnu/libhogweed.so.6.4 \
                ~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-5OHSH3/usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 \
		~/.steam/steam/steamrt64/steam-runtime-steamrt/var/tmp-5OHSH3/usr/lib/x86_64-linux-gnu/libnettle.so.8.4 \
                /usr/lib/libwavpack.so.1  
)"

exec "$@" > ~/worms-stdout.log 2> ~/worms-stderr.log

Just make sure to change the path your "tmp-XXXXXX" folder, it changes for everyone.

We might need to cook a library folder using the old libraries provided by Steam, otherwise this will break again with more Steam changes.

@Fo0og

Fo0og commented May 10, 2026 •

Copy link
Copy Markdown

I have this script:

#!/bin/bash
export LC_ALL=C
export MESA_GL_VERSION_OVERRIDE=2.0COMPAT
export MESA_GLSL_VERSION_OVERRIDE=410
export DBUS_FATAL_WARNINGS=0
export QT_NO_DBUS=1
export STEAM_RUNTIME=~/.steam/steam/steamrt64/pv-runtime/steam-runtime-steamrt/var/tmp-H76MO3/

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

export LD_LIBRARY_PATH="$SCRIPT_DIR/lib:~/.steam/steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/:$STEAM_RUNTIME:/usr/lib:/usr/local/lib"
export LD_PRELOAD="$(
printf "%s " "$STEAM_RUNTIME"/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
"$STEAM_RUNTIME"/lib/x86_64-linux-gnu/libssh2.so.1
"$STEAM_RUNTIME"/lib/x86_64-linux-gnu/libbz2.so.1.0
~/.local/share/Steam/ubuntu12_32/steam-runtime.old/usr/lib/x86_64-linux-gnu/libidn.so.11
"$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libgnutls.so.30
"$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libunistring.so.2
"$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libbrotlidec.so.1.0.9
"$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libhogweed.so.6.4
"$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1
"$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libnettle.so.8.4
"$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libFLAC.so.8
/usr/lib64/libwavpack.so.1
)"

exec "$@" > ~/worms-stdout.log 2> ~/worms-stderr.log

and it seems to work, but the executable is stopped by SIGSEGV with no other info
Job 1, './Worms\ W.M.Dx64' terminated by signal SIGSEGV (Address boundary error)
is all I get.

Also, I am on Fedora 43.

edit: I gave up. Switching to the windows version under proton 9.0-4 works

@hoehermann

Copy link
Copy Markdown

Using a combination of the suggestions made here, I managed to enjoy Worms W.M.D. on Ubuntu 24.04 for quite some time. Unfortunately, update https://steamdb.info/patchnotes/24832324/ seems to have broken online multiplayer: I can no longer join games. Error messages are "Session no longer available", "Network problem", and "Please check your internet connection". So even trying to get this to run on Linux again is moot  – that is unless you want to have single-player or local multiplayer exclusively.

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