Run a Full Ubuntu Desktop on Windows 10 with Linux Integration Tools

Date: 19/07/2025

Since the author wrote the previous article about Windows Subsystem for Linux, more than half a year has passed. During this time, Microsoft released the first major update for Windows 10 — the Anniversary Update 1607, which made all new features, including WSL, available to any user who installed the update. WSL has become much more refined and, arguably, more “complete”.

Compared to the Windows 10 build 14316, which first introduced the Linux subsystem, the Windows 10 Anniversary Update features a Linux subsystem that is quite functional and practical (as much as possible at this stage). It operates stably without any complaints. Looking ahead, the most significant update is that WSL now has the capability to run graphical environments and other GUI applications, including Unity and Xfce desktops, which was not possible in previous Windows 10 builds. Although this feature was implemented unofficially by Linux enthusiasts rather than WSL developers, there is hope that official support for running a full Linux GUI in WSL is only a matter of time.

Unity running on Windows 10. And it
Unity running on Windows 10. And it’s not an emulator

warning

Remember, you need to install WSL first; it won’t work straight out of the box.

WSL: Six Months Later

As I mentioned earlier, in the past six months, the developers of the Windows Subsystem for Linux (WSL) have substantially improved the subsystem, making its installation and configuration easier. Additionally, Microsoft has become a “platinum” member of the Linux Foundation. Fifteen years ago, such a scenario would have been unimaginable. In this new role, Microsoft has committed to supporting all Linux Foundation initiatives related to open-source software and Linux, and will donate $500,000 annually to the foundation. This is undoubtedly a significant achievement, especially for the entire FOSS (free/open-source software) community. Fifteen years after Steve Ballmer infamously labeled Linux a cancer, Microsoft’s new leadership has proven to be far more forward-thinking and sensible.

Now, back to the Windows Subsystem for Linux. Installing Windows 10 itself is quick and straightforward (almost like installing Ubuntu), so there’s no need to elaborate for our reader. You can choose to upgrade from a previous version of Windows 10, which will take considerably more time and effort, or remove the previous version and install the system from scratch (which is what I did, not out of laziness, but to ensure the system was, so to speak, pristine). The author of these lines has been a Windows 10 beta tester for over a year, and he can access new versions for free. If you’re also a beta tester, then you should have a license for the new beta releases of Windows 10.

In the latest version of Windows, Anniversary Update 1607—it’s called the “anniversary update,” though it’s unclear what anniversary Microsoft is celebrating—WSL is enabled by default. You just need to activate “Developer Mode” in the “Update & Security” section, wait for the system to download the so-called developer package, and then restart the computer. After that, run the “Turn Windows features on or off” tool, where you select “Windows Subsystem for Linux…”. And then restart the computer once more.

In the Russian version of Windows 10, things are slightly different, but the overall idea remains the same
In the Russian version of Windows 10, things are slightly different, but the overall idea remains the same

Installing Bash on WSL goes smoothly, albeit a bit slower than one might hope. Initially, I ran into issues when trying to install Unity; the installer kept complaining about corrupted packages. It turns out, the system first needed to be updated using Ubuntu’s built-in package manager, APT. After getting the updates, the installation proceeded without a hitch and… took about nine and a half hours on my test Dell Inspiron (not the oldest laptop, but not high-end either). Why it took so long remains a mystery to me. However, I noticed that each Ubuntu package took three to four times longer to install than on a “clean” Ubuntu system.

Installing bash boils down to a single command in the Windows 10 console
Installing bash boils down to a single command in the Windows 10 console

Before installing and enabling WSL, make sure to install ALL Windows 10 updates. Otherwise, you might encounter issues!

X Window, Unity, and Everything Else

Installing bash is just the beginning. What follows is even more intriguing—setting up and configuring an X server on Windows to run graphical applications, including Unity.

Initially, Canonical and Microsoft added the ability to run Ubuntu on top of Windows 10 to provide system administrators and developers with access to bash and other Linux tools and utilities like make, gawk, and grep directly within Windows. True to their hacker spirit (in a positive sense), Linux users didn’t take long to start working on running graphical desktop environments in WSL. And guess what? They succeeded. A Guatemalan programmer, known as Guerra24 on GitHub, managed to (quote) “run Unity (the default desktop environment in Ubuntu) within WSL. This demonstrates that Microsoft’s layer is quite capable of running any desktop environment.”

