Ruby2d not working in WSL2 on Ubuntu 18.04 - Getting error "No available video device"

713 views Asked by At

I'm using WSL2 on Ubuntu 18.04 to run Ruby code in Windows 10. For example, running Ruby on Rails is easily done with no special setup required.

In case of Ruby2D: The installation went fine but, I get an error when running any Ruby2D file, even the most basic one:

require 'ruby2d'
show

I get this error in Console:

error: XDG_RUNTIME_DIR not set in the environment.
Error: (SDL_Init) No available video device
error: XDG_RUNTIME_DIR not set in the environment.
Error: (SDL_CreateWindow) No available video device
Error: (GL2 / SDL_GL_CreateContext) Video subsystem has not been initialized
Error: An OpenGL context could not be created

How do I "add" (or config) a "video device" to my Ubuntu on the WSL2?

1

There are 1 answers

0
NotTheDr01ds On

As you've noticed, WSL under Windows 10 doesn't have any GUI/X/windowing capabilities built in. There are a few possibilities:

  • If you have the ability to upgrade to Windows 11, it supports WSLg (built-in) for running Linux GUI apps directly on Windows. I did just install Ruby, ruby2d (and its dependencies) and was able to successfully execute your example. I assume it is just supposed to show a blank GUI window ...

If you can't upgrade to Windows 11, there are still several possible alternatives for running Linux GUI apps. I have not had a chance to test ruby2d in this type of environment, but I believe it should work. If you run into issues, I can at least get the first option up and running to try it out and see if we can work through it:

  • First, my preference is to install xrdp and a simple window manager like xfce. See my answer here for details and instructions. You don't need the full Gnome environment (which requires Systemd) - A simple installation of Xfce should do.

  • However, the most popular method is to install a third-party X server on Windows 10 and set up the DISPLAY variable manually. If you'd like to go this route, see this question and its answer for details.