3.5 KiB
Quest App Launcher
A VR home-screen replacement for Meta Quest 2, built in Unity by oxmc for Hoover High School. Replaces the default Quest shell with a fully configurable app grid — custom icons, renamed apps, user-defined tabs, and automatic asset updates from any HTTP or GitHub source.
Features
- Scrollable grid of all installed apps, configurable rows × columns
- Auto-categorized tabs (Quest / 2D) and user-defined custom tabs
- App name overrides and custom icons via JSON or zip icon packs
- Asset auto-update from GitHub releases or any plain HTTP endpoint — not just one source, any number of repos can be configured
- Sort by alphabetical or most recently used
- Configurable background skybox
- Managed policy support for IT/MDM deployments (hidden apps, name overrides, wallpaper, disable settings)
- Memory-efficient lazy icon loading — textures are loaded/unloaded based on scroll position
Requirements
- Meta Quest 2
- Unity (see
ProjectSettings/ProjectVersion.txtfor version) - Meta XR SDK (included via Package Manager)
Building
Builds are handled entirely by GitHub Actions — there is no local build command.
build.yml— runs tests (on master), builds the Android APK, uploads to GitHub Releases asHooverHighQuestAppLauncher.apkactivation.yml— manual trigger to request a Unity license activation file
Source Structure
| Path | Description |
|---|---|
Assets/Scenes/QuestAppLauncher.unity |
Main scene |
Assets/Plugins/Android/AppInfo.java |
Android plugin: enumerates installed apps, extracts icons, reads usage stats via JNI |
Assets/Scripts/ |
C# scripts: grid layout, app processing, settings, downloads |
Assets/OVRInputSelection/ |
Controller ray input and pointer visualization |
.github/workflows/ |
CI build and license activation workflows |
Configuration
Settings are stored in config.json in the app's persistent data path on-device. The file is created with defaults on first run and can be pushed via adb:
adb push config.json /sdcard/Android/data/dev.oxmc.QuestAppLauncher/files/
Key settings:
- Grid size — rows × columns (1–10 each)
- Sort mode —
az(alphabetical) ormostRecent - Show 2D apps — toggle non-VR apps on or off
- Auto category — places Quest / 2D apps into auto tabs; position:
top,left,right, oroff - Custom category — user-defined tabs from
appnames.json; same position options - Background — path to a skybox image, or
"default" - Auto update — checks configured repos for new icon packs and app name files on startup
- Download repos — list of asset sources; supports GitHub releases (
type: "github") and any plain HTTP manifest endpoint (type: "http") — multiple sources can be combined
Custom app names and icons
Place appnames.json (or appnames*.json) in the persistent data path to rename apps and assign them to tabs. Place iconpack*.zip files (containing <packageName>.jpg entries) or individual <packageName>.jpg files to override icons.
See docs.md for the full format reference, all config fields, managed policy details, and useful adb commands.
Credits
- tverona1 — original creator
- noxx — original app icon