This task is non-trivial, and the result may be hard to call a fully functional Linux desktop, but it’s just the beginning. If you want to use the Ubuntu desktop in Windows 10 for practical purposes, it’s better to use any of the currently available virtual machines, such as Oracle’s VirtualBox. However, if you’re looking to have some fun and develop your programming skills for desktops, you can try running “native” Linux directly in Windows 10. To run Unity in WSL, you first need to install (using any available method, preferably legal!) Windows 10 Anniversary Update version 1607. It should be at least the “Professional” version, or even “Enterprise” rather than “Home.” After installation, be sure to update the system and then proceed.

After two (sometimes three) reboots during the update process, to install bash, you need to open the Windows command prompt (press Win + R, type cmd, and you’ll have the Windows “console”) and enter… yes, that’s right: bash. You’ll be prompted to agree to the terms of service (make sure to accept them, you don’t really have a choice!) and download Ubuntu. At this stage, you just need to press Y. The download size will be slightly more than one gigabyte. So, if you have a slow internet connection (yes, that can happen), be prepared to wait. Then, the installation will begin, which will also take some time, depending on your computer’s performance. After all this, you’ll be greeted with the Ubuntu 14.04 user environment running on top of WSL (Windows Subsystem for Linux).

Technically, you’re not running Linux. It may look like Linux, but it isn’t. The user environment (such as bash and others) doesn’t run on top of the Linux kernel but within the WSL layer. WSL uses a special API and set of instructions to replicate a Linux-like experience, but it’s still not the same. At its core, it’s powered by the Windows NT kernel. This distinction is important to understand how Unity operates within WSL.

After installing Ubuntu, make sure to update it by entering the usual commands:

# apt-get update
# apt-get upgrade
VcXsrv - An X server for Windows
VcXsrv – An X server for Windows

Next, you need to return to Windows 10 and install an X-server compatible with it. For our experiment, VcXsrv is perfect. It’s better not to use its counterpart, Xming, because for some unknown reason, it causes an issue: any attempt to launch a graphical application for Linux results in crashes, including the Windows console. But there’s more to do. You need to inform Ubuntu to use the VcXsrv X-server specifically. To do this, enter the following command in bash:

# DISPLAY =: 0.0

Now, any Linux graphical application can run on Windows 10. However, it will only work until the bash session is closed. To keep WSL continuously compatible with Linux graphics by automatically selecting the necessary X server, simply add the specified line to the end of the bash configuration file (~/.bashrc):

# echo "export DISPLAY=:0.0" >> ~/.bashrc
VcXsrv running X-clock on Windows. It
VcXsrv running X-clock on Windows. It’s like magic!
Firefox for Ubuntu runs smoothly with minimal lag!
Firefox for Ubuntu runs smoothly with minimal lag!

After this, you will be able to run any Linux graphical applications, such as Firefox or any desktop environment. However, they won’t operate as smoothly as they do on Linux, often crashing, and some, like Unity, won’t launch at all. The issue is that WSL lacks support for sockets, which are a universal concept for inter-process communication in UNIX-like systems.

For implementing socket concepts, Linux graphical environments by default use the D-bus messaging system. Most Linux graphical applications can’t even start without D-bus, let alone function. However, WSL fortunately supports the TCP network protocol, which inspired a Reddit user named ShaRose to find a way to make D-bus use TCP instead of sockets. The solution isn’t perfect, but it does work. To connect D-bus with TCP, enter the following in bash:

# sed -i 's/<listen>.*</listen>/<listen>tcp:host=localhost,port=0</listen>/' /etc/dbus-1/session.conf
The key point is to set the display correctly!
The key point is to set the display correctly!

With this command, you will modify the D-bus configuration file so that it uses TCP instead of sockets. The trusty stream editor sed will assist you in this task. What’s the result? Applications that require D-bus to operate will now run on WSL.

The next step is to install Linux graphical applications. Start by doing this in the WSL console:

# apt-get install ubuntu-desktop
# apt-get install unity
# apt-get install compiz-core
# apt-get install compizconfig-settings-manager
Long installation process for Unity..
Long installation process for Unity..

The first command will install the core graphical components of Ubuntu, including user-end applications like LibreOffice. The next command sets up the Unity desktop environment. The remaining two commands will install the Compiz compositing window manager, which uses OpenGL, and its graphical frontend. Properly configuring this will be the next step.

Before you start using the Unity desktop environment on Windows 10, you need to properly configure the CompizConfig Settings Manager (CCSM). After installing all these applications, launch CCSM from the bash interface and activate the following plugins (everything should be EXACTLY as shown in the screenshot!):

Compiz Settings
Compiz Settings

In the General section:
– Commands
– Composite
– Copy to texture
– OpenGL

In the Desktop section:
– Ubuntu Unity Plugin

In the Utility section:
– Compiz Library Toolbox

In the Window Management section:
– Place Windows
– Resize Window
– Scale
– Snapping Windows

In the Image Loading section:
– PNG

Next, to finally get everything working, close CCSM and run Compiz from the bash terminal with the command

$ compiz

In about a minute, you’ll see the Unity shell running.

Unity in all its glory
Unity in all its glory

Let me highlight a few key points:

  1. If you truly want to run X applications in WSL (Windows Subsystem for Linux), install VcXsrv as your X-server instead of Xming. It has been proven through experience that Xming does not work well with WSL.

  2. After installing CCSM, you must configure it exactly as shown in the image (enable the options with checkmarks and disable all others). Only then will Unity reluctantly start, not on the first try, but it will eventually work.

  3. It’s better not to install ATI proprietary drivers for Ubuntu within WSL. Doing so can lead to a complete system freeze (including Windows 10) and necessitates a full reinstallation of WSL with all that implies.

  4. I hate to disappoint you, but you shouldn’t expect too much from this workaround. It will not work perfectly. However, on my test machine, Unity ran within WSL quite decently. Subjectively, it was a bit slower than on native Linux. Perhaps, in the future, someone will improve this, and Unity in WSL will become more beneficial.

So, what is the end result after all these efforts? In the end (theoretically, since in practice it’s still more of an interesting experimental way of running Unity and other DEs inside WSL), you get an environment for testing Linux applications right within Windows, and Unity running on top of Windows. Of course, the performance and responsiveness aren’t on par with what you’d get on actual hardware, but it’s faster than using a virtual machine. Many applications, like Google Chrome or Pidgin, simply won’t start. However, Firefox, the file manager, the app store, and other Ubuntu system utilities work quite well (though slightly slower than on “real” Ubuntu, they do work!).

Be aware: WSL can only be installed on Windows 10 Professional and Enterprise editions. The Home edition is not supported.

A Tale of Love and Hate

Microsoft has long had a complex relationship with Linux specifically, and the world of FOSS (Free and Open Source Software) in general. Historically, this sentiment was not particularly warm. It traces back to Bill Gates’ famous “Open Letter to Hobbyists” written in 1976 (details on Wikipedia). In this letter, Gates accused personal computer users—who, in those early days, were often users, programmers, and hackers alike—of practically stealing his intellectual property (specifically, BASIC). This tension continued with Steve Ballmer’s harsh remarks in 2001 regarding Linux, stating: “Linux is a cancer that attaches itself in an intellectual property sense to everything it touches. According to the licensing rules, if you use any open-source software components, you have to open source your entire software.”

Fifteen years later, however, Steve softened his stance: in March 2016, the former CEO of Microsoft stated that he was pleased to see that the new head of the company, Satya Nadella, had made the decision to more actively support the open-source developer community. He “enjoyed” watching the announcement of MS SQL Server for Linux. This significant shift by the former software industry giant is largely due to the efforts of the FOSS community—the thousands of programmers, designers, maintainers, FOSS activists, and passionate individuals who have been diligently working for years like water wearing away stone.

Back in the mid-2000s, Microsoft began to change its stance on FOSS (Free and Open Source Software). And this shift wasn’t just talk—it was backed by actions. Not so long ago, Microsoft achieved “platinum” membership status in the Linux Foundation, the leading organization overseeing Linux development, and expressed commitment to the principles of the FOSS community. The existence of WSL (Windows Subsystem for Linux) further validates this change. After a little over forty years, we’re witnessing former fierce adversaries—both ideologically and otherwise—working side by side, trying to make the world better. Or at least attempting to do so.

Fifteen years later, Steve Ballmer essentially admitted he was wrong
Fifteen years later, Steve Ballmer essentially admitted he was wrong
Bill Gates
Bill Gates’ famous letter advocating for copyright

The pinnacle of this symbiosis can currently be considered the Windows Subsystem for Linux. Yes, this layer is still far from perfect, but the direction is right for both parties.

“Give It a Chance!”

“Give Windows Subsystem for Linux a chance, and you’ll be amazed,” say the folks at Microsoft. Microsoft has finally acknowledged the potential of the FOSS world in general and Linux in particular. Each event serves as a lesson for Microsoft, allowing them to assess their capabilities and expand their activities in this area of programming.

Recently, on November 16 of last year, a post appeared on Microsoft’s developer site featuring a video titled “Improvements in Bash on Windows and the Windows Console.” In this video, senior Microsoft programmer Rich Turner encourages Linux developers to explore what Windows 10 has to offer. “Install a Windows 10 Insider Preview Build, run your code, use your familiar tools, host your sites on Apache, and access your MySQL databases directly from your Java code,” says Turner.

Rich Turner representing the new, developer-friendly face of Microsoft
Rich Turner representing the new, developer-friendly face of Microsoft

Turner emphasized that WSL was specifically created for developers to provide them with all the necessary Linux development tools. According to him, this is achieved without losing the innovations and advantages of Windows 10. “Regardless of which tools you typically use in Linux for application development, whether it’s Go, Erlang, or C, give WSL a chance. Most importantly, send us bug reports. These reports truly make our lives much easier, allowing us to create a product that we can all use to work more productively,” he added.

Microsoft is naturally interested in improving WSL, and Turner claims that the ultimate goal is to make this subsystem fully compatible with all Linux development tools. According to them, anyone transitioning to Windows 10 should feel just as comfortable as they do on Linux. This, in turn, will bring Microsoft an influx of new users. “We are only at the very beginning. We have a long way to go. At this moment, you can’t say that this thing is truly fully compatible with Linux tools and ready for full adoption by users,” he said. This statement came as a surprise to many. However, as previously mentioned, Satya Nadella, the current head of the software giant, is taking a different approach towards FOSS and Linux, viewing open and free software as a source of revenue and new opportunities.

I would like to point out that in his speech, Rich Turner does not urge developers to abandon Linux or downplay its advantages; he simply asks them to give WSL a chance.

Current Developments

What’s important to mention in relation to all of this? First, Microsoft is not the same as it used to be. It’s no longer the monstrous corporation of evil. Each year, the company’s profits from software sales decline, and the mobile device market has essentially been handed over to Google and Apple. Users, both corporate and personal, are increasingly looking to save on software purchases. Consequently, the company has had to adapt to new conditions. Even Microsoft’s “frenemy” Apple is opening the source code of its products one by one. Secondly, all of this is very positive. Especially for us, the everyday users.

In the upcoming article on Windows Subsystem for Linux (WSL), we will conduct several performance tests and finally put WSL into practice by installing an Apache web server and running a local website hosting. For now, we can sum up that the experiment was a success.

Related posts:
2022.12.15 — What Challenges To Overcome with the Help of Automated e2e Testing?

This is an external third-party advertising publication. Every good developer will tell you that software development is a complex task. It's a tricky process requiring…

Full article →
2023.01.22 — Top 5 Ways to Use a VPN for Enhanced Online Privacy and Security

This is an external third-party advertising publication. In this period when technology is at its highest level, the importance of privacy and security has grown like never…

Full article →
2022.06.02 — Blindfold game. Manage your Android smartphone via ABD

One day I encountered a technical issue: I had to put a phone connected to a single-board Raspberry Pi computer into the USB-tethering mode on boot. To do this,…

Full article →
2022.06.01 — First contact. Attacks on chip-based cards

Virtually all modern bank cards are equipped with a special chip that stores data required to make payments. This article discusses fraud techniques used…

Full article →
2022.02.16 — Timeline of everything. Collecting system events with Plaso

As you are likely aware, forensic analysis tools quickly become obsolete, while hackers continuously invent new techniques enabling them to cover tracks! As…

Full article →
2022.02.09 — Dangerous developments: An overview of vulnerabilities in coding services

Development and workflow management tools represent an entire class of programs whose vulnerabilities and misconfigs can turn into a real trouble for a company using such software. For…

Full article →
2023.03.03 — Nightmare Spoofing. Evil Twin attack over dynamic routing

Attacks on dynamic routing domains can wreak havoc on the network since they disrupt the routing process. In this article, I am going to present my own…

Full article →
2022.01.12 — First contact. Attacks against contactless cards

Contactless payment cards are very convenient: you just tap the terminal with your card, and a few seconds later, your phone rings indicating that…

Full article →
2023.07.07 — VERY bad flash drive. BadUSB attack in detail

BadUSB attacks are efficient and deadly. This article explains how to deliver such an attack, describes in detail the preparation of a malicious flash drive required for it,…

Full article →
2022.06.03 — Vulnerable Java. Hacking Java bytecode encryption

Java code is not as simple as it seems. At first glance, hacking a Java app looks like an easy task due to a large number of available…

Full article →