# Pros and cons

  • You can run X or Wayland based apps in seamless mode like WSL2, without the overhead or Wayland-only features that WSL2 has. This also removes the requirement to use an X server on Windows, of which there are plenty, and some work better than others. If you like, however, you also have that option. No need to use dirty hacks to remove Wayland from WSL2 just to make it work nicely with X.

  • You can use your own custom window decorations from the Linux Window Manager you're using, without being stuck to WSL2's Wayland GTK-based window decorations.

  • You can alt-drag/resize windows correctly, even when using AltSnap!

  • Automatic port forwarding just like WSL2! For instance, if you run Docker inside, and create a MySQL instance inside it, you can access it by just pointing your host's MySQL client to localhost:3306 and it'll work!

  • No need to have Hyper-V or related features installed (meaning you can also have HAXM installed and running). This also means your machine can run bare metal without being virtualized (albeit in a ring-1 hypervisor) in Hyper-V, and thus also allowing nested virtualization correctly!

  • You can store and run the VM from anywhere you want, be it an external disk, a NAS, etc. It all depends on VirtualBox's support. You also have more control over that, no need to dig into Windows Store's internal folders to find the VHDX file.

  • Snapshots! Did I mention we're using VirtualBox for this? Meaning, you can take a snapshot, try something, and if it doesn't work, restore the snapshot in seconds as if nothing happened?

  • You have 100% control of the VM resources and behavior, thanks to VirtualBox (RAM, CPU, etc.). No need to edit the limited %USERPROFILE%\wsl.conf file to apply system-wide configs, or edit the distro's /etc/wsl.conf file. It all feels more natural, just like any VM in your environment.

  • Audio support (input & output) without quirks or hacks like PulseAudio / Pipewire or similar!

  • You can use any distro you want, so you're not locked to just Ubuntu LTS versions, Debian, Kali, OpenSUSE or Alpine. I repeat, any distro can be used!

  • VirtualBox's seamless mode works best with just 1 monitor, in the case you need to run GUI apps. However, you can resize the window, move it to the other monitor and enable Seamless mode again. It seems that VirtualBox's multi-monitor handling/behavior isn't as good as VMWare Player's.

  • It's not as integrated with the host OS, meaning, you can't run $ explorer.exe ~/ and expect it to open an Explorer window in your \\wsl\home\user folder. This could be fixed with some scripting, but it goes out of the scope (for now).

  • Maybe losing a bit of hardware acceleration. VirtualBox's 3D implementation with the Guest Additions installed isn't as bad, I've run glxgears and it's synced to my refresh rate, meaning usually locked at 60 fps or so. It's been smooth so far though. I wouldn't recommend this solution for data scientists or people wanting to use CUDA with it (untested, no idea if it can be done with VirtualBox anyways) or even GPU passthrough, but for full stack development (Docker, GUI apps, etc.) it works perfectly fine.

Are you excited yet? Then head to the VM Setup page to get started!