Skip to content

Instantly share code, notes, and snippets.

@sxiii
Last active April 14, 2024 14:21
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save sxiii/9d9b8435fd343b2024b16b8cbe86a69e to your computer and use it in GitHub Desktop.
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.

@sxiii
Copy link
Author

sxiii commented Mar 16, 2023

Here's the new version that works for me. Not sure that it's better then the "Proton" version though, as it seems Team17 is not very eager to update the Linux version. But you can test it out :)

#!/bin/bash

export LC_ALL=C
export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib"
export STEAM_ROOT=~/.steam
export PLATFORM=bin32
export STEAM_RUNTIME=$STEAM_ROOT/$PLATFORM/steam-runtime

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 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libidn.so.11 \
                "$STEAM_RUNTIME"/lib/x86_64-linux-gnu/libgcrypt.so.11 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/librtmp.so.0 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libhogweed.so.4 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libnettle.so.6 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libsndfile.so.1 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libFLAC.so.8
)"
chmod a+x ./Worms\ W.M.Dx64
./Worms\ W.M.Dx64

Hope it helps @ivdok @psmgeelen :)

@lucasmenno
Copy link

This works like a charm <3

But i have 2 problems with that. My Controller isn't recognized and i can't use steam overlay (to get game invites).
Is there any way those 2 could work?
In Portal 2 Overlay and Controller works.

@sxiii
Copy link
Author

sxiii commented Jun 6, 2023

@lucasmenno I believe that the controller and lack of overlay issues are connected (basically, it's the same issue). So this issue is that some of native linux games don't provide steam overlay, or, basically, they don't really 'link' into steam - they are kinda just separate binaries (this affect not only the worms, but some other games as well). I'm not sure if there's a way around it (may be some; for instance; if you'd figure out a way to add a steam overlay to some game that doesn't have it on Linux, I think this will solve issue for all your games then). Hope this opens up the challenge for you :) P.S. I've asked ChatGPT about this, here is the answer:

If you're experiencing issues with the Steam Overlay not appearing in certain Linux games, there are a few potential solutions you can try:

  1. Enable Steam Overlay: First, ensure that the Steam Overlay is enabled for the game in question. Right-click on the game in your Steam Library, select "Properties," and under the "General" tab, make sure the "Enable the Steam Overlay while in-game" option is checked.
  2. Update Graphics Drivers: Outdated or incompatible graphics drivers can sometimes cause issues with the Steam Overlay. Make sure you have the latest graphics drivers installed for your Linux distribution and graphics card. You can typically find updated drivers through your distribution's package manager or by visiting the official website of your graphics card manufacturer.
  3. Run Steam as a 32-bit Application: Some games may require Steam to run as a 32-bit application, even on 64-bit Linux systems. To do this, open a terminal and navigate to the directory where Steam is installed (usually "~/.steam/steam"). Then, run the following command: STEAM_RUNTIME_PREFER_HOST_LIBRARIES=0 STEAM_RUNTIME=0 ./steam. This command disables the Steam runtime and forces it to use system libraries.
  4. Launch Game with Proton: If you're trying to run a Windows game through Steam Play's Proton compatibility layer, you can try launching the game with a different Proton version. Right-click on the game in your Steam Library, select "Properties," and under the "Compatibility" tab, choose a different Proton version from the dropdown menu. Some games may work better with certain Proton versions.
  5. Check Compatibility Reports: Before purchasing or running a game on Linux, it's helpful to check the community-provided compatibility reports for that specific game on websites like ProtonDB. These reports provide information on how well a game works with Proton or native Linux support, including any known issues with the Steam Overlay.

If none of these solutions resolve the issue, it's possible that the game you're trying to run has specific compatibility or configuration issues on Linux. In such cases, you may want to search for community forums or threads specific to that game to see if others have encountered and resolved similar issues.

@briggz84
Copy link

Using the most recent iteration of the Run.sh, I was getting a very brief blank window. Running from terminal I was getting a lot of libGL errors, my solution that worked for me:

If you are receiving MESA-LOADER errors about unable to load driver "/usr/lib/dri/iris_dri.so" or similar, to fix this I had to create a symbolic link even though it was searching the correct paths including "/usr/lib/x86_64-linux-gnu/dri/"

sudo ln -s /usr/lib/x86_64-linux-gnu/dri/iris_dri.so /usr/lib/dri/

I then had to copy a more recent version of the C++ library file libstdc++.so.6.0.30 from /usr/lib/x86_64-linux-gnu, and replace the libstdc++.so.6 with in the WormsWMD/lib folder.

I'm running Linux Mint Cinnamon 21.2 with integrated Intel graphics.

@mhkdepauw
Copy link

Using the most recent iteration of the Run.sh, I was getting a very brief blank window. Running from terminal I was getting a lot of libGL errors, my solution that worked for me:

If you are receiving MESA-LOADER errors about unable to load driver "/usr/lib/dri/iris_dri.so" or similar, to fix this I had to create a symbolic link even though it was searching the correct paths including "/usr/lib/x86_64-linux-gnu/dri/"

sudo ln -s /usr/lib/x86_64-linux-gnu/dri/iris_dri.so /usr/lib/dri/

I then had to copy a more recent version of the C++ library file libstdc++.so.6.0.30 from /usr/lib/x86_64-linux-gnu, and replace the libstdc++.so.6 with in the WormsWMD/lib folder.

I'm running Linux Mint Cinnamon 21.2 with integrated Intel graphics.

Replacing the C++ library and the run.sh worked for me on ubuntu 20.04 with amd radeon integrated graphics. Thank you!

@qlyoung
Copy link

qlyoung commented Jan 29, 2024

As of latest steam runtime and worms version, this is the working script:

#!/bin/bash

export LC_ALL=C
export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib"
export STEAM_ROOT=~/.steam
export PLATFORM=bin32
export STEAM_RUNTIME=$STEAM_ROOT/$PLATFORM/steam-runtime

export LD_PRELOAD="$(
        printf "%s " ~/.steam/steam/steamapps/common/WormsWMD/lib/libQt5*.so* \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libidn.so.11 \
                "$STEAM_RUNTIME"/lib/x86_64-linux-gnu/libgcrypt.so.11 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/librtmp.so.0 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libhogweed.so.4 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libnettle.so.6 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libsndfile.so.1 \
                "$STEAM_RUNTIME"/usr/lib/x86_64-linux-gnu/libFLAC.so.8
)"
chmod a+x ./Worms\ W.M.Dx64
./Worms\ W.M.Dx64

It's the same as the previous one, but libdbus no longer needs to be overridden (at least on Arch)

@bazzawill
Copy link

So I just picked this up as it was on sale I did notice the .sh file and was like yay native linux game however when it did not launch and with an impatient 6yo I just enabled proton and it just worked including controller.

@KNejad
Copy link

KNejad commented Apr 14, 2024

@qlyoung your solution didn't work for me but the solution from @sxiii above still works for me on Arch.

Though I do see some dbus related exceptions in the log:

process 164314: arguments to dbus_connection_unref() were incorrect, assertion "connection->generation == _dbus_current_generation" failed in file ../../dbus/dbus-connection.c line 2794.
This is normally a bug in some application using the D-Bus library.

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