Skip to content

Instantly share code, notes, and snippets.

Last active November 6, 2019 21:01
Show Gist options
  • Save HypatiaOfAlexandria/22bdd2aa3a27c9b690b81829161a9a72 to your computer and use it in GitHub Desktop.
Save HypatiaOfAlexandria/22bdd2aa3a27c9b690b81829161a9a72 to your computer and use it in GitHub Desktop.
Running JoblessMS through Wine

Running JoblessMS through Wine

Important note

Since the time that this guide was first written, versions of Wine higher than 4.6 have been released, and they do not work with JoblessMS. As far as I know, using Wine 4.6 (or perhaps “stable” Wine 4.0.x, although I haven’t tried it) is your best bet.

In order to conveniently use old versions of Wine like this that aren’t provided by your package manager, I recommend using Lutris (Lutris is Linux only, so if you aren’t on Linux you may use other options like e.g. PlayOnMac). If using a Wine front-end like Lutris/PlayOnMac/PlayOnLinux/&c., you can follow steps 1 through 6 normally, but steps 7 and 8 will look different since you will be using the front-end instead.

What is Wine?

Wine stands for Wine Is Not an Emulator. It’s a free-software compatibility layer for Windows NT programs that allows you to run them on Unix-like operating systems like GNU/Linux, macOS, &c.


  1. Make sure you’ve installed Wine via your package manager, and make sure that it’s the latest version you can get (and a staging version at that, if possible). On Ubuntu, for example, there is an official PPA maintained by the fine folks at WineHQ that you can use. On Arch Linux, you can do sudo pacman -S wine-staging. I’m not sure exactly how installation works on macOS but you can probably do it through homebrew, and this page has some details. Also make sure that you install the Wine Mono package offered, if there is one (e.g. on Arch Linux, sudo pacman -S wine-mono).

  2. Create a wineprefix for JoblessMS (I’ll be using ~/.jlms as the wineprefix directory, but you can use any directory that you want to create), like so (all commands in this guide will assume that your shell is bash, but obviously most of this will look similar even if you use a different shell):

    export WINEPREFIX=~/.jlms
    export WINEARCH=win32
  3. The above commands will create the prefix and also start up winecfg. If in the process of creating the prefix you get asked if you want to install Mono and/or Gecko, say yes. In winecfg, ensure that the operating system is set to “Windows 7”. Then you can close winecfg.

  4. Set up the required client stuff that you downloaded from here (get the Windows/“Full” client, not the macOS client), putting the extracted contents somewhere in $WINEPREFIX/drive_c, e.g. $WINEPREFIX/drive_c/JoblessMS. Also make sure that you put the JoblessWindowed.exe client in there as well so that you can start the game in windowed mode. Assuming that you downloaded both required files (JoblessMS\ Client.rar and JoblessWindowed.exe) into your ~/Downloads directory, and assuming that you have a command for extracting “RAR” archives which we’ll call $UNRAR_COMMAND:

    cd ~/Downloads
    $UNRAR_COMMAND JoblessMS\ Client.rar
    mv JoblessMS\ Client/ $WINEPREFIX/drive_c/JoblessMS/
    mv JoblessWindowed.exe $WINEPREFIX/drive_c/JoblessMS/
  5. You now need to get copies of ws2_32.dll and ws2help.dll, which can be downloaded from these two links, respectively: and

  6. Copy the two ws2*.dlls you’ve downloaded into your wineprefix’s system32 directory (viz. cp ws2*.dll $WINEPREFIX/drive_c/windows/system32/).

  7. cd into the directory that you have the game installed, and run the client binary with Wine:

    cd $WINEPREFIX/drive_c/JoblessMS
    wine JoblessWindowed.exe
  8. [Optional] You may want to alias a command that will launch the game for you with the appropriate environment variables so that it’s easier to launch. I have something looking like this in my ~/.bashrc that will launch the game and completely detach it from the terminal whenever I use the command jl:

    alias jl="cd ~/.jlms/drive_c/JoblessMS && WINEPREFIX=~/.jlms WINEDEBUG=-all wine JoblessWindowed.exe &>/dev/null & disown"

How do I multiclient?

The JoblessMS client isn’t modified as some Maplestory private server clients are to allow multiclienting. You can, however, easily get around this by doing steps 2, 3, and 6 with a new wineprefix (e.g. export WINEPREFIX=~/.jlms2) and then launching the game from within your already existing installation, the only thing different being the value of the WINEPREFIX environment variable.

Known bugs/issues

Holding down compositional keys (Ctrl, Alt, &c.) doesn’t repeat them

This is just a quirk of running Maplestory through Wine. The workaround that I use is binding my basic attack key to a non-compositional key, like X.

I can’t hear any sound coming from the game, and/or when the game is running, all other audio from other applications doesn’t work

I’ve never had this problem with any other Maplestory client other than the JoblessMS one. I’m not sure which library is the culprit of this bug (FAudio?), but having more up-to-date libraries will fix this bug. If you are on an LTS distribution (or what have you) such that you do have this bug, there are two possible solutions:

  1. Lutris (not sure about other front-ends) has options to “Disable Lutris Runtime” and to “Prefer system libraries”; by default, these two options are off, and Lutris will effectively inject up-to-date versions of the relevant libraries into that particular game when it launches. This will fix the bug, so simply keeping these options off (again, they are off by default anyways) should do the trick.
  2. The “workaround” that I used to use is to make sure that I’m playing music before I launch the game so that I don’t accidentally mute my entire desktop session and get forced to restart the client. This means living with no game sound whatsoever.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment