How do I run Windows software on Linux?

How do I run Windows software on Linux?

Ready to take the plunge into Linux, but not quite ready to give up your favorite applications? There may be a solution.

Image credits : 
MartinHarry on Pixabay. CC0.

Subscribe now

Get the highlights in your inbox every week.

Do you run programs meant for other operating systems inside Linux?

So you're ready to make the jump to Linux, but you've still got a handful of programs you're just not quite ready to part with. Can you still run your Windows software on Linux?

The answer might be yes, but, with some caveats.

I want to draw an important distinction before we move on. It might seem obvious, but it bears repeating: Running a program on Linux does not magically make it open source, any more than running the program on Windows makes it closed source.

While in an ideal world we'd all only be running open source software on top of open source operating systems, that's not an option for many people today, and so bridging the gap between the open and the proprietary is an important step in bringing new users over toward a more open world.

And even when programs are free and open source, that doesn't mean that someone has taken the time to port them to your preferred operating system. Maybe the software is now years or even decades old, or maybe you want a specific feature that wasn't built-in to the version released for your OS.

Whatever your reason, if you're looking to bring your Windows program to Linux, you've got a few options. Here's how I'd approach it.

Finding the Linux version

When I finally dropped my last Windows partition for Linux, one of the things that eased the transition was that much of the open source software I had already been using for years was immediately available in my Linux distro. Programs like Blender, Inkscape, GIMP, LibreOffice, FileZilla, Calibre, Audacity, VLC, and many others had already been a part of my workflow on Windows. Many were installed by default, and others just took a quick search with my package manager to find. For those used to having to find, download, and manually install binaries in Windows, Linux made getting this software even easier than it had been before.

In addition to open source software, you'll find many of your not (yet) open favorites built for Linux as well, from Chrome to Slack to Skype. For gamers, Steam installs just fine and will provide you with many of the games you had access to on Windows with no additional effort. Not just indie games, but some of the top titles both old and new. Almost half the games in my Steam library now have a native Linux port.

In short, before you try to get the Windows version working, be sure you're not missing the native Linux application.

Choosing an alternative

An alternative to your Windows program isn't always a viable choice. If you're taking a course that revolves around how to use a particular application, or you need to be able to export into a particular proprietary format that only the original program can use, or there simply isn't a viable open source program providing the same functionality, sure, finding an alternative isn't going to be your best approach.

That said, I can't tell you how many times I've heard people insist they need a particular program, when in fact all they really mean is that they need a particular functionality. Sure, if you're new to computers hadn't ever used Firefox, you might think you need Internet Explorer to be able to browse the internet, but if you're willing to see what you're missing you just might be pleasantly surprised.

I also can't tell you how often someone says they need the most expensive, industry-leading, full-featured product to do a particular task. No, you probably didn't need AutoCAD to plan that tree house, nor Photoshop just to crop a few photos. Ask yourself what you really need to do.

Open source alternatives aren't about making a 1:1 clone of another application, at least not usually. They're about providing a similar solution to the same general problem. They're not necessarily better or worse, they're just different, and might take a little time to get used to.

Using Wine

Can't find a native version for Linux, and don't want to go with an alternative? The open source project Wine is your next stop. Wine is a recursive acronym for “Wine is not an emulator” although you might be forgiven for thinking it is. Wine provides a layer of abstraction that, to a Windows executable, makes your Linux system appear like a Windows machine by recreating many of the elements of a Windows system that your programs expect.

For a lot of applications, Wine works flawlessly; you'll be hard pressed to tell that the programs weren't designed to work natively on Linux, except for the Windows-styled window borders and widgets. And it's easy to install; chances are Wine is packaged for your Linux distribution and sitting in your default repositories, ready to install just like any other program.

And it's not just for stand-alone applications. You can use the default installer for many Windows programs, and they'll be properly installed and configured to run on your Linux machine.

For gaming, Wine can be finicky. Lots of games will work just fine with the default settings, but you may have to do a little tweaking to get things working perfectly. Fortunately, there's a large community out there to support you. You also might want to check out PlayOnLinux, based on Wine, which provides an easier interface to getting up and running with many games.

Running a virtual machine

Sometimes, a compatibility layer isn't enough. Virtualization allows you to run an entire Windows operating system, applications included, on top of your Linux operating system. Popular tools for desktop virtualization include VirtualBox, Boxes, and Virtual Machine Manager. For the latter, the virtualization is actually taking places with a lower-level program, often the KVM virtualization infrastructure built directly into your Linux kernel, but with a nice user interface.

The downside of this technique is that you'll still need a Windows license, and the speed won't be quite as close to running applications natively.

While virtualization can provide surprisingly good performance in a lot of applications, it tends to struggle with graphics-intensive applications. In particular, gaming on a virtual machine is going to be a pretty miserable experience unless you take the time to configure it correctly, which can be difficult. You're best off using a technique called VGA passthrough to pass control of your video card directly to the virtual machine, but setting it up is not a beginner's task. You'll want to read instructions carefully and probably ask for some help if you're new to Linux.

Dual booting

Can't get you application running in Wine? Does virtualization not offer the performance you need? You can always dual boot with Windows, and head back to your Windows partition now and again for specialized applications.

But personally, when I'm trying to help people make the move to Linux, I tend to encourage dual booting to be a method of last resort, rather than a first choice. Why? Frankly, it's just too easy to stay in Windows once you've jumped over for one task. If you're truly interested in learning to use Linux, it's best to fully commit to the switch rather than succumb to the temptation to do thing “the old way” every time you hit a speed bump.

Once you've been using Linux for a while, chances are you'll consider having to reboot to use Windows a hindrance. And besides, there's probably a way to do whatever you wanted to do in Linux anyway, perhaps more efficiently.

So how about you? Are you running Windows software occasionally on your Linux desktop? What tips and techniques do you have to offer?

About the author

Jason Baker - I use technology to make the world more open. Linux desktop enthusiast. Map/geospatial nerd. Raspberry Pi tinkerer. Data analysis and visualization geek. Occasional coder. Sysadmin. Web maker. Red Hatter since 2013.