No description
Find a file
2026-06-24 16:10:19 +02:00
xurfer unixy extension: ps => kill for better portability 2026-06-24 16:10:19 +02:00
.gitignore re-organize files 2026-06-08 11:04:52 +02:00
api.md accept URL from cli for lovr/love 2026-06-12 11:46:14 +02:00
LICENSE slap AGPL3 2026-06-15 10:59:37 +02:00
README.md refactor: runtimes into xurfer/runtime + better URI errorhandling + added lua runtime 2026-06-24 15:56:15 +02:00
xurfer.sh xurfer/ext/http-lovr moves http.request to its own thread 2026-06-22 16:44:07 +02:00
xurfer.webp 📃 master: update documentation 2026-06-12 12:29:46 +02:00

NOTE: currently being worked on, not ready for beta (yet)

Usage

Download/run the binaries for your platform in the releases section.

Developers can run it via Lua, LÖVR or LÖVE2D

$ cd xurfer
$ love . <url_or_file> [..]       # if you have LÖVE2D installed (>v12)
$ lovr . <url_or_file> [..]       # if you have LÖVR installed
$ ./main.lua <url_or_file> [..]   # if you have lua installed

Example: lovr xurfer https://snips.sh/f/_U5-XctEVE?r=1

Multiplatform Multimodal XR Browser

The aim of this project is providing a XR Hypermedia browser codebase to surf JanusXR/XRF URL's, which gracefully degrade from OpenXR to handheld/embedded/braille devices:

  • mac/win/linux/android via LÖVE2D
  • mac/win/linux/android via LÖVR
  • Web (2D) via love.js
  • Nintendo 3DS, Switch, and Wii via lovebrew
  • Handhelds: Steamdeck, Anbernic, Gameforce, Game Kiddy, Powkiddy (..and more) via portmaster
  • Game emulators via lutro
  • Embedded devices via nelua or straightup lua

XR URI support

type supported standards extension platforms
.glb .gltf khronos/gltf geometry + xrfragment level 2 3DFile lovr
.obj WaveFront OBJ 3DFile lovr
any URL/file Janus Markup Language (JML) + xrfragment level 0+1+2 janusxr all

very hackable extensions

  • XURFER does everything via browser extensions.
  • XURFER is the total sum of browser extensions.
  • XURFER can proxy missing api-calls to cli-cmds (like wget/curl via the unixy extension)

So you can strip/bloat however you want, or build one yourself:

$ cp xurfer/ext/skeleton xurfer/ext/myextension
$ sed 's|skeleton|myextension|g' xurfer/ext/myextension/*
$ ./lovr xurfer
[i] loading 'myextension'
...

Security

Instead of the traditional sandbox-in-a-browser-model (Chromium/Firefox e.g.), we suggest running XURFER via bubblewrap

TODO: suggest cli flags