How To Enable WSL2 Ubuntu GUI and use RDP to Remote

51

WSL2 continues to be one of my top features I want to explore and learn more about in the entire Windows 10 offering. What Microsoft is doing with WSL is fascinating and the endless possibility of having Linux and Windows in such deep marriage is beyond my wildest dream.

In today’s guide, we will use Window’s native RDP client to remote connect into your local WSL2 Ubuntu on the same machine. (when is the last time you RDP into localhost? … and the destination is also running in Linux, not Windows) This never happened to me until just recently. Below is a sneak peek of the end result. Let’s get started.

2020 09 30 22 13 44 1 1 600x325 - How To Enable WSL2 Ubuntu GUI and use RDP to Remote
RDP into localhost running WSL2 kubuntu distro

We assume by now you already have WSL2 running and have at least Ubuntu installed. You can follow this guide to upgrade your Ubuntu to the latest 20.04 LTS distro if you haven’t already done so.

First the standard

sudo apt update && sudo apt -y upgrade

Next we are going to install a GUI distro to Ubuntu

sudo apt-get install -y kubuntu-desktop

Half way through the installation you will be prompt for this configurating sddm, select lightdm

2020 09 30 21 56 59 jonathan@AMDRyzen3   mnt c Users Jonathan 600x367 - How To Enable WSL2 Ubuntu GUI and use RDP to Remote

Install and configure XDRP, and change the RDP port to 3390

# install xrdp
sudo apt-get install xrdp
sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini

Lastly, enable Dbus

#enable dbus
sudo systemctl enable dbus
sudo /etc/init.d/dbus start
sudo /etc/init.d/xrdp start
# check xrdp status
sudo /etc/init.d/xrdp status

You should see something like this below.

2020 09 30 22 01 37 jonathan@AMDRyzen3   600x302 - How To Enable WSL2 Ubuntu GUI and use RDP to Remote

Now launch your Windows Remote Desktop Connection, or mstsc from the Windows Start menu.

2020 09 30 22 49 23 Remote Desktop Connection - How To Enable WSL2 Ubuntu GUI and use RDP to Remote

enter localhost:3390 and connect. You will be prompt by this screen keep the session as xorg, and enter your WSL2 username and password.

2020 09 30 22 04 32 localhost 3390 Remote Desktop Connection 600x605 - How To Enable WSL2 Ubuntu GUI and use RDP to Remote

That’s it, you are now connected to your WSL2 Ubuntu with a GUI over Windows’ native RDP client. How crazy is this?!

Was this article Helpful?

Thank you for the feedback!

51 COMMENTS

    • —————————————————-
      Note: lines starting with “>” are terminal commands
      —————————————————-

      If xrdp is running, stop it via:
      > sudo /etc/init.d/xrdp stop

      Edit the startwm.sh file:
      > sudo nano /etc/xrdp/startwm.sh
      Comment out the following two lines by adding a “#” at the beginning of each line:
      test -x /etc/X11/Xsession && exec /etc/X11/Xsession
      exec /bin/sh /etc/X11/Xsession

      Below the now commented lines, add:
      startxfce4

      Save the file, start xrdp with
      > sudo /etc/init.d/xrdp start

      Now you should be able to start the remote desktop session on windows and login with your linux username and password 🙂

      • still having issues connecting via rdp. The remote desktop tries to connect and then says: Remote Desktop cannot connect to the remote computer

        When running this command it says xrdp is running so not sure what the problem is:
        service xrdp status
        * xrdp-sesman is running
        * xrdp is running

    • cd /mnt is how you access your windows files in Ubuntu. So you can ideally go to your windows Desktop by doing cd /mnt/c/Users/yourwindowsusername/Desktop/

      Hope that helps!

    • it’s finally working, thanks a lot.
      I did the above guide but it didn’t work until I edited the file and installed the repositories.

  1. late to this party. followed the guide, followed the commented changes. one major difference for me: lightdm was not a display manager option gdm-3 was.

    at the end of it all, I can connect, but only get a black screen. following the guide to install vnc and enable a connection via an ssh tunnel, all I get is an xwindows gray screen and cursor.

    it’s like the window server is running, but no windowing agent on the other side so it connects to a blank space.

    any ideas? Start over? 😛

  2. Failed. Connected to port 3350 instead of 3390, despite resetting it to 3390.

    “connecting to sesman ip 127.0.0.1 port 3350
    sesman connect ok
    sending login info to session manager, please wait…
    login failed for display 0”

    Clicking OK just launched another login window.

    What happened? I retraced all of my commands, they were correct.

  3. Thank you thank you thank you.

    New to Linux, using WSL2 under Win 10 Pro

    Your answer worked for me, about the 8th or 9th attemp

  4. I’ve just started using it. It worked but I can’t see anything after logging in. Just a cyan background

  5. Hi,
    Great method, but I’m having a small problem. If remote desktop stays idle, I receive a black screen. Then I have to enter the command; ‘sudo /etc/init.d/xrdp stop’ and that ‘sudo /etc/init.d/xrdp start’ to be able to use the remote desktop again.

    Is there a fix for that?

    Thanks

  6. Hi,
    The instructions above worked for me, after combining it with some suggestions in the comments. What I still wonder is whether it’s necessary to encrypt the connection to the local RDP. By default the encryption is ‘high’, for performance reasons i would like to make it ‘none’. Is this wise?

  7. Is it possible to get audio to work ?

    In
    Windows 10 RDP client -> Show Options -> Local Resources ->Configore remote audio settings -> Settings
    you can configure Play on this computer (Do not play or Play on remote computer)

    But I can’t get any of them to work.

    In my Home dir in wsl 2 Ubuntu 21.04 I can find “.xession-errors” which mentions

    XRDP_PULSE_SINK_S0CKET=xrdp_chansrv_audio_out_socket_24
    XRDP_PULSE_S0URCE_S0CKET=xrdp_chansrv_audio_in_socket_24
    PULSE_SCRIPT=/etc/xrdp/pulse/default.pa
    org.kde.plasma.session: Starting autostart service “/etc/xdg/autostart/pulseaudio.desktop” (“/bin/start-pulseaudio-xll”)

    But no audio gets through.

    Can that be solved ?


    Eigil

    • Just recently found gWSL (grafical WSL2) from the Windows store, with it the setup works great, while before I had some issues with Linux GUI apps

      • Yes, they are slightly different, while WSLg gives you the ability to run Linux-based GUI apps, it doesn’t allow you to ‘RDP’ or ‘VNC’ into a full-blown GUI Linux. But the question is why you need to do that if you can run Linux GUI apps side by side of Windows.

  8. All work well on my windows 11. But on the desktop session to Ubunuto 22.04 I am not able to add programs or configure and save updated configurations.

    Any idea?

  9. I managed to get mine working with the steps provided above! Thank you so much for the help, Jonathan Hu! 😀 (The only difference is that I used the ubuntu-desktop (Gnome) DE instead of the kubuntu-desktop (Plasma) DE. :))

  10. I installed the package, but the terminal was running much slow and an error notification that says wslhost.exe error encountered wsl startup.
    Can somebody help please?

LEAVE A REPLY

Please enter your comment!
Please enter your name here