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.
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 assembleReleaseThe APK is written to:
app/build/outputs/apk/release/openparsec-quest2-0.4.9-quest-release.apk
With developer mode and ADB available, install it using:
adb install -r app/build/outputs/apk/release/openparsec-quest2-0.4.9-quest-release.apk- 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.