Tech

Seamlessly Run Windows Apps on Your Linux Desktop With WinApps


The inability to easily run popular Windows apps on Linux has long been a barrier to the widespread adoption of Linux. While most apps will run with Wine or in a VirtualBox virtual machine, these solutions are kludgy, inelegant, and can require a great deal of fiddling and configuration.


With WinApps, you can easily manage and run Windows software on Linux, and even integrate it into your system and context menus.


Why Run Windows Software on Linux?

Open-source software is great, but not everybody thinks so. In business, Microsoft Office is the dominant paradigm, having made its first appearance in 1990, a year prior to the first Linux kernel release. No matter how much you love LibreOffice, sometimes, you just need to use what everyone else is using.

Likewise, graphic design and photography professionals use Adobe Photoshop, and clients expect their products to be created using Photoshop, not Adobe product alternatives for Linux like GIMP.

Wine (Wine is not an emulator) is a compatibility layer capable of running Windows applications on Linux distros. It works well with a lot of Windows software but is finicky to set up, and while third-party apps such as PlayOnLinux make configuration easier, it’s still not ideal.

The other way to use Windows apps on Linux is to set up a virtual machine using VirtualBox and a licensed copy of Windows. This isn’t ideal either, as you actually have to boot the VM just to use one particular app.

WinApps for Linux Makes It Easy to Run Windows Apps

There’s nothing wrong with running virtual machines to use Windows apps, but sometimes you don’t want to load an entire operating system just to send an email using Microsoft Outlook. And if for some reason, you want to use Microsoft Outlook as your default mail app, there’s no easy way of activating it inside the VM when you click a “mailto” link using a browser on your host machine.

WinApps for Linux uses Remote Desktop Protocol (RDP), and allows you to treat Windows apps as if they were a part of your own Linux distro. This includes adding them to your start menu and integration for handling MIME types.

You will still be using a VM, but running apps on your Linux desktop will be seamless with your virtual machine acting as a subsystem for WinApps. Once it’s installed, you never have to look at the Windows desktop again. While using WinApps is simple, getting it onto your system may take some time.

Set Up Your VM Before Installing WinApps

Before you install WinApps for Linux, you need to have a KVM virtual machine running Windows. The easiest way to do this is to install Virtual Machine Manager.

sudo apt-get install virt-manager

…and add your user to the libvirt group:

sudo usermod -aG libvirt username

Download the KVM VirtIO drivers ISO using:

wget https:

Start Virtual Machine Manager, then from the menu, select Edit then Preferences. Check the box marked Enable XML editing.

virtmanager enable xml editing dialog

Close the dialog, then click on the icon to “Create a new virtual machine”.

Choose Local media install, then select your ISO and walk through the wizard. The only value you need to change is the machine name, which needs to be called “RDPWindows” so that WinApps can detect it, and make sure you check the “Customise configuration before install” box.

create new VM dialog

After you click Finish, you will need to do additional configuration before installing Windows:

You’re now ready to begin installing Windows, so hit the Begin Installation button.

The installation will proceed as it would on any other device until it asks you, “Where do you want to install Windows?” There are no locations available because Windows doesn’t come with a driver for your virtual machine.

Windows 10 driver selection

Click Load Driver, then Browse. The virtio-win ISO file will be mounted as a drive, so select it, navigate to AMD64 > w10, and then choose the w10 driver.

The driver will install, and you can continue the grueling Windows setup process as normal.

As you answer questions about your first pet’s name and where you were born, before you decline to turn on device history, refuse to allow Windows access to your location or that of your phone, become enraged that you can’t turn off all telemetry, turn down the kind offer of keylogging, and rebuff the opportunity to have personalized ads, you’ll remember why it is that you use Linux.

Eventually, you’ll make it to the desktop. Open File Explorer and locate the virtio-win ISO, which should be mounted as a drive. Open it, then double-click virt-win-gt-64.exe, and click through the wizard. Windows will want to “finish setting up your device”. Click Remind me later to ignore the sales pitches, then click Finish on the virtio-win wizard.

Open Microsoft Edge for the first and last time, and paste https://github.com/Fmstrat/winapps/blob/main/install/RDPApps.reg into the address bar to see some registry entries you need to add.

Right-click on Raw above the code snippet, then choose Save target as. Download it to the location of your choice, right-click the file in File Explorer, and choose Merge.

You gave the VM a name earlier, and now you need to change the name by which Windows knows it.

Click in the search box and type “Device Specifications”. In the new window, scroll until you see Rename this PC. Click on the button, then rename the machine as “RDPWindows”. Click Next then Restart Later.

Finally, locate Remote Desktop in the sidebar, and toggle the button to On.

You can now install Windows apps such as Microsoft Office, Adobe Photoshop, and more.

When you’re happy with your suite of tools on Windows, restart the machine, but don’t log in. Close the viewer and Virtual Machine Manager.

How to Install WinApps for Linux

To connect with your virtual machine, you will need to install FreeRDP and WinApps for Linux.

sudo apt-get install -y freerdp2-x11
git clone https:

Create a new directory for your WinApps config in your .config directory:

mkdir ~/.config/winapps

…and use nano to create the config file itself:

nano ~/.config/winapps/winapps.conf

In the new file, add your Windows username and password:

RDP_USER="David"
RDP_PASS="SuperSecretPassword"

Save and exit nano with Ctrl + O then Ctrl + X.

Move into the WinApps directory, and test that the connection to your Windows VM is working:

bin/winapps check
Terminal output of RDP certificate mismatch

You will receive a certificate mismatch warning. Enter Y to accept the certificate. Windows desktop will pop up as a full-screen app. Return to the terminal, and cancel the process with Ctrl + C.

You can now run the WinApps installer:

./installer.sh

The installer will ask whether you like to install it for the current user or the whole system, and will then check the apps installed in your Windows VM. This process takes several minutes to complete.

Next, choose how you would like to handle WinApps’s pre-configured and other applications.

winapps on linux including word 97 and Paint 3D - with a bad picture of a cat

That’s it! You can now access your Windows apps from your Linux desktop and context menus without having to start a complete Windows desktop or deal with Wine.

Windows Has Open-Source Apps Too!

By using WinApps to run Windows apps on your Linux desktop, you have access to all the proprietary software you need for business, education, and creativity. But Windows has open-source software too, and with a little effort, you can run open-source software for Windows on your open-source Linux distro!

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button