WINE is a complex system, so before running it on a FreeBSD system it is worth gaining an understanding of what it is and how it works.
As mentioned in the Synopsis for this chapter, WINE is a compatibility layer that allows Windows® applications to run on other operating systems. In theory, it means these programs should run on systems like FreeBSD, macOS, and Android.
When WINE runs a Windows® executable, two things occur:
Firstly, WINE implements an environment that mimics that of various versions of Windows®. For example, if an application requests access to a resource such as RAM, WINE has a memory interface that looks and acts (as far as the application is concerned) like Windows®.
Then, once that application makes use of that interface, WINE takes the incoming request for space in memory and translates it to something compatible with the host system. In the same way when the application retrieves that data, WINE facilitates fetching it from the host system and passing it back to the Windows® application.
Installing WINE on a FreeBSD system will entail a few different components:
FreeBSD applications for tasks such as running the Windows® executables, configuring the WINE sub-system, or compiling programs with WINE support.
A large number of libraries that implement the core
functions of Windows® (for example
/lib/wine/api-ms-core-memory-l1-1-1.dll.so
,
which is part of the aforementioned memory
interface).
A number of Windows® executables, which are (or
mimic) common utilities (such as
/lib/wine/notepad.exe.so
, which
provides the standard Windows® text editor).
Additional Windows® assets, in particular fonts (like
the Tahoma font, which is stored in
share/wine/fonts/tahoma.ttf
in
the install root).
As an operating system where terminal utilities are “first-class citizens,” it is natural to assume that WINE will contain extensive support for text-mode program. However, the majority of applications for Windows®, especially the most popular ones, are designed with a graphical user interface (GUI) in mind. Therefore, WINE's utilities are designed by default to launch graphical programs.
However, there are three methods available to run these so-called Console User Interface (CUI) programs:
The Bare Streams approach will display the output directly to standard output.
The wineconsole utility can be used with either the user or curses backed to utilize some of the enhancements the WINE system provides for CUI applications.
These approaches are described in greater detail on the WINE Wiki.
WINE itself is a mature open source project, so it is little surprise it is used as the foundation of more complex solutions.
A number of companies have taken WINE and made it a core of their own, proprietary products (WINE's LGPL license permits this). Two of the most famous of these are as follows:
Codeweavers CrossOver
This solution provides a simplified “one-click” installation of WINE, which contains additional enhancements and optimizations (although the company contributes many of these back upstream to the WINE project). One area of focus for Codeweavers is to make the most popular applications install and run smoothly.
While the company once produced a native FreeBSD version of their CrossOver solution, it appears to have long been abandoned. While some resources (such as a dedicated forum) are still present, they also have seen no activity for some time.
Steam Proton
Gaming company Steam also uses WINE to enable Windows® games to install and run on other systems. it is primary target is Linux-based systems, though some support exists for macOS as well.
While Steam does not offer a native FreeBSD client,there are several options for using the Linux® client using FreeBSD's Linux Compatibility Layer.
In addition to proprietary offerings, other projects have released applications designed to work in tandem with the standard, open source version of WINE. The goals for these can range from making installation easier to offering easy ways to get popular software installed.
These solutions are covered in greater detail in the later section on GUI frontends, and include the following:
winetricks
Homura
For FreeBSD users, some alternatives to using WINE are as follows:
Dual-Booting: A straightforward option is to run desired Windows® applications natively on that OS. This of course means existing FreeBSD in order to boot Windows®, so this method is not feasible if access to programs in both systems is required simultaneously.
Virtual Machines: Virtual Machines (VMs), as mentioned earlier in this chapter, are software processes that emulate full sets of hardware, on which additional operating systems (including Windows®) can be installed and run. Modern tools make VMs easy to create and manage, but this method comes at a cost. A good portion of the host systems resources must be allocated to each VM, and those resources cannot be reclaimed by the host as long as the VM is running. A few examples of VM managers include the open source solutions qemu, bhyve, and VirtualBox. See the chapter on Virtualization for more detail.
Remote Access: Like many other UNIX®-like systems, FreeBSD can run a variety of applications enabling users to remotely access Windows® computers and use their programs or data. In addtion to clients such as xrdp that connect to the standard Windows® Remote Desktop Protocol, other open source standards such as vnc can also be used (provided a compatible server is present on the other side).
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.