Wine and Proton do not support Wayland yet. At least SDL2 and Dosbox are available with Wayland support, so they are used below (dosbox is replaced with dosbox-sdl2 and sdl1 is replaced with sdl2-compat12).
Wine misses any Wayland support at the moment, so playing games means you play e.g. DirectX trough OpenGL/Vulkan trough XWayland to the Wayland layer. Sounds not too good, even if XWayland should affect the performance only slightly. The status can be seen in the bug report https://bugs.winehq.org/show_bug.cgi?id=42284, sadly there is no activity at all at the moment.
Wine-Wayland (https://github.com/varmd/wine-wayland) is developed by a Wine independent developer with a focus on Vulkan. There is no OpenGL support.
Proton (license BSD, https://github.com/ValveSoftware/Proton/) is an improved Wine version developed by Valve with additional patches from Wine-Staging, DXVK, FAudio, esync, … integrated to Steam named Steam Play so that all Windows only games can be played usually with one click on the play button. But you can install Proton standalone (wine-valve) as a replacement for Wine (replaced by wine-valve), just run:
yay vkd3d-git yay lib32-vkd3d-git yay proton-git pacman -Sy wine_gecko wine-mono faudio lib32-faudio lib32-libpulse lib32-mpg123 lib32-gnutls lib32-libldap opencl-icd-loader lib32-v4l-utils lib32-opencl-icd-loader lib32-libxslt lib32-gst-plugins-base-libs lib32-libcanberra-pulse lib32-openal lib32-giflib lib32-libva samba yay -aS sdl2_compat12-git yay -aS --noconfirm lib32-sdl2_compat12-git yay dosbox-sdl2
Wine 5.6 (https://www.winehq.org) maps the Windows API to Linux so that you are able to run Windows applications and especially games on Linux (this doesn’t require a Windows license). To install Wine and it’s recommended base dependencies (see Arch Linux wiki https://wiki.archlinux.org/index.php/Wine) or just run the following command (minimum [green], recommended [blue] and optional [grey] packages of wine):
pacman -Sy wine wine_gecko wine-mono vkd3d faudio lib32-faudio lib32-vkd3d lib32-libpulse lib32-mpg123 lib32-gnutls lib32-libldap opencl-icd-loader lib32-v4l-utils lib32-opencl-icd-loader lib32-libxslt lib32-gst-plugins-base-libs lib32-libcanberra-pulse lib32-openal lib32-giflib lib32-libva samba yay -aS sdl2_compat12-git yay -aS --noconfirm lib32-sdl2_compat12-git yay dosbox-sdl2
Several applications will run out of the box with the minimum dependencies. Wine has a 64bit run time, but a lot of Windows applications still requires 32Bit. It’s crazy how slow the Windows world switches to 64bit! As of this Wine pulls a lot of lib32* dependencies (make sure that Multilib is activated, if you need to activate it, read https://wiki.archlinux.org/index.php/Multilib).
If one application doesn’t start, open a terminal and run it like this to get additional output:
This is especially recommended if you install a new application and you want to check for error messages and missing dependencies without wondering why certain things don’t work.
Wine-Staging contains a lot of additional patches and fixes.
To install wine-staging and to be able to use the new Gtk3 backend (it needs to be activated in winecfg manually), run:
pacman -Sy wine-staging lib32-gtk3
Wine has been developed mostly around OpenGL. If a game has been released with OpenGL support for Windows only, then Wine can run the game natively on Linux by providing only the Windows API’s with the OpenGL stack.
Legacy WineD3D: DirextX -> OpenGL
The Wine project translates DirectX up until version 11 to OpenGL. The road to provide this support up until DX11 was extremely hard and took many years.
Nowadays in terms of performance and stability it is recommended to use Vulkan.
Since Wine 1.9.6 Vulkan applications/games run in Wine on Linux. Wine 3.4 reworked Vulkan support completely and offers since Wine 3.5 an integrated Vulkan loader. Kronos updated the Vulkan license and this allowed Wine to move from Vulkan 1.0.51 to 1.1 and newer (since 4.5). Basically the Windows surfaces are mapped by Wine to X11/XCB to provide direct Vulkan support.
Direct 3D 8/9/10/11/12 -> Vulkan
Similar to Wine’s translation layer of Direct 3D (DirectX) to OpenGL there are several projects to translate Direct 3D to Vulkan, which avoids certain bottlenecks of Wine’s legacy WineD3D OpenGL implementation. DXVK (which includes now D9VK) works great for all DirectX 9, 10 and 11 games. DirectX 12 is translated via the Vulkan based VKD3D. Direct 3D 8 and DirectDraw 1-7 and can be translated to DirectX9 via DXWrapper. For more details read DXVK + VKD3D and Vulkan-ize graphic and compute API’s.
With Wine prefix you can create multiple instances of the .wine folder including own settings and adjustments. In the example below a second prefix is created to run just the default wine without any modifications, this is useful if the default one has too many modifications. Or you can use it to test different software and settings. To create a new prefix, run after replacing CUSTOMPREFIX:
env WINEPREFIX=~/.wine-CUSTOMPREFIX wineboot -u
To run a application with this, run:
env WINEPREFIX=~/.wine-CUSTOMPREFIX winefile
If you want to support the Wine development, you can buy CrossOver. It is a commercial version of Wine and a lot of work is done by Codeweavers, you can buy it here https://www.codeweavers.com/products/crossover-linux. Another way is just to buy games on Steam as Valve is funding directly Proton, DXVK, VKD3D, ACO, RADV, FAudio, FSync…