This repository is a lightly adapted Quest 2 build of NomadsGalaxy's Android OpenParsec client. NomadsGalaxy created the functional Android client and integrated the Parsec SDK. This fork mainly provides a reproducible, Quest-friendly build.
It is not a new Parsec client, an Android port, or an immersive VR application. The upstream Android APK may already run on a Quest when sideloaded.
- builds only for Quest-compatible ARM64 devices
- uses the separate package ID
com.openparsec.quest - configures the app as a resizable landscape 2D panel
- defaults to direct pointer input and 1080p/60 on Quest hardware
- displays basic Quest controller guidance
- adds session-menu actions for Alt+Tab, Win+D, Ctrl+C, Ctrl+V, and Ctrl+Alt+Delete
- maps recognized Touch buttons to A = Alt+Tab, X = Copy, Y = Paste, and hold B = Ctrl+Alt+Delete
- maps the right Touch thumbstick to mouse-wheel scrolling and its press to a held middle-mouse button
- isolates Quest Touch input from paired gamepads so their axes, buttons, and D-pad state cannot overwrite each other
- prevents accidental movement of the keyboard and settings buttons: tap to open, or hold for one second before dragging
- keeps rendering and absolute input on the same measured GL viewport across resolution changes, keyboard resizing, Quest sleep, and reconnects
- handles both Android mouse-button event styles used by Quest pointers and clears stale held-button state when the panel is interrupted
- adds an opt-in 3–50 Mbps bandwidth limit using Parsec's host video-config messages while preserving the host's other current video settings
- adds the official Android client's Constant FPS host setting
- adds a real H.264 / Prefer H.265 selector using the newer Parsec Android client configuration API, with automatic H.264 fallback
- adds default-on network and device performance warning icons, with hysteresis to avoid flashing and an Overlay Warnings setting to hide them
- moves audio polling off the GL thread onto a lower-priority worker so video never waits for app-side audio work, and adds a Play Sound setting that pauses audio decoding/output without pausing video
- disables updates to the differently packaged upstream phone build
- includes small CMake, native audio-struct, and Android resource fixes needed by this build
The login flow, host list, streaming, decoding, audio, and input foundation come from the upstream Android project.
The experimental Quest 2 APK is available from this repository's GitHub Releases.
Signing notice: v0.4.9-quest and earlier used an exposed signing key. That certificate cannot authenticate the publisher of an APK. v0.4.11-quest and later use a new private signing key; existing users must uninstall the old app before installing the first release with the new key, which removes local app data and login state. See release signing and migration before upgrading.
This is an unofficial community build and is not affiliated with Parsec, Unity, Meta, NomadsGalaxy, or hugeBlack.
Horizon OS presents the app as a movable and resizable 2D screen, similar to other Android media applications. It does not use OpenXR and does not provide an immersive VR environment.
Point at the panel and pull the controller trigger to click. A paired Bluetooth keyboard, mouse, or gamepad is recommended for full desktop or game input. Touch-button shortcuts depend on Horizon exposing the controllers as Android input devices; the in-session menu remains available when it does not.
Requirements:
- Java 17
- Android SDK API 34
- NDK
26.3.11579264 - CMake 3.22.1
./gradlew assembleDebugThe APK is written to:
app/build/outputs/apk/debug/openparsec-quest2-0.4.11-quest-debug.apk
With developer mode and ADB available, install it using:
adb install -r app/build/outputs/apk/debug/openparsec-quest2-0.4.11-quest-debug.apkDebug APKs use your local Android debug key. They cannot update an installation
signed by a different key. To build a signed release, configure private credentials
as described in SIGNING.md, then run ./gradlew assembleRelease.
Release builds fail if credentials are missing or the compromised key is supplied.
- NomadsGalaxy/OpenParsec — Android client used as the direct base for this build
- hugeBlack/OpenParsec — original iOS/iPadOS OpenParsec project
- tantum101/Parsec — newer mirrored Android SDK binaries/header used for H.265 client configuration
- Parsec — proprietary streaming SDK and service
The OpenParsec source retains its GPL-3.0 license. The bundled proprietary Parsec SDK binaries remain subject to Parsec's separate SDK terms. Verify those terms before redistributing an APK or the SDK binaries.