Linux has come a long way, but you may still need to run Windows applications occasionally — especially Windows-only PC games. Luckily, there are quite a few ways to run Windows applications on Linux.
Of course, before you try to run an old Windows program, you should look or alternatives that run natively on Linux. You’ll have a better experience if you can find a decent alternative that runs without any fiddling.
Use Wine
Wine is a compatibility layer that allows Windows applications to run on Linux. It’s basically an implementation of the Windows API on Linux. Of course, Microsoft doesn’t publish all the information we need to re-implement the Windows API from scratch, so Wine has to be reverse-engineered. While it works amazingly well given how little Microsoft has given us to worth with, it’s nowhere near perfect.
To run an application in Wine, you can install Wine and use it to launch an installer’s .exe file. Before you do, you should take a look at the Wine Application Database website, which will tell you how well an application runs in Wine. Wine is frequently used for games, as games are the one type of software that can’t run in a virtual machine. While Wine can be used to run desktop applications like Photoshop and Microsoft Word, these will run flawlessly in a virtual machine (see below).
You can also try using an application like PlayOnLinux, which helps automate the process of installing supported games and other software in Wine.
The Netflix Desktop app uses a patched version of Wine to run Netflix on Linux — Silverlight doesn’t work properly with the current version of Wine.
Run Windows in a Virtual Machine
While Wine may have bugs or crashes when installing applications, a virtual machine will be able to run those desktop applications just fine. Install Windows in a virtual machine program like VirtualBox, VMware Player, or KVM and you’ll have Windows running in a window. You can install windows software in the virtual machine and run it on your Linux desktop.
Virtual machines introduce some overhead, but with today’s fast CPUs, running many types of software in a virtual machine shouldn’t be a problem. This is especially true after you’ve tweaked those virtual machines for speed. This doesn’t apply to games — virtual machines don’t have very good 3D graphics support, so all but the oldest games will fail to run.
To integrate the Windows applications with your desktop, you can use VirtualBox’s seamless mode or VMware’s Unity mode. The applications will still be running in a virtual machine, but their windows will appear seamlessly on your desktop, as if they were running on Linux.
Try CrossOver
If Wine seems like too much of a pain, you may want to try CrossOver Linux. CrossOver is a commercial product so it will cost you money, although CodeWeavers offer a free trial. CrossOver essentially takes the Wine software and packages it so that it’s guaranteed to work properly with popular applications like Photoshop, Office, and even popular games. CodeWeavers provides commercial support for these supported programs, so you have someone to turn to if something breaks.
This option isn’t for everyone — often you can run the same applications by using Wine — but if you’re just interested in running a few popular applications on your Linux desktop and paying someone else to do the tweaking for you, CrossOver may be your ticket. CrossOver also sends their patches back to the Wine project, so the money you pay helps fund open-source Wine development.
As with Wine, CrossOver won’t work perfectly with everything. Like with Wine, CodeWeavers has a compatibility database website.
Use a Remote Desktop
If you have access to a remote Windows system, you may want to try running your applications on the remote Windows system and using remote desktop on your Linux system to access them. The applications will be running remotely on a real Windows system, so they should work properly.
Many Linux desktops include software for accessing remote Windows desktops already. If not, you can install the rdesktop package.
When All Else Fails: Dual Boot
You can’t run every Windows program on Linux — when a big new PC game comes out, it will often be quite some time until it runs properly in Wine. While Steam on Linux and rumored Linux support from Blizzard may change this in the future, games are the one category of app that have the most issues on Linux — although many older games work perfectly.
Instead of giving up on Windows entirely, consider keeping it around in a dual-boot configuration. When you want to play a new game that doesn’t work properly on Linux, restart into your Windows system.
If you’re dual-booting, you can even access your Linux partitions from Windows so you’ll always have access to your files.