How can I use GOW?
One of the earliest use cases for Games on Whales was to be able to host retro video games on a central server running RetroArch and stream them to clients wherever they happened to be.
Can I use it for something else?
Absolutely! Streaming games works very well, but GoW can do so much more!
Out of the box, GoW provides a platform for running just about any graphical applications you like. In fact, despite the name, you can think of GoW as a low-latency remote desktop solution. Often the focus is on a single full-screen application, but this does not necessarily have to be the case.
You should be able to run any Graphical Application on top of the basic
combination of Xorg
+ PulseAudio
+ Sunshine
. We supply the necessary
configuration files for steam
, retroarch
, and firefox
by default, but you
can use them as templates to create your own. See
Adding an App for more details.
GoW is even often capable of running containers provided by third parties; as
long as the container can accept a DISPLAY
environment variable to specify
the Xorg display, it can be made to work. For example,
this
Firefox container (andrewmackrodt/firefox-x11
) is an open-source Dockerfile
and image. It’s a great example of running a container which wasn’t built with
GOW in mind.
This container doesn’t need to be run any special privileges or network mode ,
because mouse and keyboard events are handled by Xorg
and passing the X11
socket is enough to have display and inputs. This increases security for non
trusted containers by restricting what’s accessible inside the container.
Unfortunately, the same cannot be said for gamepads; if your container requires
gamepad support you’ll need to use privileged: true
and network_mode:
${UDEVD_NETWORK}
just like in the RetroArch example. This is required
because the device files for the gamepad do not exist at the time the container
is launched (they’re only created once a client connects) and so far the only
way we’ve found for a running container to see a newly created device file is
using the privileged
setting.
Heres a blog post with a few GUI docker containers like:
-
Chrome
-
Spotify
-
Gparted
-
Skype
🚀 The sky is the limit! 🚀