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

Time:11-25

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?

CodePudding user response:

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.

CodePudding user response:

You might want to have a look at this. I am pretty sure that this won't work - I had to scourge a lot of different articles to make it functional.

One way to make it work on your device would probably be to use X-Server, but it is not worth the hassle. Install Linux as dual-boot.

  • Related