If you are a Linux user, you should be familiar with Wine. It’s a Windows compatibility layer that allows executables for Microsoft Windows to execute on Linux, BSD, Android and, macOS.

Wine translates Windows system calls into POSIX-compliant system calls, recreates the Windows directory structure, provides alternative implementations of Windows system libraries, system services and various other components.

At the moment of writing 27,690 Windows games and applications including Final Fantasy XI Online, Adobe Photoshop, StarCraft, and Team Fortress 2 are compatible with Wine.

What’s New in Wine 6.0?

WineHQ dedicated this Wine release to one of the developers Ken Thomases, he is the mastermind behind the macOS support in Wine, who passed away just before Christmas at the age of 51.

WineHQ listed a large number of improvements in the release notes. Let’s take a look at the significant changes –

Core Modules are in PE Format

Core modules of Wine which are equivalent to the core modules of Windows such as NTDLL, KERNEL32, GDI32, USER32, etc. are now built in Portable Executable format. This was necessary because of copy protection schemes which checks that the DLL files on disk match the in-memory contents.

There are also backward incompatible changes. The Winelib modules no longer link against libwine.so, or require it at run-time. That means, module built with Wine 6.0 won’t run on older Wine version. But the libwine library is still provided to support running Winelib modules against older versions. However, it’s deprecated and will be removed in a future Wine release.

Vulkan Backend for WineD3D

Previous releases of Wine used OpenGL as it’s Direct3D backend. But in Wine 6.0, an experimental Vulkan renderer for WineD3D is implemented. Currently this will able to handle Direct3D 10 and 11 applications.

More graphics cards are now recognized by the Direct3D graphics card database with updated driver versions.

DirectShow and Media Foundation Improvements

The Media Foundation Framework is now more complete and the DirectShow File Writer filter is now implemented.

The DirectX Media Object, more Media Detector APIs, and the XACT3 engine library and interfaces are also implemented.

Reimplemented Text Console

This release also brings changes in text and console. Using the architecture of recent Windows versions, text console support is reimplemented. There are also pseudo consoles like Unix pseudo TTYs.
Console handling is done in the ConHost process and WineConsole is just a thin wrapper around ConHost. Unix Curses library is no longer required as the ConHost handles VT escape sequences.

USB Kernel Driver, Plug & Play device notifications and Mouse Position History Implemented

In this release, an initial USB kernel driver is implemented based on the LibUSB library to provide access to the USB devices. Also, Plug & Play device notifications are implemented.

Raw input devices and messages are implemented and used by DirectInput instead of previously used low-level hooks.

For games that want more precise mouse positions, the mouse position history is implemented.

WebSocket API implemented and Active Directory Support improved

WebSocket is now available from Wine 6.0. There are also many improvements for the LDAP and Active Directory Service support.

Initial Support for new Apple Silicon

Wine 6.0 is also initially supporting ARM64 on macOS, for new Apple Silicon.

Miscellaneous Changes

  • The Mono engine is now updated to version 5.1.1.
  • The Gecko engine is updated to version 2.47.2.
  • Many new timezones are supported.
  • The Curses, GLU, and Zlib libraries are no longer used.
  • Compiling with the Clang compiler in MSVC mode is supported.
  • Enabled case-insensitive filesystem optimizations are enabled on FreeBSD.
  • The Digital Signatures Cryptographic Provider is implemented and enabled by default.
  • The Wine modules are all built against the new UCRT runtime.

Get Wine 6.0

You can get Wine 6.0 source and compile yourself. Just kidding! You can, of course, do that, but you can also download binary packages for your distribution from the official site:

Ubuntu users can use the following steps (NOT APPLICABLE TO MINT USERS):

Install Wine 6.0 on Ubuntu (not valid for Linux Mint)

Remove existing Wine install with this command:

sudo apt remove winehq-stable wine-stable wine1.6 wine-mono wine-geco winetricks

Then make sure to add 32-bit architecture support:

sudo dpkg --add-architecture i386

Download the official Wine repository key and add it:

wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -

For Ubuntu 18.04, add the FAudio dependency with this PPA.

sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport

Now use this command to add repository:

sudo apt-add-repository "deb https://dl.winehq.org/wine-builds/ubuntu $(lsb_release -cs) main"

Now that you have added the correct repository, you can install Wine 6.0 using this command:

sudo apt update && sudo apt install --install-recommends winehq-stable

Want support with Wine? Want to support Wine?

Using Wine could be overwhelming. If you want professional support with Wine, you can purchase CrossOver. They are the major contributor to the Wine project.

Your purchase of CrossOver will get you technical support with Wine and at the same time it will support the development of Wine. A Win(e) Win(e) situation!

Enjoy Windows software and games on Linux with Wine!


Shaswata Das

FOSS and InfoSec Enthusiast. Software Engineering Student.