It's going to run inside a Docker container which will run of top of GOW (a GUI inside our Desktop environment).
-
This will be the new entry point, users will launch other containers GUI via this
- It should be trivial to passthru the Docker socket and use the API from inside a container
GO
seems like the perfect fit here- OR what about
Electron
andReact
? - We'll have to support mouse AND joypad input, people can connect from any Moonlight client like Apple TV, Android, ...
We'll need a data structure that holds info about containers/ENV/params that we support and that can be launched, even something as simple as:
[ { "name": "RetroArch", "icon": "https://...", "env": ["DISPLAY=$$DISPLAY$$", "ASD=EDF"], "volumes": ["/tmp/:/tmp/:ro", "..."] } ]
We can start by hosting it on Github so that we can easily update it and the app should download it on startup (given connection).
Everything should work offline too, if the images are present locally we don't have to download anything.
From Docker we'll need a way to:
- Start/Stop containers
- List running containers and match them against that json list
- Download images from Docker Hub if not present