XC2 Recomp on Linux & Steam Deck

Every tagged release of AksharDP/xc2-recomp ships a self-contained Linux x86_64 type-2 AppImage (XC2-Setup-0.1.12-linux.AppImage, 218.7 MB) with an automatic Steam Deck 1280x800 / 40 FPS device profile.

  • AppImage: XC2-Setup-0.1.12-linux.AppImage (218.7 MB)
  • Kernel & libc: Linux 6.7+ · glibc 2.34+
  • Deck preset: 1280x800 · 40 FPS · fifo
  • Shader cache: Portable mesa-cache/
Front view of a Valve Steam Deck handheld PC running Linux
Linux x86_64 AppImage and SteamOS handheld target (1280x800, 40 FPS device profile)

Linux kernel 6.7+ & glibc 2.34+ requirements

Added as a first-class target in v0.1.6, the Linux release (XC2-Setup-0.1.12-linux.AppImage) packs Python 3.14, Tcl/Tk 9.0.4, LLVM 23 (clang, lld, llvm-ar), the Steam Runtime 3 "sniper" SDK sysroot, libSDL3.so.0, and xc2_xlate inside a static type-2 AppImage that requires no libfuse2 on the host:

Linux SubsystemRequirementWhy XC2 Recomp Needs It
Linux Kernel6.7 or newerRequired for the kernel memory write-watch mechanism (PAGEMAP_SCAN / userfaultfd write-watch) used by the runtime’s memory tracking.
C Library (glibc)glibc 2.34+ (Setup) · glibc 2.31+ (Game)The compiled game binary (xc2) links against the Steam Runtime 3 sniper sysroot (glibc 2.31) and static Opus/libvpx/zstd/libstdc++, while the setup’s bundled LLVM 23 and cryptography wheel require glibc 2.34 (Ubuntu 22.04+, Debian 12+, Fedora 35+, SteamOS 3.5+).
Graphics DriverVulkan 1.3 + VK_EXT_external_memory_hostMesa RADV (AMD / Steam Deck) or proprietary NVIDIA driver supporting Vulkan 1.3 host-memory imports.

Installing on Steam Deck (Desktop Mode → Gaming Mode)

  1. Switch your Steam Deck to Desktop Mode and download XC2-Setup-0.1.12-linux.AppImage (218.7 MB).
  2. Open Konsole (or Dolphin file manager properties) and make the AppImage executable:
    chmod +x ~/Downloads/XC2-Setup-0.1.12-linux.AppImage
    ~/Downloads/XC2-Setup-0.1.12-linux.AppImage
  3. In the XC2-Setup window, select your base game archive, Update 3.0.1 (or JP 3.0.0), optional DLCs, console decryption key file, and target install folder (internal NVMe or microSD card), then press Start.
  4. Because the AppImage is mounted read-only and a Steam Deck’s /home partition can be tight on space when installing to an SD card, the Linux installer automatically places its temporary C build folder at .setup-temp/ inside your chosen install directory (configurable via --temp).
  5. Once setup finishes, right-click the generated xc2 binary inside your install folder, choose Add to Steam, and return to Gaming Mode. No Proton compatibility layer should be enabled—xc2 is a native Linux ELF executable!

Automatic Steam Deck device profile & portable Mesa cache

When device_profile = auto (the default in xc2.ini) detects a Steam Deck, XC2 Recomp automatically applies handheld-tuned defaults for any key you have not manually overridden:

Fullscreen & Window
fullscreen = 1 and window_size = 1280x800 (fills the 16:10 Steam Deck display while keeping 16:9 proportions via picture_fit = keep).
Resolution & Scaling
output_res = 1280x720 and render_scale = game with AMD FSR 1 spatial sharpening (upscaler = fsr, sharpness = 80).
Frame Pacing
vk_present = fifo (VSync) and fps_limit = 40 for smooth 40 Hz / 40 FPS frame delivery on Steam Deck LCD and OLED panels.
Memory Mode on Linux
Linux defaults to memory = import with staging storage, saving ~1.3 GiB of unified APU memory.
Portable RADV Shader Cache
Unless MESA_SHADER_CACHE_DIR is set in the environment, the Linux runtime stores Mesa RADV’s shader cache in mesa-cache/ right next to xc2 so it does not fill ~/.cache on the internal drive.

XC2 Recomp uses SDL3 controller input with automatic Nintendo, Xbox and PlayStation button prompt generation (plus custom rumble curve and Xbox impulse trigger options):

ControllerBest For in XC2 RecompHardware AdvantageLink
8BitDo Ultimate 2 WirelessNintendo layout & Windows/Deck dockZero-drift TMR sticks, charging dock, native Switch/XInput mode toggleView on Amazon
GameSir Cyclone 21000 Hz Blade combo cancelingTMR sticks, micro-switch ABXY buttons and 1000 Hz wireless dongleView on Amazon
Sony DualSensePlayStation button promptsAutomatic PlayStation icon rendering in XC2 tutorials and Driver Arts HUDView on Amazon
Xbox Wireless ControllerXbox prompts & impulse triggersSupports rumble_triggers = 1 in xc2.ini with redrawn Xbox button glyphsView on Amazon

As an Amazon Associate, this site earns from qualifying purchases.

Mountain peaks rising above a dense sea of clouds at sunrise
Karst peaks emerging above a morning sea of clouds, echoing the Cloud Sea Titans of Alrest
Natural green emerald crystal prism embedded in dark mineral matrix
Hexagonal emerald crystal prism in matrix, echoing the Aegis Core Crystal geometry
Desktop gaming PC workstation with dual monitors and tempered glass chassis
Windows 10/11 x64 desktop workstation for Vulkan 1.3, AMD FSR 3.1/4 and 3040x1710 internal rendering

Common questions

Should I force Proton Experimental when adding xc2 to Steam on Steam Deck?

No! The Linux AppImage compiles a native Linux x86-64 ELF binary (xc2) linked against libSDL3.so.0 and the system Vulkan loader. Leave "Force the use of a specific Steam Play compatibility tool" unchecked in Steam properties.

Where does the Linux installer save my last-used file paths for updates?

On Linux, XC2-Setup saves your last selected paths (never the key contents) in $XDG_CONFIG_HOME/xc2-recomp/launcher.json or ~/.config/xc2-recomp/launcher.json.