Table of contents


Introduction to Wine

Published on Jan 14, 2021 by: Ahmed Elsayed

 What is Wine

Wine is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, macOS, and BSD. Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop (desktop shortcuts, menu entries, and open-with entries).

Wine recently added support for ChromeOS, and Android.

 What is WineD3D

WineD3D is a compatibility layer capable of running Direct3d from version 1 to version 11 by translating Direct3d calls to OpenGL calls on-the-fly. WineD3D is a part of Wine.

Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render 3D graphics in applications where performance is important, such as games.

Wine developers have been working on adding Vulkan support to WineD3D, but it is not ready yet. DXVK can do that job right now, but it is not a part of Wine.

 What is DXVK

DXVK is a Vulkan-based translation layer for Direct3D 9/10/11 which allows running 3D applications on Linux using Wine. DXVK is not a part of Wine, it is a separated project founded by Philip Rebohle, and later Joshua Ashton joined him to offer support for Direct3D 9 which was not supported before by DXVK, and they are both are hired by Valve to work on Proton.

 What is VKD3D

VKD3D is a Vulkan-based translation layer for Direct3D 12 which is used by default on WINE, and Proton. It is founded by Józef Kucia, WINE developer, who passed away in 2019 at the young age of 30 in an accident, then the development continued by Hans-Kristian Arntzen who later joined by Valve developers Philip Rebohle, and Joshua Ashton.

 Wine Gecko

Wine implements its own version of Internet Explorer. The implementation is based on a custom version of Mozilla's Gecko Layout Engine.

After you run Wine for the first time, it will prompt you to download, and install the 32bit, and the 64bit of Wine Gecko if it is not intalled in the current wineprefix. Downloaded files can be found in this directory ~/.cache/wine

More information can be found in this link https://wiki.winehq.org/Gecko

 Wine Mono

Mono is an open-source and cross-platform implementation of the .NET Framework. Wine can use a Windows build of Mono to run .NET applications.

After you run Wine for the first time, it will prompt you to download, and install Wine Mono if it is not intalled in the current wineprefix. Downloaded files can be found in this directory ~/.cache/wine

 Microsoft .NET

If you need to use Microsoft's implementation of the .NET framework, the Microsoft runtimes can partly run on Wine.

You can install the appropriate version of Microsoft's .NET runtime (dotnet11, dotnet20, dotnet30, dotnet35, dotnet40, dotnet45, dotnet46, dotnet47, or dotnet4.8) through winetricks [link].

More information can be found in this link https://wiki.winehq.org/Mono

 FAudio

FAudio is an XAudio reimplementation that focuses solely on developing fully accurate DirectX Audio runtime libraries for the FNA project, including XAudio2, X3DAudio, XAPO, and XACT3.

FAudio became a part of Wine since Wine version 5.0, and when you install Wine 5.0, FAudio will be installed as a dependency to Wine.FAudio is a part of Proton as well, and it fixes a lot of sound issues that could only be fixed before by install Xact through winetricks [link].

 Nvidia PhysX

PhysX is a physics simulation library provided by NVIDIA which is used in some games. Wine supports this library since quite some time in the CPU fallback mode which means that all physic calculations are done on your CPU. On Windows PhysX also supports offloading of calculations to NVIDIA based graphic cards through CUDA. Starting with Wine Staging 1.7.34 the necessary features were added to provide the same possibility in Wine.

To use PhysX, you need first to install the PhysX software into the wineprefix containing the program requiring PhysX support.

You can verify that PhsysX is working properly using the PhysX FluidMark Benchmark. The software displays in the start dialog whether GPU acceleration is available. You can also compare the FPS between GPU and CPU based simulations by changing the GPU checkbox in the start dialog.

 wineprefix

Wine uses a virtual C: drive instead of your real C: drive. The directory in which this is located is called a wineprefix.

Wine creates a wineprefix inside ~/.wine after you run Wine for the first time, and Wine updates that wineprefix everytime a new Wine release is installed.

You can change the default location of Wine prefix using WINEPREFIX environment variable which will be explained in details later

  • Any file or folder precede by a dot is hidden, and you need to show hidden files using your File Manager to show these files.

  • This symbol ~ refers to the home directory.
  • This symbol / refers to the root directory which you installed your Linux distro into.

 The contents of wineprefix

The contents of wineprefix picture1

system.reg, user.reg, and userdef.reg are used to store registery settings.

dosdevices contains symlinks (shortcuts) to the mounted drives on your system

The contents of wineprefix picture2

c: points to the other folder inside Wine prefix drive_c

z: points to the root directory ( / ) that you used during the installation of your Linux distro.

The other letters are reserved to other drives that your Linux system may mount later like external hard drives, USB flash drives, and ISO images mounted on your system. Wine does not assign letters to the mounted drives inside your main hard-disk, but you can do that using winecfg if you want.

drive_c contains the same folders that you can found under the C drive  on any Windows operating system

The contents of wineprefix picture3

Program Files is used for installed 64bit applications. The path for this folder on Windows is:

C:\Program Files

Program Files (x86) is used for 32bit applications. The path for this folder on Windows is:

C:\Program Files (x86)

ProgramData is used for application data. The path for this folder on Windows is:

C:\ProgramData

users contains 2 directories: Public and another directory with the user name you used when installing your Linux distro.

The path on Wine The equivlant path on Windows
~/.wine/drive_c/users/[username]/AppData/LocalLow C:\Users\[username]\AppData\LocalLow
~/.wine/drive_c/users/[username]/Local Settings/Application Data C:\Users\[username]\AppData\Local
~/.wine/drive_c/users/[username]/Application Data C:\Users\[USERNAME]\AppData\Roaming
~/.wine/drive_c/users/[username]/Saved Games C:\Users\[USERNAME]\Saved Games
~/.wine/drive_c/users/[username]/My Documents C:\Users\[USERNAME]\My Documents
~/.wine/drive_c/users/Public/Documents C:\users\Public\Documents


  • [username] is the user name you used while installing your operating system.

  • All the paths mentioned in the previous table games use them to store their savegames, so you should backup them using your favourite backup software.

If you want to know more about wine check these tutorials: