Is there a bulletproof way of running Windows apps on Linux?

Electric_Pulse

New Member
Joined
Aug 22, 2021
Messages
7
Reaction score
0
Credits
86
For me, one of the biggest problems with Linux was software compatibility. Yes, there are many open-source Linux-compatible alternatives to most apps out there, but re-learning tools is probably the last thing I want to deal with in my workflow. From my research wine seems to be far from perfect and there doesn't seem to be any other solid alternative (correct me if I am wrong ofc). Even tho Windows emulation is pretty hard since Windows isn't open-source, I do wonder if there is a more general approach to porting software to Linux from Windows even at the sacrifice of performance. What has been your experience with wine, are there any solid alternatives you have found, is there a general approach to porting Windows apps?
 


Nothing is bulletproof. If you aren't willing to find/learn Linux native alternatives to what you are now using there is no point in switching to Linux. Applications that run native are the best option, running applications through wine you won't get native performance and not all applications will work using wine so you might as well stick to Windows, since you will get native performance using those applications there. When switching to Linux you find native alternatives for those that don't have a native alternative wine might be an option and in some extreme cases you could run a virtual system that runs Windows on top of Linux and run those applications there.
 
Last edited:
Running windows only applications in Linux is extremely hit and miss.

Many applications we use in Linux are truly cross-platform and will work on windows and various other platforms too. So if you want to keep a consistent workflow across all platforms you use, you’ll need to find and use the same set of programs. Which will mean dropping some windows only applications in favor of something else and adjusting your workflow accordingly.

If there are any windows only applications that you absolutely cannot live without and they don’t run satisfactorily (if at all) - then you have several options available to you.

You could set up a dual boot system, so you can still boot to windows whenever you need to.
Or perhaps install Linux and use a windows virtual machine when you need to.
Or, if you find yourself using windows more - install windows and run Linux in a VM when you need it. That way you can still use your windows only programs and get native, or near native performance.

But if you plan to switch to Linux full time, then it would almost certainly be better to try to find some free/libre/open source alternatives and to adjust your workflow a little.
 
Last edited:
I've just noticed the part WRT porting applications.
When it comes to porting applications, or converting the source code for windows only applications to allow them to be built and ran on other platforms:

1. Pick a standard version of the programming language being used and stick to its standard library wherever possible. Without using platform-specific, or compiler/interpreter specific extensions.

2. Use portable, cross-platform libraries to provide additional functionality.
e.g. for C++ applications, things like boost, for extending the usefulness of the std::library in a platform agnostic way. Or using cross platform graphical toolkits/application frameworks like QT, or wxWidgets. (Porting Windows MFC applications to wxWidgets or QT is relatively painless!).
Or using OpenGL and/or Vulkan for low-level graphics code instead of DirectX.
Or if you're a masochist, you could use a dual approach and use DirectX as a graphical backend for Windows builds and OpenGL/Vulkan for other platforms.

3. Where platform-specific code cannot be avoided, use things like conditional compilation (in C, or C++) to cleanly separate the platform-specific code from the general, cross-platform code. That way the compiler will add, or exclude platform specific code at build time, depending on the platform that is being targeted in the current build.

There may be a few other considerations, but on the whole - stick to those guidelines and you should be able to build and run your applications on Windows, Linux, Mac and any other platforms that might be supported by the tools/libraries you're using to build with.
And with C/C++ - if you set up a cross-compiler environment, you can even create binaries for other platforms from within Linux. So with a cross-compiler - you could build Linux and Windows binaries on Linux, from the same code-base.

And if you use an interpreted language for your applications, like Python, or Ruby - or some other scripting language - you can simply run your application on any platform that has an appropriate interpreter installed. And again, most of points 1 and 2 still apply! Pick a standard version of the language and stick to it. And use cross platform libraries for those languages, in order to help to provide additional functionality.
 
Mira esto, te puede interesar, aunque es algo caro y no es lo ideal desde mi punto de vista, pero para un profesional es viable.

 
Last edited:
@juankurrea welcome to linux.org :)

Mira esto, te puede interesar, aunque es algo caro y no es lo ideal desde mi punto de vista, pero para un profesional es viable.

translates from Spanish to English as follows

"Take a look at this, it might interest you, although it is a bit expensive and not ideal from my point of view, but for a professional it is feasible."

The Original Poster (OP) is 14 (mouse over his avatar) and may not be seeking a professional solution.

This forum only supports English, so please post your input in English.

There is Google Translate, or else a number of us are finding DeepL Translator to be more accurate, and it allows for more text to be pasted.

https://www.deepl.com/en/translator

Thanks

Chris Turner
wizardfromoz

Welcome too, @Electric_Pulse :)
 
I am seeking a solution that works no matter if its professional or not, but thanks for the input;).
 
There is no bullet proof way to run windows programs. Not even on windows :D
But for what small windows programs I do run I use wine or try to find appimages of them.

I like others think you would be further ahead if you want to use Linux to use equivalent Software that is linux native. IE Libre Office instead of MS Office. There is a learning curve but once you learned it it will work well for many years. It's the price you must pay. You can either pay MS or Learn new ways. You must choose what is most important to you. Good luck in finding the way.
 


Top