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! 🚀