Smash Ultimate PC on Linux and Steam Deck
Updated · Covers WindowSmash v0.2.0-alpha.1 and OpenSmash runtime-c2ca705
Both projects offer experimental native Linux builds. Choose one path below: WindowSmash uses SDL2 with DXVK; OpenSmash uses SDL3 with Vulkan and currently has no Linux online mode or F1 menu. Neither is a formal Linux release.
On this page
WindowSmash on Linux
Download, game files and build time
Download the WindowSmash source ZIP. Use its install-windowsmash.sh source-installer path; this is different from a Linux package exported by an existing Windows installation. The installer updates its source unless --no-update is passed.
| Item | Native source-install path |
|---|---|
| ItemHardware | Native source-install pathAVX2 x86-64 CPU, working Vulkan driver, at least 8 GB RAM; 16 GB builds faster |
| ItemStorage | Native source-install pathAbout 30 GB for the build, plus space for your existing game files |
| ItemTime | Native source-install pathInitial compilation takes one to a few hours depending on the machine; allow additional time for package downloads |
| ItemExisting Game folder | Native source-install pathBase game .nca, .nsp or .xci, with the compatible update and DLC if used |
| ItemExisting Keys folder | Native source-install pathprod.keys and title.keys |
| ItemExisting Firmware folder | Native source-install pathFirmware .nca files |
The installer searches existing yuzu-family and Ryujinx folders, including Flatpak locations. It checks the entered folders in the terminal and reports what it found. Keep the game folders mounted and readable. Use the versions below and folder examples if you need help identifying the files.
Install and start
- Unpack the source ZIP into a local folder such as
~/WindowSmash. - Open a terminal in that folder.
- Run
bash install-windowsmash.sh. - Approve the distribution package installation with
sudowhen requested. - At the Keys prompt, press Enter to keep the detected path or type the correct existing folder.
- At the Firmware prompt, confirm or correct that existing folder.
- At the Game prompt, confirm or correct the folder containing your existing base game and intended update/DLC.
- Read each file check before continuing.
- Enter the online name you want displayed when asked.
- Wait for the installer to complete.
- Run
./play-ssbu.shfrom the source folder.
The installer supplies clang/lld, bison, flex, SDL2, libopus, libvpx, the Vulkan loader and zenity through the package manager, plus a private Python environment and DXVK/vkd3d downloads. If a build stops, rerun the same command; use bash install-windowsmash.sh --jobs 4 if compilation exhausts memory.
On first play, wait for shader work to settle. The arrow keys move and Z is A. Close the game window to finish. For an offline start use bash launchers/play-ssbu-offline.sh. Optional shader preparation is bash launchers/prepare-shaders.sh with the game closed; allow it to finish before launching again.
SteamOS preparation
For a Steam Deck running SteamOS, build in Desktop Mode with a terminal available. System-package installation needs a writable system and a sudo password; an OS update can remove those build dependencies.
- Run
passwdif your account does not yet have a password forsudo. - Run
sudo steamos-readonly disableto permit the package installation. - Run
bash install-windowsmash.shfrom the unpacked WindowSmash folder.
Only if package installation reports an uninitialised keyring, run sudo pacman-key --init, then sudo pacman-key --populate archlinux holo, then rerun the installer. On an image-based Fedora system, follow any package installer's requested reboot before rerunning the build.
OpenSmash on Linux
Download, game files and build time
Download the OpenSmash source ZIP, then use the Linux commands below, not Install SSBU.bat or a Windows runtime ZIP.
| Item | This Linux build |
|---|---|
| ItemToolchain and driver | This Linux buildDistribution with clang 19 or newer, SDL3 and Vulkan 1.3; package-install paths include Arch, Fedora 42+, Debian 13 and Ubuntu 25.04 |
| ItemMemory | This Linux buildAt least 16 GB RAM |
| ItemStorage | This Linux buildRoughly 12 GB build plus 4 GB cache, in addition to the existing roughly 16 GB game directory |
| ItemTime | This Linux buildA 24-thread PC with 31 GB RAM took about 1.5 hours compiling and another 14 minutes for the NRO stage; other PCs can take longer |
| ItemGame files | This Linux buildOne prepared directory containing exefs/ and romfs/, supplied explicitly with --dump |
The game directory needs exefs/main, sdk, rtld, subsdk0, main.npdm, and romfs/data.arc. Choose this directory yourself: the Linux setup has no automatic game-file search. Use 13.0.4 for the Linux-tested path; setup also accepts 13.0.5, which still needs Linux testing.
Install and start on a regular Linux desktop
For SteamOS, use the separate container steps immediately below instead.
- Unpack the source ZIP into its own directory.
- Open a terminal in that directory.
- Run
bash scripts/linux/install_deps.sh. - Approve the requested system packages with
sudo. - Run
deps/venv/bin/python scripts/setup.py --target linux --dump "/absolute/path/to/existing-input", replacing the quoted example with your existing directory. - Wait for setup to finish.
- Run
./play.sh.
The dependency script installs the distribution's compiler, SDL3, FreeType, OpenSSL, FFmpeg, glslang, Vulkan loader, OpenGL/Opus libraries, Python and git as needed. It also prepares the private Python environment and source dependencies. To resume an interrupted build, repeat the setup command with the same --dump path; add --jobs 4 if memory is exhausted. Repeating setup resumes building; it does not itself fetch newer repository source.
OpenSmash on SteamOS: build and play inside distrobox
Use Desktop Mode on SteamOS 3.5 or newer, which includes distrobox and podman. The ordinary dependency script stops on the SteamOS host and directs you to this container path. This is separate from WindowSmash's host-package setup above.
- Switch to Desktop Mode.
- Unpack the OpenSmash source ZIP into a new directory inside your home folder.
- Open Konsole in that source directory.
- Run
distrobox create --name ssbu --image docker.io/library/archlinux:latestif you have not already created thessbucontainer. - Run
distrobox enter ssbu. - Change into the same source directory inside the container, for example
cd "/home/your-user/ssbu-recomp"with your actual path. - Check that your existing game directory is readable from this container.
- Run
bash scripts/linux/install_deps.sh. - Run
deps/venv/bin/python scripts/setup.py --target linux --dump "/absolute/path/to/existing-input"with that accessible input path. - Run
./play.shafter the build finishes.
The container can see your home folder and keeps its tools there. On a Valve device, the dependency script also installs vulkan-radeon and libpulse inside the container. To play again, enter ssbu, change into the source directory and run ./play.sh there; launching from the host is not the same environment.
bash scripts/linux/install_deps.sh --steamos-host deliberately chooses the alternative host install and needs a sudo password, writable system and pacman keys. A SteamOS update can remove those host packages. Use the container sequence above unless you specifically intend to maintain that alternative. Steam Deck gameplay and build time still need testing.
First launch and controls
Wait at the first shader progress screen for several minutes. On the test PC, preparation reached 61% after 200 seconds; a driver update can require preparation again. On a new save, the Milestones banner waits for A: press Z on the keyboard. Close the window to quit.
Linux testing so far used one CachyOS/NVIDIA/Wayland PC. Steam Deck, other distributions and AMD/Intel GPUs still need testing. There is no F1 menu, online play, OpenGL fallback or album movie recording. Edit build-linux/config/controllers.ini for button bindings and build-linux/config/graphics.ini for display settings; only windowed mode was tested. The defaults are arrow keys to move, Z/X/C/V for A/B/X/Y and Enter/Backspace for +/−.
Files and first fixes
| Project | Files to locate after setup |
|---|---|
| ProjectWindowSmash | Files to locate after setupinstall.log, build/play.log, reports/, and the selected tree's save/; root controllers.ini and display.ini |
| ProjectOpenSmash | Files to locate after setupLog: $XDG_DATA_HOME/ssbu-recomp/last_run.log when XDG_DATA_HOME is nonempty; otherwise ~/.local/share/ssbu-recomp/last_run.log. Default saves: ~/.local/share/ssbu-recomp/userdata; settings: build-linux/config/; cache: build-linux/cache/. |
OpenSmash uses $XDG_DATA_HOME/ssbu-recomp/userdata when XDG_DATA_HOME is set, or the directory supplied with --userdata. Back up the actual save directory with the game closed. --userdata changes the save location, not the play.sh log path; find the log using XDG_DATA_HOME in the environment where you launched, including inside ssbu on SteamOS.
| Stop | First action |
|---|---|
| StopWindowSmash missing headers/packages | First actionRerun the installer so its package checks can finish. |
| StopWindowSmash black window | First actionCheck that Vulkan selects the intended GPU. |
| StopEither compile is killed for memory | First actionResume with fewer jobs. |
| StopOpenSmash font error/code 7 | First actionRead the font failure in last_run.log. |
| StopOpenSmash stays black after shader work | First actionCheck the log's nvn_vk errors and the Vulkan device reported by vulkaninfo. |
| StopNo Linux audio | First actionCheck the active PipeWire/PulseAudio output and the project's SDL backend. |
Use Linux troubleshooting for the next diagnostic action, controls for remapping, or saves for backup/restore. Windows GameCube driver instructions do not apply to either Linux build.
Versions covered by this guide
| Project | Source version | Release status and game versions |
|---|---|---|
| ProjectWindowSmash | Source versiona9aac43 |
Release status and game versionsNo formal release; v0.2.0-alpha.1 is a prerelease. 11.0.0 and 13.0.5; 13.0.5 has limited match testing. Mac: opening/menus only. |
| ProjectOpenSmash-Ultimate | Source versioneac10a1 |
Release status and game versionsNo formal release; runtime-c2ca705 is a prerelease. 13.0.4 and 13.0.5 recognised; Linux tested with 13.0.4. |
