Skip to content

Instantly share code, notes, and snippets.

@cvan
Last active April 9, 2019 10:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cvan/1f9bcaa950d7eb80820b04dd7aac740c to your computer and use it in GitHub Desktop.
Save cvan/1f9bcaa950d7eb80820b04dd7aac740c to your computer and use it in GitHub Desktop.
WebVR History: Project Moonrise (by @caseyyee and @cvan; Mozilla, 2017)

Using Myk Melez's qbrt project, @cvan's maintained a forked branch, vr, as the foundation for building a standalone, self-contained executable of Desktop Firefox w/ enabled-by-default WebVR Support.

Done in March – April 2017 at Mozilla in the Mixed Reality program, this experiment was led by @cvan and @caseyyee, codenamed Moonrise.

image

  • Moonrise could generate Windows, macOS, and Linux releases of a wrapper program of this branch of qbrt.
  • Moonrise's default start page was a WebVR-powered Lobby experience
  • Moonrise could connect to a user's Steam account (if the user was already locally authenticated in the Steam app, Steam's user-management APIs worked without needing to first sign in)
  • Moonrise used Valve's Steamworks for Steam data (e.g, to retrieve list and activity of friends, retrieve and store metadata, currently installed games, etc.).

Also through the Moonrise project, @cvan developed an proof-of-concept prototype for injecting native-app shortcuts to the user's OS-level Applications directory (e.g., Applications on macOS, Desktop on Windows). On Windows, shortcut links were added to the Desktop for each new experience added to the user's Lobby screen.

When a user added/bookmarked a WebVR page from the user's *Lobby screen, a web-app manifest file was generated (or merged with an existing one if the page already provided one via an <link rel="manifest" src="…"> HTML tag in the web page) from extracted metadata using @cvan's fetch-manifest tool.

Moonrise generated local directories that served as PWA-like containers (with three files: index.html, main.js, and package.json). Those directories could then be launched by qbrt to boot Moonrise into the website (WebVR pages or traditional, non-VR sites).

When launched, Moonrise would identify the start URL (i.e., technically reading a local PWA-like directory from qbrt) from the start_url key from the web-app's package.json / manifest.webappmanifest.

These were the supported browser-window display modes (via the display / display_mode key in package.json or a linked web-appp manifest):

  • chromeless ("display: fullscreen"): automatically fullscreens (without typical user-gesture requirement)
  • standalone ("display": "standalone"): single native window
  • browser ("display": "browser"): normal desktop Firefox layout
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment