# if you have LÖVR installed
```
+**Example**: lovr xurfer https://snips.sh/f/_U5-XctEVE?r=1
+
## Multiplatform Multimodal XR Browser
The aim of this project is providing **one [XR Hypermedia browser](https://xrhf.isvery.ninja) codebase** which gracefully degrades to handheld/embedded/braille devices:
@@ -28,9 +31,9 @@ The aim of this project is providing **one [XR Hypermedia browser](https://xrhf.
So you can strip/bloat however you want, or build one yourself:
```
-$ cp src/ext/skeleton src/ext/myextension
-$ sed 's|skeleton|myextension|g' src/ext/myextension/*
-$ ./lovr src
+$ cp xurfer/ext/skeleton xurfer/ext/myextension
+$ sed 's|skeleton|myextension|g' xurfer/ext/myextension/*
+$ ./lovr xurfer
[i] loading 'myextension'
...
```
diff --git a/api.md b/api.md
index b062da9..ab169f7 100644
--- a/api.md
+++ b/api.md
@@ -2,10 +2,10 @@
api
-api.parser.json
+api.parser.json
api.parser.xml
-api.url
-api.util
+api.url
+api.util
api.protocol
api.ext.*
api.ext.exec(fn, ,..)
diff --git a/src/main.lua b/src/main.lua
deleted file mode 100644
index bf526db..0000000
--- a/src/main.lua
+++ /dev/null
@@ -1,45 +0,0 @@
-local util = require("util")
-local ecs = require("ecs")
-
-api = {
- parser = {
- json = require("json"),
- xml = require("xmlSimple"),
- },
- url = require("url"),
- util = require("util"),
- ecs = ecs,
- world = ecs.world(),
- protocol = {},
- ext = { -- all extensions are loaded here from disk at runtime
- exec = function(...) util.exec(api.ext,...) end -- util function to call func on each extension
- }
-}
-
-local runtime
-local runtimepath
-
-if lovr ~= nil then runtime = { path = "lovr", api = lovr } end
-if love ~= nil then runtime = { path = "love", api = love } end
-
-api = util.merge( api, runtime.api )
-
-require( runtime.path .. "/main")
-
-util.loaddir( "ext", api, api.ext )
-util.loaddir( "media", api, api.media )
-ecs.init()
-api.ext.exec('init')
-
--- GLB URLS
---local url='https://coderofsalvation.codeberg.page/xrfragment-haxe/example/assets/example.glb?bar=1&f=2#foo'
---local url = 'https://codeberg.org/coderofsalvation/xrfragment/raw/branch/main/assets/template/website/website.glb'
---local url = 'https://codeberg.org/coderofsalvation/xrfragment/raw/branch/main/assets/simple-a.glb'
---local url = 'https://xrforge.isvery.ninja/models/zzswz4qlqw8w/model_files/test.xrf.glb'
---
--- JANUS JML URLS
---local url = 'https://janusxr.org/index.html'
---local url = 'https://snips.sh/f/rHFLg-cewi?r=1' -- cube
-local url = 'https://snips.sh/f/_U5-XctEVE?r=1' -- cube, monkey, scene
-
-api.ecs.add( api.world, { URI = { url = url, method = 'GET', target = '_top' } })
diff --git a/src/conf.lua b/xurfer/conf.lua
similarity index 100%
rename from src/conf.lua
rename to xurfer/conf.lua
diff --git a/src/ecs.lua b/xurfer/ecs.lua
similarity index 100%
rename from src/ecs.lua
rename to xurfer/ecs.lua
diff --git a/src/ext/3DFile/main.lua b/xurfer/ext/3DFile/main.lua
similarity index 100%
rename from src/ext/3DFile/main.lua
rename to xurfer/ext/3DFile/main.lua
diff --git a/src/ext/URI/main.lua b/xurfer/ext/URI/main.lua
similarity index 100%
rename from src/ext/URI/main.lua
rename to xurfer/ext/URI/main.lua
diff --git a/src/ext/janusxr/main.lua b/xurfer/ext/janusxr/main.lua
similarity index 100%
rename from src/ext/janusxr/main.lua
rename to xurfer/ext/janusxr/main.lua
diff --git a/src/ext/kitchensink/main.lua b/xurfer/ext/kitchensink/main.lua
similarity index 95%
rename from src/ext/kitchensink/main.lua
rename to xurfer/ext/kitchensink/main.lua
index 60a4ec9..4c3c2f7 100644
--- a/src/ext/kitchensink/main.lua
+++ b/xurfer/ext/kitchensink/main.lua
@@ -1,12 +1,14 @@
local api = ...
-
-local sample = require "sample"
+
+local sample
return {
name = "kitchensink",
- enabled = false,
+ enabled = (lover ~= nil),
- init = function() end,
+ init = function()
+ sample = require "sample"
+ end,
update = function()
local iui = api.iui
diff --git a/src/ext/skeleton/main.lua b/xurfer/ext/skeleton/main.lua
similarity index 100%
rename from src/ext/skeleton/main.lua
rename to xurfer/ext/skeleton/main.lua
diff --git a/src/ext/startupscene/main.lua b/xurfer/ext/startupscene/main.lua
similarity index 100%
rename from src/ext/startupscene/main.lua
rename to xurfer/ext/startupscene/main.lua
diff --git a/src/ext/startupscene/skybox/Dayback.jpg b/xurfer/ext/startupscene/skybox/Dayback.jpg
similarity index 100%
rename from src/ext/startupscene/skybox/Dayback.jpg
rename to xurfer/ext/startupscene/skybox/Dayback.jpg
diff --git a/src/ext/startupscene/skybox/Daybottom.jpg b/xurfer/ext/startupscene/skybox/Daybottom.jpg
similarity index 100%
rename from src/ext/startupscene/skybox/Daybottom.jpg
rename to xurfer/ext/startupscene/skybox/Daybottom.jpg
diff --git a/src/ext/startupscene/skybox/Dayfront.jpg b/xurfer/ext/startupscene/skybox/Dayfront.jpg
similarity index 100%
rename from src/ext/startupscene/skybox/Dayfront.jpg
rename to xurfer/ext/startupscene/skybox/Dayfront.jpg
diff --git a/src/ext/startupscene/skybox/Dayleft.jpg b/xurfer/ext/startupscene/skybox/Dayleft.jpg
similarity index 100%
rename from src/ext/startupscene/skybox/Dayleft.jpg
rename to xurfer/ext/startupscene/skybox/Dayleft.jpg
diff --git a/src/ext/startupscene/skybox/Dayright.jpg b/xurfer/ext/startupscene/skybox/Dayright.jpg
similarity index 100%
rename from src/ext/startupscene/skybox/Dayright.jpg
rename to xurfer/ext/startupscene/skybox/Dayright.jpg
diff --git a/src/ext/startupscene/skybox/Daytop.jpg b/xurfer/ext/startupscene/skybox/Daytop.jpg
similarity index 100%
rename from src/ext/startupscene/skybox/Daytop.jpg
rename to xurfer/ext/startupscene/skybox/Daytop.jpg
diff --git a/src/ext/startupscene/skybox/ibl.ktx b/xurfer/ext/startupscene/skybox/ibl.ktx
similarity index 100%
rename from src/ext/startupscene/skybox/ibl.ktx
rename to xurfer/ext/startupscene/skybox/ibl.ktx
diff --git a/src/ext/xrfragments/json.lua b/xurfer/ext/xrfragments/json.lua
similarity index 100%
rename from src/ext/xrfragments/json.lua
rename to xurfer/ext/xrfragments/json.lua
diff --git a/src/ext/xrfragments/lovr-xrf.lua b/xurfer/ext/xrfragments/lovr-xrf.lua
similarity index 100%
rename from src/ext/xrfragments/lovr-xrf.lua
rename to xurfer/ext/xrfragments/lovr-xrf.lua
diff --git a/src/ext/xrfragments/main.lua b/xurfer/ext/xrfragments/main.lua
similarity index 100%
rename from src/ext/xrfragments/main.lua
rename to xurfer/ext/xrfragments/main.lua
diff --git a/src/ext/xrfragments/url.lua b/xurfer/ext/xrfragments/url.lua
similarity index 100%
rename from src/ext/xrfragments/url.lua
rename to xurfer/ext/xrfragments/url.lua
diff --git a/src/lib/json.lua b/xurfer/lib/json.lua
similarity index 100%
rename from src/lib/json.lua
rename to xurfer/lib/json.lua
diff --git a/src/lib/lust.lua b/xurfer/lib/lust.lua
similarity index 100%
rename from src/lib/lust.lua
rename to xurfer/lib/lust.lua
diff --git a/src/lib/tiny-ecs.lua b/xurfer/lib/tiny-ecs.lua
similarity index 100%
rename from src/lib/tiny-ecs.lua
rename to xurfer/lib/tiny-ecs.lua
diff --git a/src/lib/url.lua b/xurfer/lib/url.lua
similarity index 100%
rename from src/lib/url.lua
rename to xurfer/lib/url.lua
diff --git a/src/lib/xmlSimple.lua b/xurfer/lib/xmlSimple.lua
similarity index 100%
rename from src/lib/xmlSimple.lua
rename to xurfer/lib/xmlSimple.lua
diff --git a/src/love/conf.lua b/xurfer/love/conf.lua
similarity index 100%
rename from src/love/conf.lua
rename to xurfer/love/conf.lua
diff --git a/src/love/main.lua b/xurfer/love/main.lua
similarity index 75%
rename from src/love/main.lua
rename to xurfer/love/main.lua
index 2827769..f51401d 100644
--- a/src/love/main.lua
+++ b/xurfer/love/main.lua
@@ -1,3 +1,9 @@
+api.protocol.http = {
+ request = function(url,opts)
+ print("[!] todo: love2D/lua api.protocol.http needs curl/wget fallback")
+ end
+}
+
-- Load some default values for our rectangle.
function love.load()
x, y, w, h = 20, 20, 60, 20
diff --git a/src/lovr/.gitignore b/xurfer/lovr/.gitignore
similarity index 100%
rename from src/lovr/.gitignore
rename to xurfer/lovr/.gitignore
diff --git a/src/lovr/LICENSE b/xurfer/lovr/LICENSE
similarity index 100%
rename from src/lovr/LICENSE
rename to xurfer/lovr/LICENSE
diff --git a/src/lovr/README.md b/xurfer/lovr/README.md
similarity index 100%
rename from src/lovr/README.md
rename to xurfer/lovr/README.md
diff --git a/src/lovr/assets/img/env.png b/xurfer/lovr/assets/img/env.png
similarity index 100%
rename from src/lovr/assets/img/env.png
rename to xurfer/lovr/assets/img/env.png
diff --git a/src/lovr/conf.lua b/xurfer/lovr/conf.lua
similarity index 100%
rename from src/lovr/conf.lua
rename to xurfer/lovr/conf.lua
diff --git a/src/lovr/launch.lua b/xurfer/lovr/launch.lua
similarity index 100%
rename from src/lovr/launch.lua
rename to xurfer/lovr/launch.lua
diff --git a/src/lovr/lib/iui/.gitignore b/xurfer/lovr/lib/iui/.gitignore
similarity index 100%
rename from src/lovr/lib/iui/.gitignore
rename to xurfer/lovr/lib/iui/.gitignore
diff --git a/src/lovr/lib/iui/LICENSE b/xurfer/lovr/lib/iui/LICENSE
similarity index 100%
rename from src/lovr/lib/iui/LICENSE
rename to xurfer/lovr/lib/iui/LICENSE
diff --git a/src/lovr/lib/iui/README.md b/xurfer/lovr/lib/iui/README.md
similarity index 100%
rename from src/lovr/lib/iui/README.md
rename to xurfer/lovr/lib/iui/README.md
diff --git a/src/lovr/lib/iui/assets/cursor-default_sdf.png b/xurfer/lovr/lib/iui/assets/cursor-default_sdf.png
similarity index 100%
rename from src/lovr/lib/iui/assets/cursor-default_sdf.png
rename to xurfer/lovr/lib/iui/assets/cursor-default_sdf.png
diff --git a/src/lovr/lib/iui/assets/cursor-ibeam_sdf.png b/xurfer/lovr/lib/iui/assets/cursor-ibeam_sdf.png
similarity index 100%
rename from src/lovr/lib/iui/assets/cursor-ibeam_sdf.png
rename to xurfer/lovr/lib/iui/assets/cursor-ibeam_sdf.png
diff --git a/src/lovr/lib/iui/assets/cursor-inactive_sdf.png b/xurfer/lovr/lib/iui/assets/cursor-inactive_sdf.png
similarity index 100%
rename from src/lovr/lib/iui/assets/cursor-inactive_sdf.png
rename to xurfer/lovr/lib/iui/assets/cursor-inactive_sdf.png
diff --git a/src/lovr/lib/iui/assets/cursor-sizens_sdf.png b/xurfer/lovr/lib/iui/assets/cursor-sizens_sdf.png
similarity index 100%
rename from src/lovr/lib/iui/assets/cursor-sizens_sdf.png
rename to xurfer/lovr/lib/iui/assets/cursor-sizens_sdf.png
diff --git a/src/lovr/lib/iui/assets/cursor-sizewe_sdf.png b/xurfer/lovr/lib/iui/assets/cursor-sizewe_sdf.png
similarity index 100%
rename from src/lovr/lib/iui/assets/cursor-sizewe_sdf.png
rename to xurfer/lovr/lib/iui/assets/cursor-sizewe_sdf.png
diff --git a/src/lovr/lib/iui/assets/glyph-checkmark.png b/xurfer/lovr/lib/iui/assets/glyph-checkmark.png
similarity index 100%
rename from src/lovr/lib/iui/assets/glyph-checkmark.png
rename to xurfer/lovr/lib/iui/assets/glyph-checkmark.png
diff --git a/src/lovr/lib/iui/assets/glyph-disclosure.png b/xurfer/lovr/lib/iui/assets/glyph-disclosure.png
similarity index 100%
rename from src/lovr/lib/iui/assets/glyph-disclosure.png
rename to xurfer/lovr/lib/iui/assets/glyph-disclosure.png
diff --git a/src/lovr/lib/iui/color.lua b/xurfer/lovr/lib/iui/color.lua
similarity index 100%
rename from src/lovr/lib/iui/color.lua
rename to xurfer/lovr/lib/iui/color.lua
diff --git a/src/lovr/lib/iui/draw-queue.lua b/xurfer/lovr/lib/iui/draw-queue.lua
similarity index 100%
rename from src/lovr/lib/iui/draw-queue.lua
rename to xurfer/lovr/lib/iui/draw-queue.lua
diff --git a/src/lovr/lib/iui/draw.lua b/xurfer/lovr/lib/iui/draw.lua
similarity index 100%
rename from src/lovr/lib/iui/draw.lua
rename to xurfer/lovr/lib/iui/draw.lua
diff --git a/src/lovr/lib/iui/id.lua b/xurfer/lovr/lib/iui/id.lua
similarity index 100%
rename from src/lovr/lib/iui/id.lua
rename to xurfer/lovr/lib/iui/id.lua
diff --git a/src/lovr/lib/iui/init.lua b/xurfer/lovr/lib/iui/init.lua
similarity index 100%
rename from src/lovr/lib/iui/init.lua
rename to xurfer/lovr/lib/iui/init.lua
diff --git a/src/lovr/lib/iui/input/init.lua b/xurfer/lovr/lib/iui/input/init.lua
similarity index 100%
rename from src/lovr/lib/iui/input/init.lua
rename to xurfer/lovr/lib/iui/input/init.lua
diff --git a/src/lovr/lib/iui/input/input.lua b/xurfer/lovr/lib/iui/input/input.lua
similarity index 100%
rename from src/lovr/lib/iui/input/input.lua
rename to xurfer/lovr/lib/iui/input/input.lua
diff --git a/src/lovr/lib/iui/input/keyboard.lua b/xurfer/lovr/lib/iui/input/keyboard.lua
similarity index 100%
rename from src/lovr/lib/iui/input/keyboard.lua
rename to xurfer/lovr/lib/iui/input/keyboard.lua
diff --git a/src/lovr/lib/iui/input/mouse.lua b/xurfer/lovr/lib/iui/input/mouse.lua
similarity index 100%
rename from src/lovr/lib/iui/input/mouse.lua
rename to xurfer/lovr/lib/iui/input/mouse.lua
diff --git a/src/lovr/lib/iui/iui.lua b/xurfer/lovr/lib/iui/iui.lua
similarity index 100%
rename from src/lovr/lib/iui/iui.lua
rename to xurfer/lovr/lib/iui/iui.lua
diff --git a/src/lovr/lib/iui/layer.lua b/xurfer/lovr/lib/iui/layer.lua
similarity index 100%
rename from src/lovr/lib/iui/layer.lua
rename to xurfer/lovr/lib/iui/layer.lua
diff --git a/src/lovr/lib/iui/layout.lua b/xurfer/lovr/lib/iui/layout.lua
similarity index 100%
rename from src/lovr/lib/iui/layout.lua
rename to xurfer/lovr/lib/iui/layout.lua
diff --git a/src/lovr/lib/iui/pool.lua b/xurfer/lovr/lib/iui/pool.lua
similarity index 100%
rename from src/lovr/lib/iui/pool.lua
rename to xurfer/lovr/lib/iui/pool.lua
diff --git a/src/lovr/lib/iui/set.lua b/xurfer/lovr/lib/iui/set.lua
similarity index 100%
rename from src/lovr/lib/iui/set.lua
rename to xurfer/lovr/lib/iui/set.lua
diff --git a/src/lovr/lib/iui/state.lua b/xurfer/lovr/lib/iui/state.lua
similarity index 100%
rename from src/lovr/lib/iui/state.lua
rename to xurfer/lovr/lib/iui/state.lua
diff --git a/src/lovr/lib/iui/style.lua b/xurfer/lovr/lib/iui/style.lua
similarity index 100%
rename from src/lovr/lib/iui/style.lua
rename to xurfer/lovr/lib/iui/style.lua
diff --git a/src/lovr/lib/iui/types/backend/backend.t.lua b/xurfer/lovr/lib/iui/types/backend/backend.t.lua
similarity index 100%
rename from src/lovr/lib/iui/types/backend/backend.t.lua
rename to xurfer/lovr/lib/iui/types/backend/backend.t.lua
diff --git a/src/lovr/lib/iui/types/backend/graphics.t.lua b/xurfer/lovr/lib/iui/types/backend/graphics.t.lua
similarity index 100%
rename from src/lovr/lib/iui/types/backend/graphics.t.lua
rename to xurfer/lovr/lib/iui/types/backend/graphics.t.lua
diff --git a/src/lovr/lib/iui/types/backend/system.t.lua b/xurfer/lovr/lib/iui/types/backend/system.t.lua
similarity index 100%
rename from src/lovr/lib/iui/types/backend/system.t.lua
rename to xurfer/lovr/lib/iui/types/backend/system.t.lua
diff --git a/src/lovr/lib/iui/types/config.t.lua b/xurfer/lovr/lib/iui/types/config.t.lua
similarity index 100%
rename from src/lovr/lib/iui/types/config.t.lua
rename to xurfer/lovr/lib/iui/types/config.t.lua
diff --git a/src/lovr/lib/iui/utils.lua b/xurfer/lovr/lib/iui/utils.lua
similarity index 100%
rename from src/lovr/lib/iui/utils.lua
rename to xurfer/lovr/lib/iui/utils.lua
diff --git a/src/lovr/lib/iui/widgets/button.lua b/xurfer/lovr/lib/iui/widgets/button.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/button.lua
rename to xurfer/lovr/lib/iui/widgets/button.lua
diff --git a/src/lovr/lib/iui/widgets/checkbox.lua b/xurfer/lovr/lib/iui/widgets/checkbox.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/checkbox.lua
rename to xurfer/lovr/lib/iui/widgets/checkbox.lua
diff --git a/src/lovr/lib/iui/widgets/clip-view.lua b/xurfer/lovr/lib/iui/widgets/clip-view.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/clip-view.lua
rename to xurfer/lovr/lib/iui/widgets/clip-view.lua
diff --git a/src/lovr/lib/iui/widgets/divider.lua b/xurfer/lovr/lib/iui/widgets/divider.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/divider.lua
rename to xurfer/lovr/lib/iui/widgets/divider.lua
diff --git a/src/lovr/lib/iui/widgets/image-9-slice.lua b/xurfer/lovr/lib/iui/widgets/image-9-slice.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/image-9-slice.lua
rename to xurfer/lovr/lib/iui/widgets/image-9-slice.lua
diff --git a/src/lovr/lib/iui/widgets/image.lua b/xurfer/lovr/lib/iui/widgets/image.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/image.lua
rename to xurfer/lovr/lib/iui/widgets/image.lua
diff --git a/src/lovr/lib/iui/widgets/init.lua b/xurfer/lovr/lib/iui/widgets/init.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/init.lua
rename to xurfer/lovr/lib/iui/widgets/init.lua
diff --git a/src/lovr/lib/iui/widgets/label.lua b/xurfer/lovr/lib/iui/widgets/label.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/label.lua
rename to xurfer/lovr/lib/iui/widgets/label.lua
diff --git a/src/lovr/lib/iui/widgets/list-view.lua b/xurfer/lovr/lib/iui/widgets/list-view.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/list-view.lua
rename to xurfer/lovr/lib/iui/widgets/list-view.lua
diff --git a/src/lovr/lib/iui/widgets/menu-bar.lua b/xurfer/lovr/lib/iui/widgets/menu-bar.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/menu-bar.lua
rename to xurfer/lovr/lib/iui/widgets/menu-bar.lua
diff --git a/src/lovr/lib/iui/widgets/menu-item.lua b/xurfer/lovr/lib/iui/widgets/menu-item.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/menu-item.lua
rename to xurfer/lovr/lib/iui/widgets/menu-item.lua
diff --git a/src/lovr/lib/iui/widgets/msdf-image-9-slice.lua b/xurfer/lovr/lib/iui/widgets/msdf-image-9-slice.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/msdf-image-9-slice.lua
rename to xurfer/lovr/lib/iui/widgets/msdf-image-9-slice.lua
diff --git a/src/lovr/lib/iui/widgets/msdf-image.lua b/xurfer/lovr/lib/iui/widgets/msdf-image.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/msdf-image.lua
rename to xurfer/lovr/lib/iui/widgets/msdf-image.lua
diff --git a/src/lovr/lib/iui/widgets/msdf-layered-image-9-slice.lua b/xurfer/lovr/lib/iui/widgets/msdf-layered-image-9-slice.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/msdf-layered-image-9-slice.lua
rename to xurfer/lovr/lib/iui/widgets/msdf-layered-image-9-slice.lua
diff --git a/src/lovr/lib/iui/widgets/msdf-layered-image.lua b/xurfer/lovr/lib/iui/widgets/msdf-layered-image.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/msdf-layered-image.lua
rename to xurfer/lovr/lib/iui/widgets/msdf-layered-image.lua
diff --git a/src/lovr/lib/iui/widgets/panel-background.lua b/xurfer/lovr/lib/iui/widgets/panel-background.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/panel-background.lua
rename to xurfer/lovr/lib/iui/widgets/panel-background.lua
diff --git a/src/lovr/lib/iui/widgets/progress.lua b/xurfer/lovr/lib/iui/widgets/progress.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/progress.lua
rename to xurfer/lovr/lib/iui/widgets/progress.lua
diff --git a/src/lovr/lib/iui/widgets/radio.lua b/xurfer/lovr/lib/iui/widgets/radio.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/radio.lua
rename to xurfer/lovr/lib/iui/widgets/radio.lua
diff --git a/src/lovr/lib/iui/widgets/scroll-bar.lua b/xurfer/lovr/lib/iui/widgets/scroll-bar.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/scroll-bar.lua
rename to xurfer/lovr/lib/iui/widgets/scroll-bar.lua
diff --git a/src/lovr/lib/iui/widgets/scroll-view.lua b/xurfer/lovr/lib/iui/widgets/scroll-view.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/scroll-view.lua
rename to xurfer/lovr/lib/iui/widgets/scroll-view.lua
diff --git a/src/lovr/lib/iui/widgets/slider.lua b/xurfer/lovr/lib/iui/widgets/slider.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/slider.lua
rename to xurfer/lovr/lib/iui/widgets/slider.lua
diff --git a/src/lovr/lib/iui/widgets/split-view.lua b/xurfer/lovr/lib/iui/widgets/split-view.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/split-view.lua
rename to xurfer/lovr/lib/iui/widgets/split-view.lua
diff --git a/src/lovr/lib/iui/widgets/sub-menu.lua b/xurfer/lovr/lib/iui/widgets/sub-menu.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/sub-menu.lua
rename to xurfer/lovr/lib/iui/widgets/sub-menu.lua
diff --git a/src/lovr/lib/iui/widgets/tab-bar.lua b/xurfer/lovr/lib/iui/widgets/tab-bar.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/tab-bar.lua
rename to xurfer/lovr/lib/iui/widgets/tab-bar.lua
diff --git a/src/lovr/lib/iui/widgets/text-field.lua b/xurfer/lovr/lib/iui/widgets/text-field.lua
similarity index 100%
rename from src/lovr/lib/iui/widgets/text-field.lua
rename to xurfer/lovr/lib/iui/widgets/text-field.lua
diff --git a/src/lovr/lib/iui/window-manager.lua b/xurfer/lovr/lib/iui/window-manager.lua
similarity index 100%
rename from src/lovr/lib/iui/window-manager.lua
rename to xurfer/lovr/lib/iui/window-manager.lua
diff --git a/src/lovr/lib/lovr-iui/.gitignore b/xurfer/lovr/lib/lovr-iui/.gitignore
similarity index 100%
rename from src/lovr/lib/lovr-iui/.gitignore
rename to xurfer/lovr/lib/lovr-iui/.gitignore
diff --git a/src/lovr/lib/lovr-iui/LICENSE b/xurfer/lovr/lib/lovr-iui/LICENSE
similarity index 100%
rename from src/lovr/lib/lovr-iui/LICENSE
rename to xurfer/lovr/lib/lovr-iui/LICENSE
diff --git a/src/lovr/lib/lovr-iui/README.md b/xurfer/lovr/lib/lovr-iui/README.md
similarity index 100%
rename from src/lovr/lib/lovr-iui/README.md
rename to xurfer/lovr/lib/lovr-iui/README.md
diff --git a/src/lovr/lib/lovr-iui/graphics.lua b/xurfer/lovr/lib/lovr-iui/graphics.lua
similarity index 100%
rename from src/lovr/lib/lovr-iui/graphics.lua
rename to xurfer/lovr/lib/lovr-iui/graphics.lua
diff --git a/src/lovr/lib/lovr-iui/init.lua b/xurfer/lovr/lib/lovr-iui/init.lua
similarity index 100%
rename from src/lovr/lib/lovr-iui/init.lua
rename to xurfer/lovr/lib/lovr-iui/init.lua
diff --git a/src/lovr/lib/lovr-iui/shaders/ui-clip.glsl b/xurfer/lovr/lib/lovr-iui/shaders/ui-clip.glsl
similarity index 100%
rename from src/lovr/lib/lovr-iui/shaders/ui-clip.glsl
rename to xurfer/lovr/lib/lovr-iui/shaders/ui-clip.glsl
diff --git a/src/lovr/lib/lovr-iui/shaders/ui-image.glsl b/xurfer/lovr/lib/lovr-iui/shaders/ui-image.glsl
similarity index 100%
rename from src/lovr/lib/lovr-iui/shaders/ui-image.glsl
rename to xurfer/lovr/lib/lovr-iui/shaders/ui-image.glsl
diff --git a/src/lovr/lib/lovr-iui/shaders/ui-msdf.glsl b/xurfer/lovr/lib/lovr-iui/shaders/ui-msdf.glsl
similarity index 100%
rename from src/lovr/lib/lovr-iui/shaders/ui-msdf.glsl
rename to xurfer/lovr/lib/lovr-iui/shaders/ui-msdf.glsl
diff --git a/src/lovr/lib/lovr-iui/system.lua b/xurfer/lovr/lib/lovr-iui/system.lua
similarity index 100%
rename from src/lovr/lib/lovr-iui/system.lua
rename to xurfer/lovr/lib/lovr-iui/system.lua
diff --git a/src/lovr/lib/lovr-iui/vr-input.lua b/xurfer/lovr/lib/lovr-iui/vr-input.lua
similarity index 100%
rename from src/lovr/lib/lovr-iui/vr-input.lua
rename to xurfer/lovr/lib/lovr-iui/vr-input.lua
diff --git a/src/lovr/lib/lovr-iui/world-window.lua b/xurfer/lovr/lib/lovr-iui/world-window.lua
similarity index 100%
rename from src/lovr/lib/lovr-iui/world-window.lua
rename to xurfer/lovr/lib/lovr-iui/world-window.lua
diff --git a/src/lovr/lib/lovr-mouse/LICENSE b/xurfer/lovr/lib/lovr-mouse/LICENSE
similarity index 100%
rename from src/lovr/lib/lovr-mouse/LICENSE
rename to xurfer/lovr/lib/lovr-mouse/LICENSE
diff --git a/src/lovr/lib/lovr-mouse/init.lua b/xurfer/lovr/lib/lovr-mouse/init.lua
similarity index 100%
rename from src/lovr/lib/lovr-mouse/init.lua
rename to xurfer/lovr/lib/lovr-mouse/init.lua
diff --git a/src/lovr/main.lua b/xurfer/lovr/main.lua
similarity index 100%
rename from src/lovr/main.lua
rename to xurfer/lovr/main.lua
diff --git a/src/lovr/sample/.gitignore b/xurfer/lovr/sample/.gitignore
similarity index 100%
rename from src/lovr/sample/.gitignore
rename to xurfer/lovr/sample/.gitignore
diff --git a/src/lovr/sample/LICENSE b/xurfer/lovr/sample/LICENSE
similarity index 100%
rename from src/lovr/sample/LICENSE
rename to xurfer/lovr/sample/LICENSE
diff --git a/src/lovr/sample/README.md b/xurfer/lovr/sample/README.md
similarity index 100%
rename from src/lovr/sample/README.md
rename to xurfer/lovr/sample/README.md
diff --git a/src/lovr/sample/assets/game-sunset.png b/xurfer/lovr/sample/assets/game-sunset.png
similarity index 100%
rename from src/lovr/sample/assets/game-sunset.png
rename to xurfer/lovr/sample/assets/game-sunset.png
diff --git a/src/lovr/sample/assets/nine-slice-frame.png b/xurfer/lovr/sample/assets/nine-slice-frame.png
similarity index 100%
rename from src/lovr/sample/assets/nine-slice-frame.png
rename to xurfer/lovr/sample/assets/nine-slice-frame.png
diff --git a/src/lovr/sample/assets/nine-slice-interior.png b/xurfer/lovr/sample/assets/nine-slice-interior.png
similarity index 100%
rename from src/lovr/sample/assets/nine-slice-interior.png
rename to xurfer/lovr/sample/assets/nine-slice-interior.png
diff --git a/src/lovr/sample/assets/smile-bg.png b/xurfer/lovr/sample/assets/smile-bg.png
similarity index 100%
rename from src/lovr/sample/assets/smile-bg.png
rename to xurfer/lovr/sample/assets/smile-bg.png
diff --git a/src/lovr/sample/assets/smile-fg.png b/xurfer/lovr/sample/assets/smile-fg.png
similarity index 100%
rename from src/lovr/sample/assets/smile-fg.png
rename to xurfer/lovr/sample/assets/smile-fg.png
diff --git a/src/lovr/sample/assets/ui-box-slice.png b/xurfer/lovr/sample/assets/ui-box-slice.png
similarity index 100%
rename from src/lovr/sample/assets/ui-box-slice.png
rename to xurfer/lovr/sample/assets/ui-box-slice.png
diff --git a/src/lovr/sample/features/disabled-tab/disabled-tab.lua b/xurfer/lovr/sample/features/disabled-tab/disabled-tab.lua
similarity index 100%
rename from src/lovr/sample/features/disabled-tab/disabled-tab.lua
rename to xurfer/lovr/sample/features/disabled-tab/disabled-tab.lua
diff --git a/src/lovr/sample/features/image-tab/models/state.lua b/xurfer/lovr/sample/features/image-tab/models/state.lua
similarity index 100%
rename from src/lovr/sample/features/image-tab/models/state.lua
rename to xurfer/lovr/sample/features/image-tab/models/state.lua
diff --git a/src/lovr/sample/features/image-tab/models/window-state.lua b/xurfer/lovr/sample/features/image-tab/models/window-state.lua
similarity index 100%
rename from src/lovr/sample/features/image-tab/models/window-state.lua
rename to xurfer/lovr/sample/features/image-tab/models/window-state.lua
diff --git a/src/lovr/sample/features/image-tab/msdf.lua b/xurfer/lovr/sample/features/image-tab/msdf.lua
similarity index 100%
rename from src/lovr/sample/features/image-tab/msdf.lua
rename to xurfer/lovr/sample/features/image-tab/msdf.lua
diff --git a/src/lovr/sample/features/image-tab/nine-slice-msdf.lua b/xurfer/lovr/sample/features/image-tab/nine-slice-msdf.lua
similarity index 100%
rename from src/lovr/sample/features/image-tab/nine-slice-msdf.lua
rename to xurfer/lovr/sample/features/image-tab/nine-slice-msdf.lua
diff --git a/src/lovr/sample/features/image-tab/nine-slice.lua b/xurfer/lovr/sample/features/image-tab/nine-slice.lua
similarity index 100%
rename from src/lovr/sample/features/image-tab/nine-slice.lua
rename to xurfer/lovr/sample/features/image-tab/nine-slice.lua
diff --git a/src/lovr/sample/features/image-tab/simple.lua b/xurfer/lovr/sample/features/image-tab/simple.lua
similarity index 100%
rename from src/lovr/sample/features/image-tab/simple.lua
rename to xurfer/lovr/sample/features/image-tab/simple.lua
diff --git a/src/lovr/sample/features/image-tab/tab-image.lua b/xurfer/lovr/sample/features/image-tab/tab-image.lua
similarity index 100%
rename from src/lovr/sample/features/image-tab/tab-image.lua
rename to xurfer/lovr/sample/features/image-tab/tab-image.lua
diff --git a/src/lovr/sample/features/main-tab/main-tab.lua b/xurfer/lovr/sample/features/main-tab/main-tab.lua
similarity index 100%
rename from src/lovr/sample/features/main-tab/main-tab.lua
rename to xurfer/lovr/sample/features/main-tab/main-tab.lua
diff --git a/src/lovr/sample/features/main-tab/models/state.lua b/xurfer/lovr/sample/features/main-tab/models/state.lua
similarity index 100%
rename from src/lovr/sample/features/main-tab/models/state.lua
rename to xurfer/lovr/sample/features/main-tab/models/state.lua
diff --git a/src/lovr/sample/features/main-tab/models/window-state.lua b/xurfer/lovr/sample/features/main-tab/models/window-state.lua
similarity index 100%
rename from src/lovr/sample/features/main-tab/models/window-state.lua
rename to xurfer/lovr/sample/features/main-tab/models/window-state.lua
diff --git a/src/lovr/sample/features/main-tab/primary-pane.lua b/xurfer/lovr/sample/features/main-tab/primary-pane.lua
similarity index 100%
rename from src/lovr/sample/features/main-tab/primary-pane.lua
rename to xurfer/lovr/sample/features/main-tab/primary-pane.lua
diff --git a/src/lovr/sample/features/main-tab/secondary-pane.lua b/xurfer/lovr/sample/features/main-tab/secondary-pane.lua
similarity index 100%
rename from src/lovr/sample/features/main-tab/secondary-pane.lua
rename to xurfer/lovr/sample/features/main-tab/secondary-pane.lua
diff --git a/src/lovr/sample/init.lua b/xurfer/lovr/sample/init.lua
similarity index 100%
rename from src/lovr/sample/init.lua
rename to xurfer/lovr/sample/init.lua
diff --git a/src/lovr/sample/menu-bar.lua b/xurfer/lovr/sample/menu-bar.lua
similarity index 100%
rename from src/lovr/sample/menu-bar.lua
rename to xurfer/lovr/sample/menu-bar.lua
diff --git a/src/lovr/sample/models/app-state.lua b/xurfer/lovr/sample/models/app-state.lua
similarity index 100%
rename from src/lovr/sample/models/app-state.lua
rename to xurfer/lovr/sample/models/app-state.lua
diff --git a/src/lovr/sample/models/window-state.lua b/xurfer/lovr/sample/models/window-state.lua
similarity index 100%
rename from src/lovr/sample/models/window-state.lua
rename to xurfer/lovr/sample/models/window-state.lua
diff --git a/src/lovr/sample/tab-bar.lua b/xurfer/lovr/sample/tab-bar.lua
similarity index 100%
rename from src/lovr/sample/tab-bar.lua
rename to xurfer/lovr/sample/tab-bar.lua
diff --git a/xurfer/main.lua b/xurfer/main.lua
new file mode 100644
index 0000000..520a566
--- /dev/null
+++ b/xurfer/main.lua
@@ -0,0 +1,52 @@
+-- -- GLB URLS
+-- ./lovr xurfer https://coderofsalvation.codeberg.page/xrfragment-haxe/example/assets/example.glb?bar=1&f=2#foo'
+-- ./lovr xurfer https://codeberg.org/coderofsalvation/xrfragment/raw/branch/main/assets/template/website/website.glb'
+-- ./lovr xurfer https://codeberg.org/coderofsalvation/xrfragment/raw/branch/main/assets/simple-a.glb'
+-- ./lovr xurfer https://xrforge.isvery.ninja/models/zzswz4qlqw8w/model_files/test.xrf.glb'
+--
+-- -- JANUS JML URLS
+-- ./lovr xurfer https://janusxr.org/index.html'
+-- ./lovr xurfer https://snips.sh/f/rHFLg-cewi?r=1' -- cube
+-- ./lovr xurfer https://snips.sh/f/_U5-XctEVE?r=1' -- cube, monkey, scene
+
+local util = require("util")
+local ecs = require("ecs")
+
+api = {
+ parser = {
+ json = require("json"),
+ xml = require("xmlSimple"),
+ },
+ url = require("url"),
+ util = require("util"),
+ ecs = ecs,
+ world = ecs.world(),
+ protocol = {},
+ ext = { -- all extensions are loaded here from disk at runtime
+ exec = function(...) util.exec(api.ext,...) end -- util function to call func on each extension
+ }
+}
+
+local runtime
+local runtimepath
+
+if lovr ~= nil then runtime = { path = "lovr", api = lovr } end
+if love ~= nil then runtime = { path = "love", api = love } end
+
+api = util.merge( api, runtime.api )
+
+require( runtime.path .. "/main")
+
+util.loaddir( "ext", api, api.ext )
+util.loaddir( "media", api, api.media )
+ecs.init()
+api.ext.exec('init')
+
+-- load urls passed on the cli
+foreach( arg, function(k,uri)
+ foreach( api.protocol, function(name, p)
+ if uri:match("^"..name) then
+ api.ecs.add( api.world, { URI = { url = uri, method = 'GET', target = '_top' } })
+ end
+ end)
+end)
diff --git a/src/test/main.lua b/xurfer/test/main.lua
similarity index 100%
rename from src/test/main.lua
rename to xurfer/test/main.lua
diff --git a/src/util.lua b/xurfer/util.lua
similarity index 100%
rename from src/util.lua
rename to xurfer/util.lua