Do you want to use Linux but feel worried that your favorite apps won’t work? Well, you’re not alone, as Linux’s app gap is one of the biggest concerns for new users. Thankfully, it’s a solvable problem. Here’s how I get all the software I need on Linux.

I started out as a Windows user with my first PC running Windows XP. When I started makingmy transition to Linux, the biggest hurdle I faced was not being able to run the same apps and tools I ran on my Windows system. At first, it was a huge problem—I used a dual boot setup where I did all my work on Windows and booted into Linux for experimentation. But now, I rarely need Windows as I’ve fully migrated my entire workflow to Linux. Here’s how I bridged the app gap and made the transition possible!

Running Adobe Photoshop CC 2015 on Debian Linux via Wine.

5Trying Proton and Wine

The majority of Windows apps that I need to run on Linux aren’t actually apps but games. This is whereProtoncomes in—a compatibility layer that lets you run most Windows games on Linux. It’s built into Steam and is actually the technology that allows you to play Windows games on the Steam Deck, which runs on Linux, by the way. You can also use Proton toplay non-Steam gamesby adding those titles to your Steam library and enabling Proton for them.

That said, not all games will work through Proton, but a healthy selection of titles do, including AAA titles and new releases. You can useProtonDBto check out all the games that’ll work through Proton, ones that require some minor tinkering, and the few that are still incompatible.

Creating a YouTube Music desktop app on Linux using Nativefier.

Now, Proton is built on top of theWine compatibility layerwith special optimizations to run Windows games. If you just want to run simple Windows apps, you can default to using Wine instead. Similar to Proton, it’s not a perfect solution and not all Windows apps will run through Wine. You can useWineHQto check the compatibility status with the Windows app you want to use on Linux.

As a rule of thumb, most older apps from the Windows 7 and early Windows 10 eras tend to work best with Wine. For example,Microsoft Office 2013andPhotoshop CS6deliver near-native performance on Linux using Wine. However, more recent versions like the Office 365 or Adobe Creative Cloud apps will almost certainly run into issues with no easy fix—if any at all.

Running Windows 11 using Virtual Box on Linux.

Now, if you end up running Windows apps through Wine, I recommend usingBottles—a visual wrapper for Wine to help you organize all your Windows apps. It lets you create and manage separate Wine environments for each app, so one program’s settings or dependencies don’t break another’s.

4Using Web Apps and Turning Them Into Native Apps

If I can’t run an app using Wine or Proton, my next move is almost always to try the web app version. Most services now have a solid web version that runs fine in a browser. For example, you may access Slack, Trello, Asana, WhatsApp, Zoom, and many more apps directly from your browser and expect the same functionality as from its desktop app version.

In fact, there are more apps with a dedicated web version than ones without. Even professionally used apps likeMicrosoft OfficeandAdobe Photoshopnow have dedicated web versions, albeit a stripped down one with some functions missing.

Dual Booting with Garuda and Windows.

That said, I do acknowledge that keeping a web app open in a browser tab isn’t the same as having a real desktop app. You lose out on things like an app icon in your launcher or panel, an isolated app window, and ease of multitasking. Also, closing your browser by accident means closing everything else.

While most modern browsers allow you to solve this problem byinstalling websites as apps, I personally findNativefier a better solution. It uses Electron to create a truly isolated browser environment (based onChromium) for a web app, providing native app-like features, notifications, and taskbar icon support.

For context, with just three commands, you can install Nativefier and turn YouTube Music into a web app on your Ubuntu PC:

Every web app turned native app is basically its own browser instance, so running lots of apps this way can eat up your RAM—similar to how opening a bunch of browser tabs will affect your computer’s memory.

3Finding Linux Native Alternatives

If an app only exists as a desktop app without a web version, and I can’t get it to work using Wine or Proton, I will try to find a free and open source (FOSS) alternative. I admit switching away from what you’re familiar with can feel daunting, but the transition generally gets easier after the first few days. For example, I grew up with Windows and Microsoft apps, but now I useopen-source tools for almost everythingon Linux.

In fact, the real challenge isn’t adapting to the new app, butdiscoveringa Linux-native alternative that you like. While there are literally thousands of awesome open source apps out there, they lack a dedicated marketing budget (a consequence of being free) and only a handful of apps get widely recommended, resulting in an apparent lack of options.

Thankfully, there are platforms likeAlternativeTo.net—a crowd-sourced app recommendation site, where you can see all potential alternatives for the app you want to replace. I personally use AlternativeTo to first find a Linux-supported alternative for an app I want to use, and then go to YouTube to look up a few reviews of that app. This is to get an idea about how the app’s interface looks and the feature availability. If I like what I see, I install and use it!

2Virtualizing Windows for Specific Apps

On rare and very specific occasions, I need to use a particular app where no alternative will cut it, there’s no web version, and it doesn’t work with Wine or Proton. In those situations, I end up virtualizing Windows to run that app. This way, I literally have a Windows instance running inside my Linux PC, and I can run any Windows app on it, without fearing compatibility issues.

Virtualizing Windows might seem like the best and most efficient option, making the above methods redundant, but it’s not! It’s an extremely resource-intensive process, where you’re essentially running two operating systems at the same time. A virtual machine running Windows 11 would require at least 8 GB of RAM, 4-6 CPU cores, and 100 GB of disk space for a smooth user experience. This means your main system needs to have around 12-16 GB of RAM, an 8-12 core CPU, and 500 GB of disk space to run Linux and virtualize Windows at the same time.

That said, as long as you have and can allocate the necessary hardware resources, a virtualized Windows session should work and allow you to run all the apps you need. Of course, if that particular app needs better hardware, you’ll need to allocate more to the virtual machine for it to work. See our guide onrunning Windows 11 in a virtual machineto help you get started.

1Dual Booting When All Else Fails

Finally, there will be a situation where I want to use a Windows app, but it’s not natively supported on Linux, doesn’t work well with Wine or Proton, lacks a dedicated web version, no Linux-native alternative comes close, and my system isn’t beefy enough to virtualize a Windows instance with the necessary hardware. In this specific circumstance, I generally resort to dual booting!

As you can guess, the big upside of dual booting is the performance—your whole system is dedicated to one specific OS, so you get maximum speed and hardware compatibility. However, the main downside is creating friction in your workflow. Shutting down one OS to switch to another is annoying, especially if switching between the environments is important for what you are doing.

Now, I personally use a dual boot system running Windows 11 alongsideGaruda Linux. I do most of my work (and play) on my Linux system, and boot into the Windows 11 partition only to playEA Sports FC 25with my friends. For context,FIFA 22is actually playable with Proton, but they want to play the latest game, so I’m stuck dual booting!

Many Windows apps are not supported on macOS, and vice versa, but we rarely call it an app gap. This is because an app is merely a tool, and as long as you have a tool to do the thing you want, even if it’s not the one you’re used to, your work will not be compromised! Now, modern Linux has a wealth of native apps to cover almost all basic computing needs. In the few areas where it lacks native support for a specific tool or tools you need, you’re able to follow my highlighted methods to solve that app gap!