# Reasons

This project idea (or rather, combination of projects and know-how) was born out of frustration due to some problems I found with the latest WSL2 environment:

  • You can't alt-drag/resize windows if you use AltSnap or AltDrag (great apps by the way!) because it just craps out. Once you drag or resize, for some reason the RDP backend doesn't update the window size accordingly, so you end up with the window correctly resized (within Linux) but with the wrong size/coordinates in the visual representation of it. There's also problems with window rendering, positioning and sizing. See these bugs for details:

    As you can see, there's no response about these issues since June 23, 2021 when the alt-drag/resize bug was reported. The lack of an official response or solution to these problems forced me to look for an alternative solution. I've spent about a week or so in this one, but it's been working way better than the official one so far, and I hope it does so for you too.

  • With WSL2 (or WSLg) you're forced to use Wayland-based apps. There's no support for X at all (maybe they're using XWayland, not sure) so if you want to force apps to use X instead, you need to install an X server on your host machine and edit a few files here and there to add some environment variables to disable Wayland altogether. Quite annoying if you ask me, it feels hackish.

  • While you can edit the wsl.conf files in your host or in the distro, there's little control on how the distros and VMs work. It's as if you can only have a single Linux VM created "per host, per distro" and that's it. Plus, you can only edit the number of processors/cores, allocated RAM and nested virtualization with a flag, and even if so, the current kernel (as of date, April 2022) has problems with some CPU opcodes when running some VMs through QEMU. This forced me to look for a custom kernel that would work, but then again, hackish.

  • What if you need snapshots? What if you'd like to change your VM's resources using a GUI instead of editing a few files hidden in your local disk? Nope. And let's not talk about the fact that the VHDX file grows and grows and that you need to use a bunch of commands in diskpart just to compact the disk. With this solution, it's as easy as running CloneVDI, clicking a few things and that's it.

  • To use WSL2 (and WSLg) you need Windows 11, or a retail Windows 10 (sorry, LTSC! Only WSL1 for you). While Windows 11 is by far the best OS to date in my opinion, it's a requirement that I know others can't comply. Plus, when you work with other company-provided devices, you might not be able to update the OS so you're stuck with an old version just because they say so (and not because it's the best idea...) therefore hampering your ability to work better at your job.

  • With WSL2, you're forced to use the distros they support and suggest and only have available through the Windows Store, and that's the only installation method they support (AFAIK). Ubuntu Beta? Forget it. Clear Linux? Nope. Puppy Linux? What?. With this, you can be sure to run any distro you want, in their own clean form: No hacks, no workarounds, no quirks.

Now, don't get me wrong. WSL2 and WSLg are a great idea and concept and I dare to say that it made Windows the best DE/WM for working with Linux, as it's still a mess on the desktop (as of 2022) for plenty of reasons so WSL2 is a godsend.

This is just an alternative I had to develop to overcome some of these issues mentioned above, and also have a bit more control on the Linux distros I'd like to run in my Windows host, emulating WSL2 behavior, and getting the alt-drag/resize enhancements and other ones mentioned in this guide.

If you arrived here, thanks for reading! You can proceed with the rest of the guide 😊👍🏻