|Install Ubuntu on WSL2 for Windows 10 and Windows 11 and run graphical applications with WSLg
Note: This doc is not being maintained anymore. Please see instead https://canonical-ubuntu-wsl.readthedocs-hosted.com/ .
Windows Subsystem for Linux (WSL) allows you to install a complete Ubuntu terminal environment in minutes on your Windows machine, allowing you to develop cross-platform applications without leaving windows.
- How to enable and install WSL on Windows 10 and Windows 11
- How to install and run a simple graphical application that uses WSLg
- How to install and run a much more advanced application that uses WSLg
ⓘ Note: As of November 2022, WSL is now available as a Windows Store app for both Windows 10 and Windows 11. This means previous tutorials related to installing WSL as a Windows feature are no longer required.
- A Windows 10 or Windows 11 physical or virtual machine with all the updates installed
ⓘ Note: This tutorial doesn’t cover GPU acceleration which is covered in a tutorial of its own.
WSL can be installed from the command line. Open a powershell prompt as an Administrator (we recommend using Windows Terminal) and run:
This command will enable the features necessary to run WSL and also install the default Ubuntu distribution of Linux available in the Microsoft Store. It is recommended to reboot your machine after this initial installation to complete the setup.
You can also install WSL from the Microsoft Store.
The WSL app is availble to install directly from the Microsoft Store like other Windows applications.
To install the WSL application from the Microsoft Store, open it and search for Windows subsystem.
Click on the item Windows Subsystem for Linux to open the corresponding application page.
Click on Get to download and install the application.
Upon installation, you can click on Open, but it will not do much since there is no Linux distribution installed.
However, if you really want to open the WSL application without installing a distribution, you’ll see a nice and short help message that you must follow in order to make something useful with WSL:
You can now proceed with the installation of Ubuntu.
WSL supports a variety of Linux distributions including the latest Ubuntu release, Ubuntu 20.04 LTS and Ubuntu 18.04 LTS. You can find them by opening the Microsoft Store app and searching for Ubuntu.
Choose the distribution you prefer and then select Get.
ⓘ Which version should I choose?
There are three types of Ubuntu releases published to the Microsoft Store:
- Ubuntu with a version number e.g. Ubuntu 20.04.x. This will always be 20.04 and upgrades won’t be proposed.
- Ubuntu without a version number. This is the latest LTS version of Ubuntu after the first point release. At the time of writing, it is Ubuntu 22.04. It will remain Ubuntu 22.04 until the first point release of the next LTS release of Ubuntu, for example 24.04.1 in 2024.
- Ubuntu Preview is a daily build of the latest development version of Ubuntu. You should install it if you want to live on the edge but not for production workload as it doesn’t receive the same amount of QA as stable releases and may break at any time.
Ubuntu will then install on your machine.
Once installed, you can either launch the application directly from the store or search for Ubuntu in your Windows search bar.
It is possible to install the same Ubuntu applications available on the Windows Store directly from the command line.
In a Powershell terminal you can run:
wsl --list --online to see all available distros.
You can install a distro using the NAME by running:
wsl --install -d Ubuntu-20.04
wsl -l -v to see all your currently installed distros and which version of WSL they are using:
Congratulations, you now have an Ubuntu terminal running on your Windows machine!
Once it has finished its initial setup, you will need to create a username and password (this does not need to match your Windows user credentials).
Finally, it’s always good practice to install the latest updates with the following commands, entering your password when prompted.
sudo apt update
sudo apt full-upgrade
Press Y when prompted.
In September 2022, Microsoft announced support for systemd in WSL. This long-awaited upgrade to WSL unlocks a huge number of quality of life features for managing processes and services. This includes snapd support, which enables users to take advantage of all of the tools and apps available on snapcraft.io.
To enable systemd you will need make a small modification to /etc/wsl.conf in your Ubuntu distribution.
Run `sudo nano /etc/wsl.conf’ to open the file and insert the following lines:
Then restart your distro by running
wsl --shutdown in powershell and relaunching.
ⓘ Systemd is enabled by default in the Ubuntu Preview application.
WSL2 comes with WSLg enabled by default. WSLg allows you to run graphical linux applications.
To check that you have the latest package lists, type:
sudo apt update
Then, start with some basic X11 applications:
sudo apt install x11-apps
To run the xeyes, a “follow the mouse” application, type:
The & at the end of the line will execute the command asynchronously. In other words, the shell will run the command in the background and return to the command prompt immediately.
The first launch of a GUI application takes a few seconds while WSL is initializing the graphics stack. Next executions of GUI applications are much faster.
Leave xeyes opened and run the calculator xcalc with:
When you move the cursor over the calculator, xeyes follows the cursor. This shows that several GUI applications can interact together.
Note that applications running under WSLg display a little penguin at the bottom right corner of their icons in the Windows taskbar. That’s one way you can distinguish applications running on Windows or Ubuntu (besides the window decoration and styling).
Close xeyes and xcalc by pressing the cross icon on the top right corner of each X application window.
Xcalc and xeyes are very basic X Windows applications but there are plenty of choices in the Linux ecosystem corresponding to your needs and available out of the box on Ubuntu.
In the following example, we will use GNU Octave to perform numerical computation.
ⓘ GNU Octave is software featuring a high-level programming language, primarily intended for numerical computations. Octave helps in solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with MATLAB. [GNU / Octave ]
We will use it to calculate and draw a beautiful Julia fractal. The goal here is to use Octave to demonstrate how WSLg works, not to go through the theory of fractals.
First thing is to install the software like we did for x11-apps, from the terminal prompt run:
sudo apt install octave
Then start the application:
octave --gui &
Do not forget the ampersand & at the end of the line, so the application is started in the background and we can continue using the same terminal window.
In Octave, click on the New script icon to open a new editor window and copy/paste the following code:
Inspired by the work of Bruno Girin ([Geek Thoughts: Fractals with Octave: Classic Mandelbrot and Julia](http://brunogirin.blogspot.com/2008/12/fractals-with-octave-classic-mandelbrot.html))
Calculate a Julia set
zmin: Minimum value of c
zmax: Maximum value of c
hpx: Number of horizontal pixels
niter: Number of iterations
c: A complex number
function M = julia(zmin, zmax, hpx, niter, c)
%% Number of vertical pixels
%% Prepare the complex plane
%% Generate Julia
This code is the function that will calculate the Julia set.
Save it to a file named julia.m. Since it is a function definition, the name of the file must match the name of the function.
Open a second editor window with the New Script button and copy and paste the following code:
Jc1=julia(-1.6+1.2i, 1.6-1.2i, 640, 128, -0.75+0.2i);
This code calls the function defined in julia.m. You can later change the parameters if you want to explore the Julia fractal.
Save it to a file named juliatest.m.
And finally, press the button Save File and Run.
After a few seconds, depending on your hardware and the parameters, a Julia fractal is displayed.
Like Octave, this window is displayed using WSLg completely transparently to the user.
That’s it! In this tutorial, we’ve shown you how to install WSL and Ubuntu on Windows 11, set up your profile, install a few packages, and run a graphical application.
We hope you enjoy working with Ubuntu inside WSL. Don’t forget to check out our blog for the latest news on all things Ubuntu.