Hacker News new | ask | show | jobs
by jdellinger 2260 days ago
Does anyone want to share how they use the WSL2 & X-Server combination?

In my case, I'm mostly happy with the VSCode WSL2 integration. I keep all my projects on the linux fs and it is fast to work with. The only thing which annoys me is the window management in Windows. Too much Mouse movement and random ALT-TAB-ing.

I've never got i3 to work with a Windows x server on multiple displays with high dpi. X401 also only supports a single display.

2 comments

As for Windows native window management, FancyZones is better than nothing. You can overlay zones, I have split each monitor in half with two zones each, then overlayed a bunch of smaller zones for stuff like terminal windows, etc.

https://github.com/microsoft/PowerToys/tree/master/src/modul...

FancyZones is great! Already a huge enhancement to the normal windows snapping.

However, it only solves the window placing problem, not the window navigation problem. I would love to navigate with something like SUPER + LEFT/RIGHT, similar to i3. Currently the only possible way is to (CTRL)+ALT+TAB, which completely lacks window layout context and changes order depending on recent uses.

Looks like the windows equivalent of the Gnome GTile window manager extension: https://github.com/gTile/gTile
I'm curious, I always thought that devs who choose Windows do so because they like the window management and the UI tools etc. That's my reason for sure. What's stopping you from just running proper Linux with VS Code, if you don't like the way the Windows shell works?
Windows shell is a good reason not to use Windows. It's like an early 2000s KDE desktop mixed with a bunch of Gnome and ancient Motif apps. On the command line side, PowerShell isn't half bad, but it still requires you to write C# from time to time to make things work... The biggest four reasons to use something other than Linux (Mac included):

* Adobe software, MS Office, pro audio, pro video, and other income-dependent software tools mostly run on Windows and/or Macs and don't have a Linux version.

* Ease of asset management for the company (yes, it can be done with Linux, but Apple, MS and Google have great tools for managing huge numbers of computers). Google (Chrome) and Apple have a great story on configuration management by having much more consistent hardware.

* Company issued laptop (usually combined with the need for MS Office & corporate asset management)

Oh, and I love VS Code, but it really needs a full org-mode equivalent. It's the only thing that keeps me reaching for Emacs at least once a day.

The strongest argument for Windows is not its window management or UI tools, it's that you can use third-party software without dealing with too much bullshit.

On Linux, if your third-party software is available at all, it's on some third party repo you have to add manually, or maybe it's a binary which may or may not work on your particular distribution on your particular version.

This is basically the reason why I gave up on Linux on the desktop, it just hasn't gotten better in decades, it probably will never get better. The distributions have no incentive to make this work well, because first-party packages are a big selling point.

I'll take a crappy default shell over that.

(After re-reading my own comment, I don't think I'm particularly rebuking what you said, it's turned into a "I hate computers" vent :-))

In my eyes, how Windows and Linux deal with third party software is identical...

The Windows model forever has been "you just double click an .exe or an .msi and it runs".

i.e. outside of stuff published on Windows Store (which many developers will not do), it's down to the developer to:

- Distribute their software and provide an update mechanism (download an exe? Windows Store? chocolatey? Steam / epic games launcher / origin / uplay? jetbrains toolbox? adobe software updater?)

- Deal with the many different environments (i686 vs x84, Windows XP / 7 / 8 / 10 / 10 Home / 10 Pro / 10 Pro N* / 10 Basic Server Education Edition N RT for phones)

- (Probably) bundle their software with the exact version of the libraries they're using (looking at you, "Installing Microsoft VC Redist" and DirectX, every single game that I run), because any in /system32 might be the "wrong" ones

* 10 Pro N = "without media essentials" or something, which I stupidly chose last time I forked out the money for a Windows license. Every time there's a new major Windows update (assuming it doesn't repeatedly fail to update, forcing me to reinstall from scratch,) I need to go and reinstall the Media Feature Pack so Rockstar Launcher and GTAV and $software don't all fail to launch with an obscure error code that means one of 100 things that some corporate web forum rep will not have the answer to... Because none of them put a .log file somewhere ...

So the fact that stuff "just runs" better on Win is more to do with third party developer effort rather than a failing of the OS and distribution. There's no incentive for microsoft to make it work better either, because it's Not Their Problem. A whole slew of software runs like bullshit on Windows too, but we just kind of accept it as it is...

Yet me running a program by installing Wine and double clicking the .exe, or via mono, or running one via a snap image, or an .AppImage, or a docker image (those 3 are essentially containerized environments which should work regardless of distro as they bundle their own libraries a la the windows dll hell, though your kernel version may cause issues, just like windows driver versions do), or my Linux distro's packages... is apparently jumping through more hoops than Windows?

As a power user of both OS'es, they're just as much a pain in the ass as each other.

One key difference is the OS <-> application interface is defined as a group of system provided dynamic libraries on Windows, not syscalls. So Windows effectively provides a set of very reliable core libraries that is guaranteed to be backward compatible. And as long as you don't use newly added APIs, also forward compatible. While on Linux even libc is decoupled from the kernel, each distribution uses a different version, the application cannot distribute its own libc in any sane way, and the glibc choose to use ELF symbol version to make incompatible changes to frequently used APIs (like memcpy), sabotage bidirectional compatible attempts.

Oh, and there are only one Windows distribution. Not at least 3 major ones.

These both make packaging for Linux hard (requiring kinda funny solutions wrapping up a sysroot as a whole, like Snap or AppImage), while on Windows, the developer builds an exe, and voila, it works everywhere, even on very old systems. There are simply no funky stuffs e.g. glibc symbol version issue.

IMO several reasons still exist for windows:

* Corp Policy * Gaming * Professional Tools (Photoshop etc.) * Ease of Use

I tried concepts like dual booting windows & linux, but in the end they often created a mental barrier ("Ugh, I could do some work but I would've to reboot"). With WSL2 and PowerToys I'm 90% happy. The missing 10% is a better window navigation via keyboard concept.