DroidDeck brings the SteamOS experience to Android

★ 19,164⑂ 976👁 107⑃ 1,301● 889▤ 22◈ 108
KotlinGPL-3.0Created 2026-09-24
19,164
stars
+305
976
forks
107
watchers
1,301
prs
889
issues
22
releases
108
discussions

README

DroidDeck brings the SteamOS experience to Android: Steam Gaming Mode, full Linux desktop, integration with GOG, Epic Games, Xbox, and other storefronts, Steam VR, and more!

100% open source. No ads. No telemetry. No proprietary components. No source withheld.


  
  



  



  
  




 DroidDeck has no website. Only download it from this repository's Releases.


  
  
  
  


 Install

1. Android 9 or newer on Adreno 730 or newer, or any 8xx. Adreno 6xx, Mali, Xclipse and PowerVR are experimental. Adreno 710 is currently unsupported. No root needed.
2. About 3 GB free for the runtime, plus 1.1 GB for the desktop and emulators.
3. Install the APK, install the Linux runtime, press Play and sign in to Steam.
4. On Android 14 and newer, turn on Disable child process restrictions in Developer options. On Android 12 and 13, Steam's first launch shows a Fix it for me button that walks you through it.

Smart glasses setup is in the support matrix. Release notes are in docs/releases.

Help, Preview builds and device reports are on Discord. For bugs, post in bug-reports with the zip from Share logs.

 Build

Needs Docker, Java 17, the Android SDK and NDK, Rust via rustup, GitHub CLI, Python 3 and zstd.

bash
tools/build_local.sh


The APK lands in app/build/outputs/apk/release/. Install it with tools/deploy_local.sh. After the first run, ./gradlew :app:assembleRelease reuses the prepared inputs. Unit tests run with ./gradlew -PskipRust=true :app:testDebugUnitTest, and the helper and preload suite with bash tools/test_local.sh.

On Windows, see tools/run_windows.ps1 and tools/prepare_windows_runtime.py.

 Limits

Compatibility and performance vary by device. Desktop compositing is software rendered, and Firefox sandboxing is reduced under proot.

 Credits and licence

DroidDeck is GPL-3.0. Steam and Proton belong to Valve Corporation. VITURE, RayNeo, XREAL, Rokid, REDMAGIC, Nintendo Switch and Joy-Con are trademarks of their owners. This project is not affiliated with any of them.


Runtime, Wine and Proton

- Runtime, shim, input and controller work build on WinNative and Bannerlator by maxjivi05.
- mmap ring buffer controller input by ribbit384 (WinNative 345).
- FEX (MIT) runs x86 code. DroidDeck's build puts the platform name under AT_PLATFORM so sharun AppImages by VHSgunzo (MIT) start through its userland-execve loader (MIT). FEX's code disk cache was checked in its source.
- x86 AppImages, and arm64 ones whose runtime can't unpack on Android, are unpacked with uruntime by VHSgunzo (MIT), shipped unmodified with its licence.
- x86 programs linking OpenSSL 3 use the copy in the Steam Linux Runtime 4.0. x86 Linux games get the /etc/asound.conf that pressure-vessel writes.
- WriteProcessMemory hooks fall back to /proc//mem the way Wine's server/ptrace.c did before Wine 11.
- Wine write watches use userfaultfd support in Proton's dlls/ntdll/unix/virtual.c (LGPL-2.1-or-later). libblsession supplies the arm64 syscall number and answers PAGEMAP_SCAN from 

Top issues

Discussions

Latest release

DroidDeck 0.7.0 0.7.0 2026-11-08
DroidDeck is 100% open source. No ads. No telemetry. No proprietary components. No source withheld.

Since 0.6.9, 39 people sent 194 pull requests, and 20 of them are first-time contributors. Our community is strongest when we can build together, and with DroidDeck 0.7.0, our community is about to get A LOT bigger!

0.7.0 introduces preliminary support for Mali, PowerVR and Xclipse GPUs! In addition, we now have GameJolt library and store, dual screen game mode + KDE Desktop, Syncthing integration, improvements for devices with low ram, customizable controller profiles and presets, hardware mo

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON