How To Run VASSAL on SteamDeck

Background

The SteamDeck from Valve is a portable console geared towards playing games from the Steam store. This store has a lot of different kinds of games available, ranging from causal games to monster strategic games.

The hardware used in SteamDeck is pretty good, with 4 Zen 2 cores and 16GB of high-speed RAM. The console runs SteamOS which is a variant of ArchLinux. That means that the SteamDeck has all the power of a Linux machine that one can hope for in such a device.

Typically, a SteamDeck device starts up in gamescope mode, which is essentially an shell dedicated to run the Steam application and to launch games. However, the SteamDeck can be switched into desktop mode where it will run a full KDE Plasma desktop. This is the modus-oprandi in which we will be running VASSAL.

VASSAL is a Java application, which means we need a Java Runtime Environment (JRE) to execute it in. In particular, VASSAL needs the full Graphical User Interface (GUI) of JRE, called Swing, to execute properly. For Linux, that means we need either X (nothing to do with the service formerly called Twitter, though that service as appropriated the X name and logo) or Wayland.

The SteamDeck device can run KDE Plasma either on top of X or Wayland, so the SteamDeck is really a prime candidate for installing VASSAL.

In the following, we will go through the steps needed to install and run VASSAL on your SteamDeck.

Installation

Needed Software

Since the SteamDeck in desktop mode already runs X or Wayland, we really do not need much.

These are easily obtained on the SteamDeck. Below, we will assume your SteamDeck has internet access. We will mostly work from the terminal (called Konsole in KDE).

Important

Command listed below must be typed into the terminal exactly as written. Case matters, as in downloads and Downloads are not the same thing. For example, if the instructions tells you to write

sudo steamos-readwrite enable

then two commands should be entered exactly as written above at the command prompt. That is first, type s u d o [space] s t e a m o s - r e a d w r i t e [space] e n a b l e [enter].

If you are reading this on your StreamDeck, you can highlight the commands and copy them to your clipboard ([ctrl]-c). In terminal you can paste the command with [ctrl]-[shift]-v or use the Paste button.

Preparations

If your SteamDeck is currently in gamescope mode, you must switch to desktop mode (see here or here). Essentially,

  • Press the Steam button
  • Select Power
  • Select Switch to Desktop
  • Wait for the device to switch to the desktop

When the SteamDeck is in desktop mode, launch the terminal.

  • Press the Steam icon in the lower left corner (application menu)
  • Select System
  • Select Konsole

If you haven’t already, you need to set a password for the current user - deck. This is because we will use the application sudo to install packages. sudo is a way to temporarily obtain super-user (or administrative) privileges on a Linux platform (something Windows only recently has obtained).

To set a password for the deck user, execute

passwd 

in the terminal. You should select a password that is reasonably safe (at least 8 characters, mixed lower and upper case letters, and at least one digit or other non-letter character), but also one you can remember. You will need to remember it for all eternity.

Once you have done this, you are ready to install VASSAL.

The Quick Way

This method should work, but has not been tested thoroughly (I tested it in an emulator).

In the terminal run setup-vassal.sh

wget https://gitlab.com/wargames_tex/vassal_my_contrib/-/raw/master/steamdeck/setup-vassal.sh -O setup-vassal.sh
bash setup-vassal.sh 

and follow the on-screen instructions

Once the process has completed, you will have VASSAL installed

Detailed instructions

If the above method fails, you can try to run them by hand. This will all be done in the terminal. If a step fails, do not proceed to the next step. Instead, ask for help (with details about what you did and what went wrong) on the VASSAL Technical Support & Bugs Forum.

Prepare the SteamDeck

First, go to your home directory

cd 

Here, cd means change directory

Put the SteamDeck into read/write mode

sudo steamos-readonly disable 

You will be prompted for the password you set earlier . Then initialise the key-ring used to authenticate packages

sudo pacman-key --init 
sudo pacman-key --populate holo 

(the last command is essential as it allows the system to validate
Valve build packages).

Now install the JRE

sudo pacman -S -noconfirm --color auto --needed jre-openjdk

Put the system back in read-only mode

sudo steamos-readonly enable 

With this, you SteamDeck has the needed software to run VASSAL.

Download and install VASSAL

Below, replace 3.7.9 with the version you want.

In the terminal do

wget https://github.com/vassalengine/vassal/releases/download/VASSAL-3.7.9-linux.tar.bz2

Unpack the package

tar xjvf VASSAL-3.7.9-linux.tar.bz2

You will now have the directory VASSAL-3.7.9 in your home directory

ls 

Here, ls means list content of current directory.

You can now remove the downloaded archive

rm VASSAL-3.7.9-linux.tar.bz2

Here, rm means remove the named file.

To make life a little easier you must create a symbolic link from the unpacked VASSAL directory

ln -s VASSAL-3.7.9 VASSAL-current 

Here, ln -s means create symbolic link (alias) from VASSAL-3.7.9 to VASSAL-current.

And to make life even easier you must create an command alias for VASSAL

echo -e "\nalias vassal=$HOME/VASSAL-current/VASSAL.sh\n" > ~/.bashrc

Et voila, you are ready to go. Open a new terminal (or create a new tab in the current terminal with [ctrl]-[shift]-t) and close the old terminal (or tab).

