Apropos nothing, I was struggling with forwarding an X11 Linux application (OpenSCAD, if you must know) to my Windows 11 22H2 desktop, which includes
WSLg, the baked in display and audio server, and wasn’t getting anywhere because:
WSL2runs inside a Hyper-V environment, so you are effectively behind outbound NAT.
- Every single piece of wisdom on the Internet about this focuses on installing third-party X server software (which I don’t want to do).
- Fedora, for some reason, breaks
DISPLAYmanually (I still haven’t figured out why).
In a nutshell, I had to use an Ubuntu machine, and just doing
ssh -X [email protected] worked fine. I will update this post when I figure out why it failed on Fedora.
But there is a technique I’m intrigued about, and that I was trying on the Fedora machine before trying another one: forwarding the remote X11 TCP socket to the local domain socket, something I had forgotten was possible, and which really should have worked:
# OpenSCAD complains bitterly without this export LIBGL_ALWAYS_INDIRECT=1 ssh -R 6020:/tmp/.X11-unix/X0 [email protected] # on the remote machine export DISPLAY=:20 # run your app
Again this should have worked in Fedora (which was complaining about auth errors with plain
ssh -X or
-Y), but didn’t. However, it worked first time on Ubuntu, and is a nice technique to have on hand if, for some reason,
xauth fails and you don’t want to mess about with such arcane things as
And then I decided to try
ssh -X again and lo, it worked on Ubuntu but not in Fedora. Personally, I suspect GNOME, or the tricks modern session managers use to coexist with Wayland. Sigh.
Still, it’s nice to know the
WSLg team went to so much trouble to make X11 work seamlessly on the Windows side.
Next I needed to get X11 apps to render in HIDPI without looking like they were designed for ants.
Setting these on the remote machine worked for me on my LG Ultrawide:
# for Qt apps like OpenSCAD export QT_AUTO_SCREEN_SET_FACTOR=0 export QT_SCALE_FACTOR=1.3 export QT_FONT_DPI=96 # GTK, because I also needed the STL viewer to work export GDK_SCALE=2 export GDK_DPI_SCALE=0.5 # gsettings set org.gnome.desktop.interface text-scaling-factor 2.0 # use sparingly, because it's persistent.
microsoft-edge on Linux honors
--force-device-scale-factor, so I could also use 1.3 to get a decent experience.