On Linux, Snes9x ships as an official AppImage built around the GTK port, and the current release — version 1.63, from the project’s GitHub releases page — keeps that model: one self-contained file, no package manager required. This guide covers getting the AppImage running, where the GTK build stores its configuration (including an XDG fix that landed in 1.63), and one place where the Linux build is genuinely ahead of the Windows one. For every platform in one place, see the platforms hub and the Snes9x download page.
Getting the official AppImage
The Linux asset in the 1.63 release is Snes9x-1.63-x86_64.AppImage, published alongside the Windows zips, the Mac zip and the libretro core packages on the GitHub releases page of snes9xgit/snes9x — the project’s only current official download channel. The historic snes9x.com site is frozen and hosts no current builds. Our direct link to the official file: download Snes9x 1.63 AppImage from the official GitHub release.
An AppImage is a single executable bundle, so setup is short:
- Download
Snes9x-1.63-x86_64.AppImage. - Make it executable — right-click → Properties → Permissions → “Allow executing file as program”, or run
chmod +x Snes9x-1.63-x86_64.AppImagein a terminal. - Launch it, then open a game from the File menu.
As the filename says, this build targets x86_64 machines. There is no official ARM AppImage in the 1.63 release, so Raspberry Pi and other ARM Linux users are better served by the libretro core route described in our RetroArch core explainer. Snes9x also provides no games: dump cartridges you own. No BIOS file is needed for normal SNES games — the enhancement chips are emulated in code.
The GTK port and where your config lives
The Linux interface is the project’s GTK port — the same port family that received several of the headline features of recent releases. A detail worth knowing if you manage dotfiles or sync settings between machines: in 1.63, the GTK port’s config file location was fixed to obey the $XDG_CONFIG_HOME environment variable. If you set XDG paths, Snes9x now respects them instead of insisting on its own default location; if you have never heard of XDG, nothing changes for you — the defaults just work.
The GTK port also carries the platform’s shader story: slang shader support reached the GTK OpenGL output in the 1.59 era, and the Vulkan output added in 1.62 can use slang shaders as well. If you are coming from the Mac app, our Snes9x for Mac guide covers the other native desktop build.
Controller hotplugging: where Linux beats Windows
Here is an honest platform difference most guides get backwards. Since version 1.61, the GTK port supports hotplugging joysticks — connect a controller mid-session and the emulator sees it. The Windows port is the opposite: Windows hotplugging was disabled back in 1.56 in favour of a menu option to reconfigure joysticks, and no later release re-enabled it. So on Linux you can plug a pad in whenever you like; on Windows, plug in before launching or use the Input menu afterwards. Neither behaviour is a bug — but knowing which one your platform has saves a confused half hour.
Saves, states and cheats
The emulation core is shared across platforms, so the file model is the familiar one: battery saves as .srm files (written by the game’s own save feature), save states for instant snapshots, and cheats — Game Genie, Pro Action Replay and raw codes — stored in .cht files that are also compatible with higan/bsnes. ROMs open in the usual formats (.smc, .sfc and other copier formats), including a single ROM inside a .zip, .gz or .jma archive.
Running Snes9x on a Chromebook or other constrained Linux setups
Because the AppImage needs no installation, it is also the build to try inside Linux containers and other restricted environments where you cannot add system packages. Chromebook owners in particular should read our Snes9x on a Chromebook guide, which weighs this Linux route against the Android app route and explains which Chromebooks can use each. Whatever route you pick, start from the download page or the platforms hub so you are always getting the official 1.63 files.
What recent releases brought to the GTK port
The GTK port has quietly collected several of the most user-visible improvements of the last few release cycles. The 1.55-era GTK work added the tenth save slot; in 1.56.2 the GTK and Unix builds learned to preserve the current joypad state when rewinding, so stepping back in time did not scramble your inputs; 1.61 added the joystick hotplugging described above; and 1.62 improved Wayland support, including handling fractional DPI properly, alongside the new Vulkan output method, which can use libretro’s slang shaders just as the OpenGL output has since 1.59. Version 1.63’s contribution was smaller — the XDG config fix — but it is the kind of detail Linux users actually notice, because it determines whether the emulator respects the directory layout the rest of your system already uses.
The pattern is worth naming: on Windows, recent Snes9x releases have mostly been about stability, while the GTK port kept gaining platform behaviour. If you run both, do not assume the two builds behave identically — check which port a piece of advice was written for before following it, especially anything about controllers, config files or display scaling.