Additional (optional) steps

Create a Desktop Icon to Launch VASSAL

In the terminal do

nano ~/Desktop/VASSAL.desktop 

nano is a small text editor. In nano type in the exact lines

[Desktop Entry]
Type=Application
MimeType=application/x-vassal-module;application/x-vassal-log;application/x-vassal-save
Name=VASSAL
Exec=${HOME}/VASSAL-current/VASSAL.sh
Icon=${HOME}/VASSAL-current/VASSAL.svg
Actions=Run;Edit;
Categories=Games

[Desktop Action Run]
Name=Run
Exec=${HOME}/VASSAL-current/VASSAL.sh -l %f
                                   
[Desktop Action Edit]
Name=Edit
Exec=${HOME}/VASSAL-current/VASSAL.sh -e %f

and then press [ctrl]-x followed by y and [enter]. See also ~Desktop/VASSAL.desktop. Change permissions of the file to be executable (i.e., make it an “application”)

chmod a+x ~/Desktop/VASSAL.desktop 

Here, chmod means change mode, and a+x means make the named file executable (+x) by all (a).

Associate VASSAL Modules and Logs with VASSAL

This assumes you made the Desktop icon for VASSAL as described above.

In the terminal, run

mkdir -p ~/.local/share/mime/packages
nano ~/.local/share/mime/packages/application-x-vassal.xml 

Here, mkdir p means make the named directory (and any parents needed).

In nano type the exact lines

<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="application/x-vassal-module">
    <comment>VASSAL module file</comment>
    <glob pattern="*.vmod"/>
    <icon name="application-x-vassal"/>
  </mime-type>
  <mime-type type="application/x-vassal-log">
    <comment>VASSAL log file</comment>
    <glob pattern="*.vlog"/>
    <icon name="application-x-vassal"/>
  </mime-type>
  <mime-type type="application/x-vassal-save">
    <comment>VASSAL save file</comment>
    <glob pattern="*.vsav"/>
    <icon name="application-x-vassal"/>
  </mime-type>
</mime-info>

followed by [ctrl]-x, y, and [enter]. See also ~/.dot/local/share/mime/packages/application-x-vassal.xml. Then do

mkdir -p ~/.local/share/applications 
cp ~/Desktop/VASSAL.desktop ~/.local/share/applications/

This will put a copy (cp) of your Desktop launcher in a place where KDE Plasma will look for applications. Then do

mkdir -p ~/.local/share/icons/hicolor/scalable/mimetypes/
cp VASSAL-current/VASSAL.svg ~/.local/share/icons/hicolor/scalable/mimetypes/application-x-vassal.svg

This will set an icon for VASSAL module, log, and save files. Now do

update-desktop-database ~/.local/share/applications
update-mime-database ~/.local/share/mime

This will update the internal database used by KDE to find applications and the file associations

Running

Whether you ran the setup-vassal.sh script or did the steps by hand, you should now be able to run VASSAL on your SteamDeck in desktop mode.

Open a terminal as described above and do

vassal 

If you run the setup-vassal.sh script or installed a Desktop Icon and associated VASSAL module files with VASSAL, as described above, you can also launch VASSAL from the applications menu.

  • Press the SteamOS icon (application menu) in the lower-left corner of your screen
  • Select Games
  • Select VASSAL

Whether you executed VASSAL from the terminal or via the application menu, you should now see the VASSAL module manager window

The setup-vassal.sh has already downloaded the Battle for Moscow module for you, and put it in the directory ~/VMods.

ls VMods

If you did the steps above by hand, you can obtain the same module with

mkdir -p ~/VMods 
wget https://obj.vassalengine.org/images/e/e1/BattleForMoscow-ch-1.0.vmod -O VMods/BattleForMoscow-ch-1.0.vmod

In the VASSAL module manager, open this module by

  • Select the File menu
  • Select Open Module …
  • In the file chooser dialog navigate to VMods and select BattleForMoscow-ch-1.0.vmod

This will open the module.

You can also double-click any .vmod, .vsav, or .vlog file on your SteamDeck (via the file manager Dolphin - folder icon in the task bar) to open the module, save file, or log, respectively.

Upgrading VASSAL

To upgrade your VASSAL installation, download the new - say 3.7.10 - archive to your device

cd
wget https://github.com/vassalengine/vassal/releases/download/VASSAL-3.7.10-linux.tar.bz2

and unpack it

tar xvjf VASSAL-3.7.10-linux.tar.bz2

Then remove the old VASSAL-current link, and recreate it to point the new installation

rm VASSAL-current
ln -s VASSAL-3.7.10 VASSAL-current 

You may want to delete the downloaded archive and the old installation - say 3.7.9

rm VASSAL-3.7.10-linux.tar.bz2
rm VASSAL-3.7.9

Epilog

I hope you will find this guide useful. Note that I have not tested this on an actual SteamDeck device as I do not own such a device. However, I’ve tested the procedure on an emulated SteamDeck device.

That means that I cannot vouch for any user experience with VASSAL and the SteamDeck, such as moving pieces, invoking the context menus, and so on.

If you find any problems with this guide, please post a message in the VASSAL Technical Support & Bugs Forum. Please provide a detailed account of what you did and what went wrong. Screenshots (via the app Spectacle) can be very useful.

Enjoy.