Discussion
Search code, repositories, users, issues, pull requests...
wongarsu: The ability to run docker containers as wsl instances looks nifty. A bit more overhead since they now run as a VM instead of a container, but you get the ability to start a shell with Windows terminal or access files with Explorer (and thus every program running in Windows)
behnamoh: I wish it was a TUI. Windows is a plague I try to stay away from as much as possible, and it already gives me headaches to setup WSL and manage them over ssh. Some things you just can't do w/o remote desktop... And sometimes WSL crashes and there's literally no way to recover except to restart the whole machine.The only reason I use Windows is because Nvidia drivers are easier to setup. But once I'm inside my Fedora WSL, that feels like home, not the Windows host.
eddythompson80: Are you sshing into the wsl instances or he windows host? Pretty much all my interactions with wsl is using the wsl cli. Other than the very initial step of enabling wsl, mostly because I never memorized the powershell enable command.
shmerl: Is there anything that can run a normal Linux VM guest with good quality graphics acceleration on Windows host (i.e. both full OpenGL and Vulkan support)? Not the gimped half VM over HiperV.VirtualBox has really broken graphics support, you can only run software rendering Linux DEs that way.
behnamoh: I ssh directly into WSL but for setting it up (auto-start, recovery, etc.) I ssh into PowerShell (which I hate). A TUI would go a long way there because no one wants to learn PowerShell.
eddythompson80: You can pass a GPU to the vm if you have more than one. GPU vendors have been gating GPU virtualization for data centers only. Or you can run X on windows like wslg does it.
shmerl: I need something similar to what qemu/kvm can do with virgl and venus, i.e. pass through graphics call to the same GPU that's used by the host, not pass whole GPU with SR-IOV or PCIe passthrough. So far I haven't found anything like that which actually works.I'm not using X, I need a normal KDE Wayland session.
lukax: Looks nice but still a bit sad that Flutter is used instead of something native given that they don't need the app to be cross-platform.Well, even Microsoft uses React Native for a lot of Windows-only apps.
Defenestresque: I'm glad I'm not alone in missing native apps. I get that it's easier to code a note-taking Electron app, but every time I look at a Linux terminal app written in JavaScript it makes me want to cry.I know I'm beating a dead HN horse here, but how the hell is it possible that megabytes of embedded JavaScript in websites, to the point that LinkedIn uses about half the RAM I had for my first computer loading 32 MB of JavaScript files. Jjira loads 50 (!) MB of javascript, enough to include the uncompressed version of War and Peace 16 times. That's the size of a full installation of the entire Windows 95 operating system. GitLab's static landing page is 13MB of JavaScript, larger than that of Twitter.What the hell are we doing here? Why can I spin up a 100 MHz, 8MB RAM VM with a hard drive size that's 1/16th of your entry level MacBook's RAM and have apps open immediately? I understand some backsliding as things get more high level, but a website loading 50 megabytes of JavaScript, to me, is like a bright neon sign that screams "something has gone wrong terribly here". Obviously programs, websites and operating systems have become incredibly more complex but your $200 A-series Samsung phone has about 8 cores at 2.2 GHz each. A $200 processor when Windows 95 was released had one core at 0.1GHz. making the processing power about 164x faster. Keep in mind this $200 includes a fully functioning computer in the palm of your hand. The actual CPU part for a midrange phone like the Samsung A15 5G is the Dimension 6100+, which costs all of $25 bucks.There must be some sort of balance between ease of prototyping, creating and deploying an application without bundling it with Electron or building websites that use tens of megabytes of a scripting language for seemingly nothing. Especially when we can see that a fast, usable website (see this very website or the blogs of many of the people who post here, compared to Reddit for your average medium or substack blog).How the hell do we fix this? The customers clearly don't want this bloat, companies clearly shouldn't want it either (see research that indicates users exposed to a 200 millisecond load delay on Google, performed 0.2-0.6% fewer searches, and effect that remained even when the artificial delay was removed. This was replicated by Microsoft, Amazon and others. It's frequently brought up that Amazon has said that every 100 milliseconds of page load time cost them 1% in sales, though it's hard to find definitive attribution to this), programmers should hopefully not want to create crappy websites just like mechanics should hopefully not want to install brake pads that squeal every time the user breaks.This got way longer than the two sentences I expected the post to be, so my apologies.[1] https://tonsky.me/blog/js-bloat/ [2] Velocity and the Bottom Line, Shurman and Brutlag
okanat: WSL2 already allows you to use your own GPU driver as a paravirtualized GPU over open source Mesa d3d12 driver. You get quite good OpenGL performance with that.There are projects like this https://github.com/jamesstringer90/Easy-GPU-PV that you can use to setup a Hyper-V machine to use the same paravirtualization.
skhameneh: This is great and all... Except I’ve long given up on WSL. I really tried to make WSL work for many things, only to find the entire experience (reliability, performance, and beyond) was simply better in every way without Windows.No matter what you do, there will always be some weird platform detection or line termination that pops up somewhere. And if it isn’t that, it’s degraded performance or kernel-level incompatibility.
omnibrain: Yes, I since embraced pwsh for terminal stuff on Windows. For everything else I switched back to proper VMs or remote hosts.
TZubiri: I've transitioned from linux back to windows for workstation usage, and it's one of the main features that allowed me to do so, I haven't had major problems, so I would be interested to know what issues you faced. Of course direct linux is better than WSL, but I found the product to be of very high quality and well integrated with windows.
nilkn: Same here. The initial version of WSL back in the day could certainly be rough, but modern WSL2 seems totally fine to me. It is the key ingredient that allows me to have one workstation that can do "everything".
eddythompson80: > (reliability, performance, and beyond)Considering it's just a headless linux vm with some integration with the host, I don't understand what reliability, performance or beyond it could possibly introduce beyond what any VM solution provides?There are few gotchas with WSL. I hate how by default it includes your Windows path in your default linux path out of the box. It's easy to turn off and my init scripts for any VM always do that anyway, but it's the main thing I have seen people who are new to WSL get tripped by. It's useful to be able to run windows programs from within WSL. Like all the cli tools that pop up a browser to make you login, but that's about where its usefulness ends for me.> No matter what you do, there will always be some weird platform detectionIn my experience, unless you're running a very mainstream distro (read Ubuntu) there will always be a weird "platform detection" issue. I run openSUSE on most of my devices, and used to scripts not working because "uhhh, this is not Ubuntu or Debian or Fedora". The only time I run into "platform detection" issues are scripts that assume `uname -r` of a very narrow format.> or line termination that pops up somewhere.That goes back to my original comment about running Windows programs from linux, or moving files to/from linux. I never run into this issue because, just like on a linux desktop, I only interact with linux through the commandline. Even on a full linux desktop, I have this mental separation between GUI apps and terminal apps.> it’s degraded performance or kernel-level incompatibility.The only "kernel-level incompatibility" I run into is that WSL kernel doesn't have /dev/kvm. Granted I don't do a lot of kernel module specific development, so I don't know how something like a USB device or a PCIe interface can be passed to the WSL instance. But again, I'm thinking of it, and treating it like a user-mode development VM, not a full host.
osigurdson: Perhaps I misunderstand your comment but when you run docker / podman in Windows, you are using WSL / HyperV.
wongarsu: running docker on windows runs docker in wsl (which is a HyperV guest). The project offers running docker images as wsl instance (which is a HyperV guest), no docker involved
llm_nerd: You said - "A bit more overhead since they now run as a VM instead of a container"To which osigurdson seemed to be noting that WSL2 itself is a VM (meaning if you launch 1 or 100 WSL2 instances, a single Linux VM will be spun up), and when you run docker, it runs using exactly that same VM (optionally, though it's the default now to just use WSL2's backend).Can you clarify what you meant by "A bit more overhead"? Running a container via docker or directly via WSL2 will use the same underlying VM, and there will only be that one VM regardless of the number of WSL2 or docker instances.
wongarsu: For a single container the difference depends on your exact setup. I typically run docker in the same WSL instance as my other wsl stuff, so starting a single docker container adds 0 additional VMs, while starting the container as a wsl instance will add one VM. If you use the "docker for windows" package you may be adding a VM just for running docker, depending on your setup.Once you start the second container the difference becomes more obvious: running $N containers in docker uses one VM with one linux kernel, no matter how many containers you add. Running $N containers as separate WSL instances runs $N VMs and $N linux kernels. That's the "bit more overhead" I was referring to
withinboredom: USB forwarding to WSL is built in to the WSL kernel, but you do need to install a thing on the windows side. After that, there are a number of GUIs to manage your usb devices or you can use the shell. Switching a usb devices from windows to WSL basically unplugs it from windows and plugs it into WSL.I need it to access ssh keys from my yubikey. It’s painless if you just set it up to automatically forward the device on startup.
eddythompson80: You can use wsl.exe from powershell to manage wsl.
mmastrac: FWIW I started reverse engineering the WSL2 API -- it's not terribly complicated to do most tasks without the CLI (which is clunky IMO, as it had a number of times where it changed in backwards/forwards incompatible ways)https://crates.io/crates/wsl-api
tonymet: this is great and I have a feature request: A "refresh VM" feature that exports your home dir + packages into a new VM instance.I've tried Optimize-VHD but renewing the VM this way frees up disk and speeds up the VM as well. None of the WSL settings for sparse disk / disk shrinking seem to work well.Here's what I usually do $ tar -czf /mnt/c/Temp/home-backup.tgz $HOME $ apt list --installed > /mnt/c/Temp/packages.txt delete the VM, create a new one, reverse the process. $ tar -cxf /mnt/c/Temp/home-backup.tgz -C $HOME $ apt update $ cat /mnt/c/Temp/packages.txt | xargs apt install
tonymet: maybe it was WSL1 ? WSL2 IO is excellent as long as you stay within the FS. And with VS Code WSL support , all IO & commands are remoted into WSL so there are no Windows/Linux compatibility issues.
llm_nerd: "Running $N containers as separate WSL instances runs $N VMs and $N linux kernels."But it doesn't, and this is what I'm disagreeing with.If you instantiate WSL2, it launches a Linux VM. A single Linux VM. If you then run Docker with WSL2 integration (the default and hugely recommended), it uses that Linux VM as its VM as well, so you're still at 1 VM.If you run 100 WSL2 instances, they will all use that single Linux VM, each doing namespacing for isolation with their own filesystems. If you run 100 Docker instances, they will all use that single Linux VM.If you run 100 WSL instances, and 100 Docker instances (assuming, again, WSL2 integration which is the default), they will all be using that single Linux VM.
Jenk: Every time you run `wsl --install <distro>` you are creating a new VM. Every time you run `wsl --unregister <instance id or name/>` your are removing a VM.It is these two operations at the heart of OP's app.
llm_nerd: Okay, are you guys using wrong terminology? Are you talking about a filesystem image as a "VM", because that would be terribly wrong. Do you think WSL2 is a "VM" because it's persistent? Did you know Docker containers can be persistent as well, people just choose as a best practice not to use it like that? Does that make them magical VMs?WSL2 has a single VM running as the process vmmem. This is the single Linux kernel that will be shared by every WSL2 instance. It will also be the instance that hosts Docker containers as well. I mean, I'm just echoing myself and apologies for the repetition, but this is just easily confirmed, utter factual truth.A rootfs is not a VM. WSL2 and containers have different nuances about their filesystem and isolation (WSL2 instances is aware of other instances, for instance, as a design aspect), but they're more alike than different. And they share little in common with something like VirtualBox.Again, sigh, if you install 10 WSL2 "distros", you will have 10 rootfs overlays on your drive, and 10 persistant VHD files. When you run these the VM they all run under is the shared vmmem instance.
opello: Is there a way to visualize this on a running system or some documentation that describes it? I'm not familiar with the plumbing here but did try to find some documentation.
herf: I wish there were more ways to specify whether the Windows filesystem /mnt/c should be mounted in a WSL2 instance - it is kind of generally on or off. In cases where I want WSL2 to function as a "container" isolated from my desktop, I use a different Windows user just in case.
llm_nerd: Neat project. Merging the layers of a docker image and setting that as a WSL filesystem is a nice convenience.I recently realized that 100% of what I use Windows for was as a WSL2 foundation: It had been reduced to being an extremely overbearing and heavyweight host machine for a Linux VM. Nothing in my life was Windows-only anymore, and it was basically just inertia that I even still had it installed.I'd been a "Windows guy" for decades, had decades of Windows software dev under my belt, even got my MCSE, MCDBA, along with other Microsoft certs, and even wrote for MSDN Magazine. No longer did it have any leverage on my profession at all, which was shocking to me.The next day I purged Windows from my two main working machines, so now I'm pure Linux and macOS. A few weeks later and I can say it has been a marvelous transition, and cuts out the no longer relevant middleman.
binkHN: Right there with you. When Microsoft started pushing Windows 11 over Windows 10, that's when I decided I had enough of my experience being dumbed down. I switched over to Linux, haven't looked back, and couldn't be happier. I still run a Windows virtual machine for those times that I need something native to that operating system, but I should have made the move years ago; Microsoft doesn't care about Windows anymore.
ai-psychopath: > The customers clearly don't want this bloat,citation needed. the customers clearly want it, for example most programmers chose VS Code over a native app
306bobby: If there was a vs code native alternative that was parity, that might not be a case. That's apples and oranges
martinald: It's interesting because I'm the same in so much that I use windows basically as a WSL2 host and not much else. I use a MacOS a lot._However_, still find the Linux desktops that I've tried are too buggy. While the hardware support is incredible (compared to Windows out of the box), I constantly hit bugs with fractional scaling on multiple monitors. I'm hopeful that Ubuntu 26.04 may finally iron out the last problems with this. The latest version of Fedora I installed did fix all this but I'm far too used to Debian based OSes.
super256: [delayed]
mappu: This is not true - it's actually all the same VM if you check hcsdiag.WSL2 distros only use Linux namespaces, same as docker, and the WSL2 --system distro can see PIDs from all running WSL2 distros.
admiralrohan: My WSL Ubuntu instance always gets disconnected after I come out of sleep or hibernation mode. Anyone else faced this issue and any solutions? I have tried everything found online.
pjmlp: I already given up on dual booting around 2010.The only difference bettween 2010 and 2026, it that nowaday instead of having a mix of Virtual Box/VMWare Workstation depending on my work system, I have WSL 2.However my Windows develoepr experience goes back to Windows 3.1, thus I mix and match my needs, between Windows and Linux sides.WSL 2.0, and Virtualisation Framework are really the Year of Linux Desktop. /s
Quarrel: You operate a little cleaner than I do- there are invariably things that end up in /usr/local/bin..Still, thanks for the process you use.My wsl is pretty long lived now, through quite a few ubuntu upgrades and installations of stuff that I probably no longer need.
Jenk: I stand corrected. It makes sense that it is a chroot/rootfs rather than fully independent VMs.re: side-by-side running, I always get socket and/port port problems when doing that. Without having looked into it at all I figure it is NAT collisions.
xd1936: Zed?
guenthert: "delete the VM, create a new one, reverse the process. $ tar -cxf /mnt/c/Temp/home-backup.tgz -C $HOME" That's not going to bring much joy.
ghosty141: Just FYI you can also run a windows docker natively in windows without using WSL or any linux component. But that's more of a niche usecase.
andix: I haven't heard anyone talk about Windows containers in years, and that was actually a good thing. Let's just pretend they never existed.
krapht: Sublime Text? Sure, doesn't have the long tail of extensions, but surely most people don't need those. The biggest issue with ST being the fact that it costs money...
wiseowise: > The biggest issue with STThe biggest issue is that it’s not open source.
aclatuts: Most of the JS bloat comes from really aggressive analytics, error tracking, and a/b testing. Not many developers are willing or given approval to remove these features up for smaller bundle sizes.