diff --git a/README.md b/README.md index 36d2e90..6cec159 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,13 @@ Download/run the binaries for your platform in the releases section.
Developers can run it via [LÖVR](https://lovr.org) or [LÖVE2D](https://love2d.org) ``` -$ love src # if you have LÖVE2D installed (>v12) -$ lovr src # if you have LÖVR installed +-- ./lovr xurfer https://snips.sh/f/_U5-XctEVE?r=1' -- cube, monkey, scene +$ love xurfer # if you have LÖVE2D installed (>v12) +$ lovr xurfer # 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