Configure GUI apps on WSL
Running GUI apps from WSL2
Install X Server
I chose VcXsrv I do not like installing software on Windows so I chose to use portable version. To do that I downloaded the regular setup and used 7-zip to extract the contents of the ‘setup’. There are some instructions here Delete the $PLUGINSDIR folder.
Configure VcXsrv
Follow instructions to configure VcXsrv here
You can run xlaunch.exe to configure how to run VcXsrv and store the configuration data in a file. One can then launch it this way
vcxsrv.exe" -run config.xlaunch
I simply run it with
vcxsrv.exe -multiwindow -clipboard -wgl -ac
The -ac
switch tunrs-off the access control. Read more about other switches here There are ways to do this more securely by adding authorization keys to .Xauthority
, but I have not tried - refer to this page to learn more.
You can also create a batch file or a desktop/taskbar shortcut - something like
D:\bin\VcXsrv\vcxsrv.exe -multiwindow -clipboard -wgl -ac
Configure WSL2
Update and upgrade and install desktop environment of your choice - I chose xfce
:~$sudo apt update && sudo apt upgrade -y && sudo apt install xfce4
Then export the DISPLAY environmental variable and point it to your X server which for me is VcXsrv running on my host Windows OS
~$ export DISPLAY=$(/sbin/ip route | awk '/default/ { print $3 }'):0
~$ echo $DISPLAY
192.168.165.113:0
:~$ nc -v 192.168.165.113 6000
Connection to 192.168.165.113 6000 port [tcp/x11] succeeded!
^C
If at the last step connection to TCP port 6000 fails then you would need to add a firewall rule to allow VcXsrv on your Windows host.
At this point running any X application like xclock
should open the window on your host Windows OS.
You can add this to bash profile so that it is automatically run everytime you open WSL
:~$ echo "export DISPLAY=$(/sbin/ip route | awk '/default/ { print $3 }'):0" >> ~/.bashrc