aboutsummaryrefslogtreecommitdiff
path: root/en_US.ISO8859-1/books
diff options
context:
space:
mode:
authorBenedict Reuschling <bcr@FreeBSD.org>2020-12-25 16:48:11 +0000
committerBenedict Reuschling <bcr@FreeBSD.org>2020-12-25 16:48:11 +0000
commit1980db649f63ddbc4e6749fc47e47efd63c1f66f (patch)
treef99c14b53950f4339ed88c238dad1b342190d61b /en_US.ISO8859-1/books
parent0ed45c2db83e2245b657295895ed32b00ad07bd1 (diff)
downloaddoc-1980db649f63ddbc4e6749fc47e47efd63c1f66f.tar.gz
doc-1980db649f63ddbc4e6749fc47e47efd63c1f66f.zip
Add new WINE handbook chapter written as part of Google Season of Docs 2020.
Thanks to Aaron Peters for researching and writing this chapter from scratch. He also provided most of the images, together with Alexander Leidinger (netchild@). Alexander was also kind enough to be the official mentor for the WINE side of the content, while I focused on the documentation side. His insights into WINE from a users perspective helped make this chapter better by adding information about Homura. A big thank you to Google Season of Docs 2020 for enabling us to have Aaron as technical writer working on this project. I've re-ordered the finalized submission so that the FAQ is the last part of this chapter. I also moved the "WINE Overview & concepts" section after the Synopsis for a more logical flow of information. Additionally, a lot of DocBook editing was done to bring it to the current form. The remaining checks by textproc/igor revolve around indentation errors. But one can't fix all of them without violating others. Please enjoy running WINE and games on FreeBSD with the help of this chapter. Todo: - Some references to other parts of the chapter or to others in the handbook need to be replaced by actual links. - Some of the images could be resized a bit more. I only did it on those that would create a horizontal scroll bar. Reizing them to 50% made them small enough to fit the other images while retaining legible text. A note on the images: I realize they are mixed JPEG and PNGs in the same chapter. However, many of the images in the handbook do not have a uniform image type either (compare IMAGES_EN+= entries in Makefile). This may be a future project to unify these without compromising image quality. Contributed by: Aaron Peters (acpkendo gmail.com) Reviewed by: netchild, bcr Sponsored by: Google Season of Docs 2020 Differential Revision: https://reviews.freebsd.org/D27484 Differential Revision: https://reviews.freebsd.org/D27455 Differential Revision: https://reviews.freebsd.org/D27444 Differential Revision: https://reviews.freebsd.org/D27232 Differential Revision: https://reviews.freebsd.org/D27146 Differential Revision: https://reviews.freebsd.org/D26983 Differential Revision: https://reviews.freebsd.org/D26914 Differential Revision: https://reviews.freebsd.org/D26788
Diffstat (limited to 'en_US.ISO8859-1/books')
-rw-r--r--en_US.ISO8859-1/books/handbook/Makefile37
-rw-r--r--en_US.ISO8859-1/books/handbook/book.xml2
-rw-r--r--en_US.ISO8859-1/books/handbook/chapters.ent2
-rw-r--r--en_US.ISO8859-1/books/handbook/preface/preface.xml5
-rw-r--r--en_US.ISO8859-1/books/handbook/wine/Makefile14
-rw-r--r--en_US.ISO8859-1/books/handbook/wine/chapter.xml1838
6 files changed, 1896 insertions, 2 deletions
diff --git a/en_US.ISO8859-1/books/handbook/Makefile b/en_US.ISO8859-1/books/handbook/Makefile
index dc04a1b584..aed69a7d35 100644
--- a/en_US.ISO8859-1/books/handbook/Makefile
+++ b/en_US.ISO8859-1/books/handbook/Makefile
@@ -151,6 +151,42 @@ IMAGES_EN+= virtualization/vmware-freebsd09.png
IMAGES_EN+= virtualization/vmware-freebsd10.png
IMAGES_EN+= virtualization/vmware-freebsd11.png
IMAGES_EN+= virtualization/vmware-freebsd12.png
+IMAGES_EN+= wine/wine-run-np++-1.png
+IMAGES_EN+= wine/wine-config-1.png
+IMAGES_EN+= wine/wine-config-2.png
+IMAGES_EN+= wine/wine-config-3.png
+IMAGES_EN+= wine/wine-config-4.png
+IMAGES_EN+= wine/wine-config-5.png
+IMAGES_EN+= wine/wine-config-6.png
+IMAGES_EN+= wine/wine-config-7.png
+IMAGES_EN+= wine/winetricks-run-1.png
+IMAGES_EN+= wine/winetricks-run-2.png
+IMAGES_EN+= wine/winetricks-menu-1.jpg
+IMAGES_EN+= wine/winetricks-uninstall-1.jpg
+IMAGES_EN+= wine/winetricks-uninstall-2.jpg
+IMAGES_EN+= wine/winetricks-uninstall-3.jpg
+IMAGES_EN+= wine/homura-launch-1.jpg
+IMAGES_EN+= wine/homura-run-2.jpg
+IMAGES_EN+= wine/homura-run-3.jpg
+IMAGES_EN+= wine/homura-install-1.jpg
+IMAGES_EN+= wine/homura-install-2.jpg
+IMAGES_EN+= wine/homura-install-3.jpg
+IMAGES_EN+= wine/homura-install-4.jpg
+IMAGES_EN+= wine/homura-install-5.jpg
+IMAGES_EN+= wine/homura-install-6.jpg
+IMAGES_EN+= wine/homura-install-7.jpg
+IMAGES_EN+= wine/homura-install-8.jpg
+IMAGES_EN+= wine/homura-uninstall-1.jpg
+IMAGES_EN+= wine/homura-run-2.jpg
+IMAGES_EN+= wine/homura-run-3.jpg
+IMAGES_EN+= wine/winetricks-run-1.png
+IMAGES_EN+= wine/winetricks-run-2.png
+IMAGES_EN+= wine/winetricks-app-install-1.png
+IMAGES_EN+= wine/winetricks-app-install-2.png
+IMAGES_EN+= wine/winetricks-menu-1.jpg
+IMAGES_EN+= wine/winetricks-uninstall-1.jpg
+IMAGES_EN+= wine/winetricks-uninstall-2.jpg
+IMAGES_EN+= wine/winetricks-uninstall-3.jpg
# Images from the cross-document image library
IMAGES_LIB= callouts/1.png
@@ -212,6 +248,7 @@ SRCS+= security/chapter.xml
SRCS+= serialcomms/chapter.xml
SRCS+= usb-device-mode/chapter.xml
SRCS+= virtualization/chapter.xml
+SRCS+= wine/chapter.xml
SRCS+= x11/chapter.xml
# Entities
diff --git a/en_US.ISO8859-1/books/handbook/book.xml b/en_US.ISO8859-1/books/handbook/book.xml
index 95de7bab27..97ab915034 100644
--- a/en_US.ISO8859-1/books/handbook/book.xml
+++ b/en_US.ISO8859-1/books/handbook/book.xml
@@ -4,7 +4,6 @@
<!--
The FreeBSD Documentation Project
- $FreeBSD$
-->
<!ENTITY % chapters SYSTEM "chapters.ent">
@@ -224,6 +223,7 @@
&chap.kernelconfig;
&chap.printing;
&chap.linuxemu;
+ &chap.wine;
</part>
<part xml:id="system-administration">
diff --git a/en_US.ISO8859-1/books/handbook/chapters.ent b/en_US.ISO8859-1/books/handbook/chapters.ent
index 2c3402c0af..0a4704c1e9 100644
--- a/en_US.ISO8859-1/books/handbook/chapters.ent
+++ b/en_US.ISO8859-1/books/handbook/chapters.ent
@@ -7,7 +7,6 @@
Chapters should be listed in the order in which they are referenced.
- $FreeBSD$
-->
<!ENTITY chap.preface SYSTEM "preface/preface.xml">
@@ -26,6 +25,7 @@
<!ENTITY chap.kernelconfig SYSTEM "kernelconfig/chapter.xml">
<!ENTITY chap.printing SYSTEM "printing/chapter.xml">
<!ENTITY chap.linuxemu SYSTEM "linuxemu/chapter.xml">
+ <!ENTITY chap.wine SYSTEM "wine/chapter.xml">
<!-- Part Three -->
<!ENTITY chap.config SYSTEM "config/chapter.xml">
diff --git a/en_US.ISO8859-1/books/handbook/preface/preface.xml b/en_US.ISO8859-1/books/handbook/preface/preface.xml
index 427056edf8..b407afb658 100644
--- a/en_US.ISO8859-1/books/handbook/preface/preface.xml
+++ b/en_US.ISO8859-1/books/handbook/preface/preface.xml
@@ -37,6 +37,11 @@
<itemizedlist>
<listitem>
+ <para><xref linkend="wine"/> has been added with information
+ about how to run &windows; applications on &os;.</para>
+ </listitem>
+
+ <listitem>
<para><xref linkend="dtrace"/> has been added with information
about the powerful &dtrace; performance analysis tool.</para>
</listitem>
diff --git a/en_US.ISO8859-1/books/handbook/wine/Makefile b/en_US.ISO8859-1/books/handbook/wine/Makefile
new file mode 100644
index 0000000000..b0c6855e1e
--- /dev/null
+++ b/en_US.ISO8859-1/books/handbook/wine/Makefile
@@ -0,0 +1,14 @@
+#
+# Build the Handbook with just the content from this chapter.
+#
+#
+
+CHAPTERS= wine/chapter.xml
+
+VPATH= ..
+
+MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX}
+
+DOC_PREFIX?= ${.CURDIR}/../../../..
+
+.include "../Makefile"
diff --git a/en_US.ISO8859-1/books/handbook/wine/chapter.xml b/en_US.ISO8859-1/books/handbook/wine/chapter.xml
new file mode 100644
index 0000000000..e749793ed2
--- /dev/null
+++ b/en_US.ISO8859-1/books/handbook/wine/chapter.xml
@@ -0,0 +1,1838 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<chapter xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
+ xml:id="wine">
+
+<info>
+ <title>WINE</title>
+
+ <authorgroup>
+ <author>
+ <personname>
+ <firstname>Aaron</firstname>
+ <surname>Peters</surname>
+ </personname>
+ <contrib>Contributed by </contrib>
+ </author>
+ </authorgroup>
+ <authorgroup>
+ <author>
+ <personname>
+ <firstname>Benedict</firstname>
+ <surname>Reuschling</surname>
+ </personname>
+ <contrib>DocBook markup edits by </contrib>
+ </author>
+ </authorgroup>
+</info>
+
+ <sect1 xml:id="wine-synopsis">
+ <title>Synopsis</title>
+
+ <para><link xlink:href="https://www.winehq.org/">WINE</link>,
+ which stands for Wine Is Not an Emulator, is technically a
+ software translation layer. It enables to install and run some
+ software written for &windows; on &os; (and other)
+ systems.</para>
+
+ <para>It operates by intercepting system calls, or requests from
+ the software to the operating system, and translating them from
+ &windows; calls to calls that &os; understands. It will also
+ translate any responses as needed into what the &windows;
+ software is expecting. So in some ways, it
+ <emphasis>emulates</emphasis> a &windows; environment, in that
+ it provides many of the resources &windows; applications are
+ expecting.</para>
+
+ <para>However, it is not an emulator in the traditional sense.
+ Many of these solutions operate by constructing an entire other
+ computer using software processes in place of hardware
+ Virtualization (such as that provided by the
+ <package>emulators/qemu</package> port) operates in this way.
+ One of the benefits of this approach is the ability to install
+ a full version of the OS in question to the emulator. It means
+ that the environment will not look any different to applications
+ than a real machine, and chances are good that everything will
+ work on it. The downside to this approach is the fact that
+ software acting as hardware is inherently slower than actual
+ hardware. The computer built in software (called the
+ <emphasis>guest</emphasis>) requires resources from the real
+ machine (the <emphasis>host</emphasis>), and holds on to those
+ resources for as long as it is running.</para>
+
+ <para>The WINE Project, on the other hand, is much lighter on
+ system's resources. It will translate system calls on the fly,
+ so while it is difficult to be as fast as a real &windows;
+ computer, it can come very close. On the other hand, WINE is
+ trying to keep up with a moving target in terms of all the
+ different system calls and other functionality it needs to
+ support. As a result there may be applications that do not work
+ as expected on WINE, will not work at all, or will not even
+ install to begin with.</para>
+
+ <para>At the end of the day, WINE provides another option to try
+ to get a particular &windows; software program running on &os;.
+ It can always serve as the first option which, if successful,
+ offers a good experience without unnecessarily depleting the
+ host &os; system's resources.</para>
+
+ <para>This chapter will describe:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>How to install WINE on a &os; system.</para>
+ </listitem>
+
+ <listitem>
+ <para>How WINE operates, and how it is different from other
+ alternatives like virtualizaton.</para>
+ </listitem>
+
+ <listitem>
+ <para>How to fine-tune WINE to the specific needs of some
+ applications.</para>
+ </listitem>
+
+ <listitem>
+ <para>How to install GUI helpers for WINE.</para>
+ </listitem>
+
+ <listitem>
+ <para>Common tips and solutions for on &os;.</para>
+ </listitem>
+
+ <listitem>
+ <para>Considerations for WINE on &os; in terms of the
+ multi-user environment.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Before reading this chapter, it will be useful to:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Understand the <link linkend="basics">basics of &unix;
+ and &os;</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Know how to <link linkend="bsdinstall">install
+ &os;</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Know how to <link linkend="advanced-networking">set up a
+ network connection</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Know how to <link linkend="ports">install additional
+ third-party software</link>.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 xml:id="wine-overview-concepts">
+ <title>WINE Overview &amp; Concepts</title>
+
+ <para>WINE is a complex system, so before running it on a &os;
+ system it is worth gaining an understanding of what it is and
+ how it works.</para>
+
+ <sect2 xml:id="what-is-wine">
+ <title>What is WINE?</title>
+
+ <para>As mentioned in the <link
+ linkend="wine-synopsis">Synopsis</link> 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 &os;,
+ macOS, and Android.</para>
+
+ <para>When WINE runs a &windows; executable, two things
+ occur:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>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;.</para>
+ </listitem>
+
+ <listitem>
+ <para>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.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 xml:id="wine-and-the-os-system">
+ <title>WINE and the &os; System</title>
+
+ <para>Installing WINE on a &os; system will entail a few
+ different components:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>&os; applications for tasks such as running the
+ &windows; executables, configuring the WINE sub-system, or
+ compiling programs with WINE support.</para>
+ </listitem>
+
+ <listitem>
+ <para>A large number of libraries that implement the core
+ functions of &windows; (for example
+ <filename>/lib/wine/api-ms-core-memory-l1-1-1.dll.so</filename>,
+ which is part of the aforementioned memory
+ interface).</para>
+ </listitem>
+
+ <listitem>
+ <para>A number of &windows; executables, which are (or
+ mimic) common utilities (such as
+ <filename>/lib/wine/notepad.exe.so</filename>, which
+ provides the standard &windows; text editor).</para>
+ </listitem>
+
+ <listitem>
+ <para>Additional &windows; assets, in particular fonts (like
+ the Tahoma font, which is stored in
+ <filename>share/wine/fonts/tahoma.ttf</filename> in
+ the install root).</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2
+ xml:id="graphical-versus-text-modeterminal-programs-in-wine">
+ <title>Graphical Versus Text Mode/Terminal Programs in
+ WINE</title>
+
+ <para>As an operating system where terminal utilities are
+ <quote>first-class citizens,</quote> 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.</para>
+
+ <para>However, there are three methods available to run these
+ so-called Console User Interface (CUI) programs:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>The <emphasis>Bare Streams</emphasis> approach will
+ display the output directly to standard output.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <emphasis>wineconsole</emphasis> utility can be
+ used with either the <emphasis>user</emphasis> or
+ <emphasis>curses</emphasis> backed to utilize some of the
+ enhancements the WINE system provides for CUI
+ applications.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>These approaches are described in greater detail on the
+ <link
+ xlink:href="https://wiki.winehq.org/Wine_User%27s_Guide#Text_mode_programs_.28CUI:_Console_User_Interface.29">WINE
+ Wiki</link>.</para>
+ </sect2>
+
+ <sect2 xml:id="wine-derivative-projects">
+ <title>WINE Derivative Projects</title>
+
+ <para>WINE itself is a mature open source project, so it is
+ little surprise it is used as the foundation of more complex
+ solutions.</para>
+
+ <sect3 xml:id="commercial-wine-implementations">
+ <title>Commercial WINE Implementations</title>
+
+ <para>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:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Codeweavers CrossOver</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>This solution provides a simplified
+ <quote>one-click</quote> 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.</para>
+
+ <para>While the company once produced a native FreeBSD version
+ of their <application>CrossOver</application> solution, it
+ appears to have long been abandoned. While some resources
+ (such as a <link
+ xlink:href="https://www.codeweavers.com/compatibility/crossover/forum/freebsd">dedicated
+ forum</link>) are still present, they also have seen no
+ activity for some time.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Steam Proton</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>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.</para>
+
+ <para>While Steam does not offer a native &os; client,there
+ are several options for using the &linux; client using
+ &os;'s Linux Compatibility Layer.</para>
+ </sect3>
+
+ <sect3 xml:id="wine-companion-programs">
+ <title>WINE Companion Programs</title>
+
+ <para>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.</para>
+
+ <para>These solutions are covered in greater detail in the
+ later section on <link
+ linkend="wine-management-guis">GUI frontends</link>, and
+ include the following:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>winetricks</para>
+ </listitem>
+
+ <listitem>
+ <para>Homura</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+ </sect2>
+
+ <sect2 xml:id="alternatives-to-wine">
+ <title>Alternatives to WINE</title>
+
+ <para>For &os; users, some alternatives to using WINE are as
+ follows:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Dual-Booting: A straightforward option is to run
+ desired &windows; applications natively on that OS. This
+ of course means existing &os; in order to boot &windows;,
+ so this method is not feasible if access to programs in
+ both systems is required simultaneously.</para>
+ </listitem>
+
+ <listitem>
+ <para>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 <link
+ linkend="virtualization">Virtualization</link> for
+ more detail.</para>
+ </listitem>
+
+ <listitem>
+ <para>Remote Access: Like many other &unix;-like systems,
+ &os; 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
+ <application>xrdp</application> that connect to the
+ standard &windows; Remote Desktop Protocol, other open
+ source standards such as <application>vnc</application>
+ can also be used (provided a compatible server is present
+ on the other side).</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ </sect1>
+
+ <sect1 xml:id="installing-wine-on-freebsd">
+ <title>Installing WINE on &os;</title>
+
+ <para>WINE can be installed via the pkg tool, or by compiling the
+ port(s).</para>
+
+ <sect2 xml:id="wine-prerequistes">
+ <title>WINE Prerequistes</title>
+
+ <para>Before installing WINE itself, it is useful to have the
+ following pre-requisites installed.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>A GUI</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Most &windows; programs are expecting to have a graphical
+ user interface available. If WINE is installed without one
+ present, its dependencies will include the Wayland compositor,
+ and so a GUI will be installed along with WINE. But it is
+ useful to have the GUI of choice installed, configured,
+ and working correctly before installing WINE.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>wine-gecko</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>The &windows; operating system has for some time had a
+ default web browser pre-installed: Internet Explorer. As a
+ result, some applications work under the assumption that there
+ will always be something capable of displaying web pages. In
+ order to provide this functionality, the WINE layer includes a
+ web browser component using the Mozilla project's Gecko
+ engine. When WINE is first launched it will offer to download
+ and install this, and there are reasons users might want it do
+ so (these will be covered in a later chapter). But they can
+ also install it prior to installing WINE, or alongside the
+ install of WINE proper.</para>
+
+ <para>Install this package with the following:</para>
+
+ <screen>&prompt.root; <userinput>pkg install wine-gecko</userinput></screen>
+
+ <para>Alternately, compile the port with the following:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/emulator/wine-gecko</userinput>
+&prompt.root; <userinput>make install</userinput></screen>
+
+ <itemizedlist>
+ <listitem>
+ <para>wine-mono</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>This port installs the MONO framework, an open source
+ implementation of Microsoft's .NET. Including this with the
+ WINE installation will make it that much more likely that any
+ applications written in .NET will install and run on the
+ system.</para>
+
+ <para>To install the package:</para>
+
+ <screen>&prompt.root; <userinput>pkg install wine-mono</userinput></screen>
+
+ <para>To compile from the ports collection:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/emulator/wine-mono</userinput>
+&prompt.root; <userinput>make install</userinput></screen>
+ </sect2>
+
+ <sect2 xml:id="installing-wine">
+ <title>Installing WINE via &os; Package Repositories</title>
+
+ <para>With the pre-requisites in place, install WINE via package
+ with the following command:</para>
+
+ <screen>&prompt.root; <userinput>pkg install wine</userinput></screen>
+
+ <para>Alternately compile the WINE sub-system from source with
+ the following:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/emulator/wine</userinput>
+&prompt.root; <userinput>make install</userinput></screen>
+ </sect2>
+
+ <sect2 xml:id="thirtytwo-vs-sixtyfour-bit-wine">
+ <title>Concerns of 32- Versus 64-Bit in WINE
+ Installations</title>
+
+ <para>Like most software, &windows; applications made the
+ upgrade from the older 32-bit architecture to 64 bits. And
+ most recent software is written for 64-bit operating systems,
+ although modern OSes can sometimes continue to run older
+ 32-bit programs as well. &os; is no different, having had
+ support for 64-bit since the 5.x series.</para>
+
+ <para>However, using old software no longer supported by default
+ is a common use for emulators, and users commonly turn to WINE
+ to play games and use other programs that do not run properly
+ on modern hardware. Fortunately, &os; can support all three
+ scenarios:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>On modern, 64-bit machine and want to run 64-bit
+ &windows; software, simply install the ports mentioned in
+ the above sections. The ports system will automatically
+ install the 64-bit version.</para>
+ </listitem>
+
+ <listitem>
+ <para>Alternately, users might have an older 32-bit machine
+ that they do not want to run with its original, now
+ non-supported software. They can install the 32-bit
+ (i386) version of &os;, then install the ports in the
+ above sections. Again, on a 32-bit machine the ports
+ system will install the corresponding 32-bit version of
+ WINE by default.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>However, given a 64-bit version of &os; and need to run
+ <emphasis role="strong">32-bit</emphasis> &windows;
+ applications, installing a different port is required to
+ enable 32-bit compatibility. To install the pre-compiled
+ package, use the following:</para>
+
+ <screen>&prompt.root; <userinput>pkg install i386-wine</userinput></screen>
+
+ <para>Or compile the port with the following:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/emulator/i386-wine</userinput>
+&prompt.root; <userinput>make install</userinput></screen>
+ </sect2>
+ </sect1>
+
+ <sect1 xml:id="running-first-wine-program">
+ <title>Running a First WINE Program on &os;</title>
+
+ <para>Now that WINE is installed, the next step is to try it out
+ by running a simple program. An easy way to do this is to
+ download a self-contained application, i.e., one can
+ simply unpack and run without any complex installation
+ process.</para>
+
+ <para>So-called &quot;portable&quot; versions of applications
+ are good choices for this test, as are programs that run with
+ only a single executable file.</para>
+
+ <sect2 xml:id="running-a-program-from-the-command-line">
+ <title>Running a Program from the Command Line</title>
+
+ <para>There are two different methods to launch a Windows
+ program from the terminal. The first, and most
+ straightforward is to navigate to the directory containing
+ the program's executable (<filename>.EXE</filename>) and
+ issue the following:</para>
+
+ <screen>&prompt.user; <userinput>wine program.exe</userinput></screen>
+
+ <para>For applications that take command-line arguments, add
+ them after the executable as usual:</para>
+
+ <screen>&prompt.user; <userinput>wine <replaceable>program2.exe</replaceable> -file <filename><replaceable>file.txt</replaceable></filename></userinput></screen>
+
+ <para>Alternately, supply the full path to the executable to
+ use it in a script, for example:</para>
+
+ <screen>&prompt.user; <userinput>wine /home/<replaceable>user</replaceable>/bin/program.exe</userinput></screen>
+ </sect2>
+
+ <sect2 xml:id="running-a-program-from-a-gui">
+ <title>Running a Program from a GUI</title>
+
+ <para>After installation graphical shells should be updated
+ with new associations for Windows executable
+ (<filename>.EXE</filename>) files. It will now be possible
+ to browse the system using a file manager, and launch the
+ Windows application in the same way as other files and
+ programs (either a single- or double-click, depending on the
+ desktop's settings).</para>
+
+ <para>On most desktops, check to make sure this association is
+ correct by right-clicking on the file, and looking for an
+ entry in the context menu to open the file. One of the
+ options (hopefully the default one) will be with the
+ <emphasis role="strong">Wine Windows Program
+ Loader</emphasis>, as shown in the below
+ screenshot:</para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="wine-run-np++-1"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>In the event the program does not run as expected, try
+ launching it from the command line and review any messages
+ displayed in the terminal to troubleshoot.</para>
+
+ <para>In the event WINE is not the default application for
+ <filename>.EXE</filename> files after install, check the
+ MIME associate for this extension in the current desktop
+ environment, graphical shell, or file manager.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 xml:id="configuring-wine-installation">
+ <title>Configuring WINE Installation</title>
+
+ <para>With an understanding of what WINE is and how it works at
+ a high level, the next step to effectively using it on
+ &os; is becoming familiar with its configuration. The
+ following sections will describe the key concept of the
+ <emphasis>WINE prefix</emphasis>, and illustrate how it is
+ used to control the behavior of applications run through
+ WINE.</para>
+
+ <sect2 xml:id="wine-prefixes">
+ <title>WINE Prefixes</title>
+
+ <para>A WINE <emphasis>prefix</emphasis> is a directory,
+ usually located beneath the default location of
+ <filename>$HOME/.wine</filename> though it can be located
+ elsewhere. The prefix is a set of configurations and
+ support files used by the <application>wine</application> to
+ configure and run the &windows; environment a given
+ application needs. By default, a brand new WINE
+ installation will create the following structure when
+ first launched by a user:</para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para><filename>.update-timestamp</filename>: contains the
+ last modified date of
+ <filename>file /usr/share/wine/wine.inf</filename>. It
+ is used by WINE to determine if a prefix is out of date,
+ and automatically update it if needed.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>dosdevices/</filename>: contains
+ information on mappings of &windows; resources to
+ resources on the host &os; system. For example, after a
+ new WINE installation, this should contain at least two
+ entries which enable access to the &os; filesystem using
+ &windows;-style drive letters:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><filename>c:@</filename>: A link to
+ <filename>drive_c</filename> described below.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>z:@</filename>: A link to the root
+ directory of the system.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para><filename>drive_c/</filename>: emulates the main
+ (i.e., <filename>C:</filename>) drive of a
+ &windows; system. It contains a directory structure
+ and associated files mirroring that of standard
+ &windows; systems. A fresh WINE prefix will contain
+ &windows;&nbsp;10 directories such as
+ <emphasis>Users</emphasis> and
+ <emphasis>Windows</emphasis> that holds the OS itself.
+ Furthermore, applications installed within a prefix will
+ be located in either <emphasis>Program Files</emphasis>
+ or <emphasis>Program Files (x86)</emphasis>, depending
+ on their architecture.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>system.reg</filename>: This Registry file
+ contains information on the &windows; installation,
+ which in the case of WINE is the environment in
+ <filename>drive_c</filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>user.reg</filename>: This Registry file
+ contains the current user's personal configurations,
+ made either by varous software or through the use of the
+ Registry Editor.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>userdef.reg</filename>: This Registry file
+ is a default set of configurations for newly-created
+ users.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 xml:id="creating-and-using-wine-prefixes">
+ <title>Creating and Using WINE Prefixes</title>
+
+ <para>While WINE will create a default prefix in the user's
+ <filename>$HOME/.wine/</filename>, it is possible to
+ set up multiple prefixes. There are a few reasons to do
+ this:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>The most common reason is to emulate different
+ versions of &windows;, according to the compatibility
+ needs of the software in question.</para>
+ </listitem>
+
+ <listitem>
+ <para>In addition, it is common to encounter software that
+ does not work correctly in the default environment, and
+ requires special configuration. it is useful to isolate
+ these in their own, custom prefixes, so the changes do
+ not impact other applications.</para>
+ </listitem>
+
+ <listitem>
+ <para>Similarly, copying the default or &quot;main&quot;
+ prefix into a separate &quot;testing&quot; one in order
+ to evaluate an application's compatibility can reduce
+ the chance of corruption.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Creating a prefix from the terminal requires the
+ following command:</para>
+
+ <screen>&prompt.user; <userinput>WINEPREFIX="/home/<replaceable>username</replaceable>/.wine-new" winecfg</userinput></screen>
+
+ <para>This will run the <application>winecfg</application>
+ program, which can be used to configure wine prefixes (more
+ on this in a later section). But by providing a directory
+ path value for the <varname>WINEPREFIX</varname> environment
+ variable, a new prefix is created at that location if one
+ does not already exist.</para>
+
+ <para>Supplying the same variable to the
+ <application>wine</application> program will similarly cause
+ the selected program to be run with the specified
+ prefix:</para>
+
+ <screen>&prompt.user; <userinput>WINEPREFIX="/home/<replaceable>username</replaceable>/.wine-new" wine program.exe</userinput></screen>
+ </sect2>
+
+ <sect2 xml:id="configuring-wine-prefixes-with-winecfg">
+ <title>Configuring WINE Prefixes with
+ <application>winecfg</application></title>
+
+ <para>As described above WINE includes a tool called
+ <application>winecfg</application> to configure prefixes
+ from within a GUI. It contains a variety of functions,
+ which are detailed in the sections below. When
+ <application>winecfg</application> is run from within a
+ prefix, or provided the location of a prefix within the
+ <varname>WINEPREFIX</varname> variable, it enables the
+ configuration of the selected prefix as described in the
+ below sections.</para>
+
+ <para>Selections made on the <emphasis>Applications</emphasis>
+ tab will affect the scope of changes made in the
+ <emphasis>Libraries</emphasis> and
+ <emphasis>Graphics</emphasis> tabs, which will be limited to
+ the application selected. See the section on <link
+ xlink:href="https://wiki.winehq.org/Wine_User%27s_Guide#Using_Winecfg">Using
+ Winecfg</link> in the WINE Wiki for more details.</para>
+
+ <sect3 xml:id="applications">
+ <title>Applications</title>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="wine-config-1.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>The <emphasis>Applications</emphasis> contains
+ controls enabling the association of programs with a
+ particular version of &windows;. On first start-up the
+ <emphasis>Application settings</emphasis> section will
+ contain a single entry: <emphasis>Default
+ Settings</emphasis>. This corresponds to all the
+ default configurations of the prefix, which (as the
+ disabled <emphasis>Remove application</emphasis> button
+ implies) cannot be deleted.</para>
+
+ <para>But additional applications can be added with the
+ following process:</para>
+
+ <orderedlist spacing="compact">
+ <listitem>
+ <para>Click the <emphasis>Add application</emphasis>
+ button.</para>
+ </listitem>
+
+ <listitem>
+ <para>Use the provided dialog to select the desired
+ program's executable.</para>
+ </listitem>
+
+ <listitem>
+ <para>Select the version of &windows; to be used
+ with the selected program.</para>
+ </listitem>
+ </orderedlist>
+ </sect3>
+
+ <sect3 xml:id="libraries">
+ <title>Libraries</title>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="wine-config-2.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>WINE provides a set of open source library files
+ as part of its distribution that provide the same
+ functions as their &windows; counterparts. However,
+ as noted earlier in this chapter, the WINE project is
+ always trying to keep pace with new updates to these
+ libraries. As a result, the versions that ship with
+ WINE may be missing functionality that the latest
+ &windows; programs are expecting.</para>
+
+ <para>However, <application>winecfg</application>
+ makes it possible specify overrides for the built-in
+ libraries, particularly there is a version of
+ &windows; available on the same machine as the host
+ &os; installation. For each library to be
+ overridden, do the following:</para>
+
+ <orderedlist spacing="compact">
+ <listitem>
+ <para>Open the <emphasis>New override for
+ library</emphasis> drop-down and select the
+ library to be replaced.</para>
+ </listitem>
+
+ <listitem>
+ <para>Click the <emphasis>Add</emphasis>
+ button.</para>
+ </listitem>
+
+ <listitem>
+ <para>The new override will appear in the
+ <emphasis>Existing overrides</emphasis> list,
+ notice the <emphasis>native,
+ builtin</emphasis> designation in
+ parentheses.</para>
+ </listitem>
+
+ <listitem>
+ <para>Click to select the library.</para>
+ </listitem>
+
+ <listitem>
+ <para>Click the <emphasis>Edit</emphasis>
+ button.</para>
+ </listitem>
+
+ <listitem>
+ <para>Use the provided dialog to select a
+ corresponding library to be used in place
+ of the built-in one.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Be sure to select a file that is truly the
+ corresponding version of the built-in one, otherwise
+ there may be unexpected behavior.</para>
+ </sect3>
+
+ <sect3 xml:id="graphics">
+ <title>Graphics</title>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="wine-config-3.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>The <emphasis>Graphics</emphasis> tab provides
+ some options to make the windows of programs run
+ via WINE operate smoothly with &os;</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Automatic mouse capture when windows are
+ full-screen.</para>
+ </listitem>
+
+ <listitem>
+ <para>Allowing the &os; window manager to
+ decorate the windows, such as their title
+ bars, for programs running via WINE.</para>
+ </listitem>
+
+ <listitem>
+ <para>Allowing the window manager to control
+ windows for programs running via WINE, such as
+ running resizing functions on them.</para>
+ </listitem>
+
+ <listitem>
+ <para>Create an emulated virtual desktop, within
+ which all WINE programs will run. If this
+ item is selected, the size of the virtual
+ desktop can be specified using the
+ <emphasis>Desktop size</emphasis> input
+ boxes.</para>
+ </listitem>
+
+ <listitem>
+ <para>Setting the screen resolution for programs
+ running via WINE.</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3 xml:id="desktop-integration">
+ <title>Desktop Integration</title>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="wine-config-4.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>This tab allows configuration of the following
+ items:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>The theme and related visual settings to
+ be used for programs running via WINE.</para>
+ </listitem>
+
+ <listitem>
+ <para>Whether the WINE sub-system should manage
+ MIME types (used to determine which
+ application opens a particular file type)
+ internally.</para>
+ </listitem>
+
+ <listitem>
+ <para>Mappings of directories in the host &os;
+ system to useful folders within the &windows;
+ environment. To change an existing
+ association, select the desired item and click
+ <emphasis>Browse</emphasis>, then use the
+ provided dialog to select a directory.</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3 xml:id="drives">
+ <title>Drives</title>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="wine-config-5.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>The <emphasis>Drives</emphasis> tab allows
+ linking of directories in the host &os; system to
+ drive letters in the &windows; environment. The
+ default values in this tab should look familiar,
+ as they're displaying the contents of
+ <filename>dosdevices/</filename> in the current
+ WINE prefix. Changes made via this dialog will
+ reflect in <filename>dosdevices</filename>, and
+ properly-formatted links created in that directory
+ will display in this tab.</para>
+
+ <para>To create a new entry, such as for a CD-ROM
+ (mounted at <filename>/mnt/cdrom</filename>), take
+ the following steps:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Click the <emphasis>Add </emphasis>
+ button.</para>
+ </listitem>
+
+ <listitem>
+ <para>In the provided dialog, choose a free
+ drive letter.</para>
+ </listitem>
+
+ <listitem>
+ <para>Click <emphasis>OK</emphasis>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Fill in the <emphasis>Path</emphasis>
+ input box by either typing the path to the
+ resource, or click
+ <emphasis>Browse </emphasis> and use the
+ provided dialog to select it.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>By default WINE will autodetect the type of
+ resource linked, but this can be manually
+ overridden. See <link
+ xlink:href="https://wiki.winehq.org/Wine_User%27s_Guide#Drive_Settings">the
+ section in the WINE Wiki</link> for more
+ detail on advanced options.</para>
+ </sect3>
+
+ <sect3 xml:id="audio">
+ <title>Audio</title>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="wine-config-6.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>This tab contains some configurable options
+ for routing sound from &windows; programs to the
+ native &os; sound system, including:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Driver selection</para>
+ </listitem>
+
+ <listitem>
+ <para>Default device selection</para>
+ </listitem>
+
+ <listitem>
+ <para>Sound test</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3 xml:id="about">
+ <title>About</title>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="wine-config-7.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>The final tab contains information on the WINE
+ project, including a link to the website. It also
+ allows entry of (entirely optional) user
+ information, although this is not sent anywhere as
+ it is in other operating systems.</para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 xml:id="wine-management-guis">
+ <title>WINE Management GUIs</title>
+
+ <para>While the base install of WINE comes with a GUI
+ configuration tool in
+ <application>winecfg</application>, it is main purpose
+ is just that: strictly configuring an existing WINE
+ prefix. There are, however, more advanced
+ applications that will assist in the initial
+ installation of applications as well as optimizing
+ their WINE environments. The below sections include a
+ selection of the most popular.</para>
+
+ <sect2 xml:id="winetricks">
+ <title>Winetricks</title>
+
+ <para><application>winetricks</application> is a
+ cross-platform, general purpose helper program for
+ WINE. It is not developed by the WINE project
+ proper, but rather maintained on <link
+ xlink:href="https://github.com/Winetricks/winetricks">Github</link>
+ by a group of contributors. It contains some
+ automated &quot;recipes&quot; for getting common
+ applications to work on WINE, both by optimizing the
+ settings as well as acquiring some DLL libraries
+ automatically.</para>
+
+ <sect3 xml:id="installing-winetricks">
+ <title>Installing
+ <application>winetricks</application></title>
+
+ <para>To install
+ <application>winetricks</application> on a
+ &os; using binary packages, use the following
+ commands (note
+ <application>winetricks</application> requires
+ either the i386-wine or i386-wine-devel package,
+ and is therefore not installed automatically with
+ other dependencies):</para>
+
+ <screen>&prompt.root; <userinput>pkg install i386-wine winetricks</userinput></screen>
+
+ <para>To compile it from source, issue the following
+ in the terminal:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/emulators/i386-wine
+&prompt.root; make install
+&prompt.root; cd /usr/ports/emulators/winetricks
+&prompt.root; make install</userinput></screen>
+
+ <para>If a manual installation is required, refer to
+ the <link
+ xlink:href="https://github.com/Winetricks/winetricks">Github</link>
+ account for instructions.</para>
+ </sect3>
+
+ <sect3 xml:id="using-winetricks">
+ <title>Using
+ <application>winetricks</application></title>
+
+ <para>Run <application>winetricks</application> with
+ the following command:</para>
+
+ <screen>&prompt.user; <userinput>winetricks</userinput></screen>
+
+ <para>Note: this should be in a 32-bit prefix
+ to run <application>winetricks</application>.
+ Launching <application>winetricks</application>
+ displays a window with a number of choices, as
+ follows:</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="winetricks-run-1.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>Selecting either <emphasis>Install an
+ application</emphasis>, <emphasis>Install a
+ benchmark</emphasis>, or <emphasis>Install a
+ game</emphasis> shows a list with supported
+ options, such as the one below for
+ applications:</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="winetricks-run-2.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>Selecting one or more items and clicking
+ <emphasis>OK</emphasis> will start their
+ installation process(es). Initially, some
+ messages that appear to be errors may show up, but
+ they're actually informational alerts as
+ <application>winetricks</application> configures
+ the WINE environment to get around known issues
+ for the application:</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="winetricks-app-install-1.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>Once these are circumvented, the actual
+ installer for the application will be run:</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="winetricks-app-install-2.png" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>Once the installation completes, the new
+ Windows application should be available from the
+ desktop environment's standard menu (shown in the
+ screenshot below for the LXQT desktop
+ environment):</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="winetricks-menu-1.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>In order to remove the application, run
+ <application>winetricks</application> again, and
+ select <emphasis>Run an
+ uninstaller</emphasis>.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="winetricks-uninstall-1.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>A &windows;-style dialog will appear with a
+ list of installed programs and components. Select
+ the application to be removed, then click the
+ <emphasis>Modify/Remove</emphasis> button.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="winetricks-uninstall-2.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>This will run the applications built-in
+ installer, which should also have the option to
+ uninstall.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="winetricks-uninstall-3.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+ </sect3>
+ </sect2>
+
+ <sect2 xml:id="homura">
+ <title>Homura</title>
+
+ <para>Homura is an application similar to
+ <application>winetricks</application>, although it
+ was inspired by the <link
+ xlink:href="https://lutris.net/">Lutris</link>
+ gaming system for Linux. But while it is focused on
+ games, there are also non-gaming applications
+ available for install through Homura.</para>
+
+ <sect3 xml:id="installing-homura">
+ <title>Installing Homura</title>
+
+ <para>To install Homura's binary package, issue the
+ following command:</para>
+
+ <screen>&prompt.root; <userinput>pkg install homura</userinput></screen>
+
+ <para>Homura is available in the FreeBSD Ports
+ system. However, than the
+ <emphasis>emulators</emphasis> section of Ports or
+ binary packages, look for it in the
+ <emphasis>games</emphasis> section.</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/games/homura
+&prompt.root; make install</userinput></screen></sect3>
+
+ <sect3 xml:id="using-homura">
+ <title>Using Homura</title>
+
+ <para>Homura's usage is quite similar to that of
+ <application>winetricks</application>. When using it for
+ the first time, launch it from the command line (or a
+ desktop environment runner applet) with:</para>
+
+ <screen>&prompt.user; <userinput>Homura</userinput></screen>
+
+ <para>This should result in a friendly welcome message. Click
+ <emphasis>OK</emphasis> to continue.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="homura-launch-1.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>The program will also offer to place a link in the
+ application menu of compatible environments:</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="homura-run-2.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>Depending on the setup of the &os; machine, Homura may
+ display a message urging the install of native graphics
+ drivers.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="homura-run-3.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>The application's window should then appear, which
+ amounts to a &quot;main menu&quot; with all its options.
+ Many of the items are the same as
+ <application>winetricks</application>, although Homura
+ offers some additional, helpful options such as opening its
+ data folder (<emphasis>Open Homura Folder</emphasis>) or
+ running a specified program (<emphasis>Run a executable in
+ prefix</emphasis>).</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="homura-install-1.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>To select one of Homura's supported applications to
+ install, select <emphasis>Installation</emphasis>, and click
+ <emphasis>OK</emphasis>. This will display a list of
+ applications Homura can install automatically. Select
+ one, and click <emphasis>OK</emphasis> to start the
+ process.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="homura-install-2.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>As a first step Homura will download the selected
+ program. A notification may appear in supported desktop
+ environments.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="homura-install-3.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>The program will also create a new prefix for the
+ application. A standard WINE dialog with this message
+ will display.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="homura-install-4.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>Next, Homura will install any prerequisites for the
+ selected program. This may involve downloading and
+ extracting a fair number of files, the details of which
+ will show in dialogs.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="homura-install-5.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>Downloaded packages are automatically opened and run
+ as required.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="homura-install-6.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>The installation may end with a simple desktop
+ notification or message in the terminal, depending on how
+ Homura was launched. But in either case Homura should
+ return to the main screen. To confirm the installation
+ was successful, select <emphasis>Launcher</emphasis>, and
+ click <emphasis>OK</emphasis>.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="homura-install-7.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>This will display a list of installed
+ applications.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="homura-install-8.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+
+ <para>To run the new program, select it from the list, and
+ click <emphasis>OK</emphasis>. To uninstall the
+ application, select <emphasis>Uninstallation</emphasis>
+ from the main screen, which will display a similar list.
+ Select the program to be removed, and click
+ <emphasis>OK</emphasis>.</para>
+
+ <para><inlinemediaobject>
+ <imageobject>
+ <imagedata
+ fileref="homura-uninstall-1.jpg" />
+ </imageobject>
+ </inlinemediaobject></para>
+ </sect3>
+ </sect2>
+
+ <sect2 xml:id="running-multiple-management-guis">
+ <title>Running Multiple Management GUIs</title>
+
+ <para>it is worth noting that the above solutions are not
+ mutually exclusive. it is perfectly acceptable, even
+ advantageous, to have both installed at the same time, as
+ they support a different set of programs.</para>
+
+ <para>However, it is wise to ensure that they do not access
+ any of the same WINE prefixes. Each of these solutions
+ applies workarounds and makes changes to the registries
+ based on known workarounds to existing WINE issues in order
+ to make a given application run smoothly. Allowing both
+ <application>winetricks</application> and Homura to access the
+ same prefix could lead to some of these being overwritten,
+ with the result being some or all applications do not work
+ as expected.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 xml:id="wine-in-multi-user-os-installations">
+ <title>WINE in Multi-User &os; Installations</title>
+
+ <sect2 xml:id="issues-with-using-a-common-wine-prefix">
+ <title>Issues with Using a Common WINE Prefix</title>
+
+ <para>Like most &unix;-like operating systems, &os; is
+ designed for multiple users to be logged in and working at
+ the same time. On the other hand, &windows; is multi-user
+ in the sense that there can be multiple user accounts set up
+ on one system. But the expectation is that only one will be
+ using the physical machine (a desktop or laptop PC) at any
+ given moment.</para>
+
+ <para>More recent consumer versions of &windows; have taken
+ some steps to improve the OS in multi-user scenarios. But
+ it is still largely structured around a single-user
+ experience. Furthermore, the measures the WINE project has
+ taken to create acompatible environment means, unlike &os;
+ applications (including WINE itself), it will resemble this
+ single-user environment.</para>
+
+ <para>So it follows that each user will have to maintain their
+ own set of configurations, which is potentially good. Yet
+ it is advantageous to install applications, particularly
+ large ones like office suites or games, only once. Two
+ examples of reasons to do this are maintenance (software
+ updates need only be applied once) and efficiency in storage
+ (no duplicated files).</para>
+
+ <para>There are two strategies to minimze the impact of
+ multiple WINE users in the system.</para>
+ </sect2>
+
+ <sect2
+ xml:id="installing-applications-to-a-common-drivesettings">
+ <title>Installing Applications to a Common Drive</title>
+
+ <para>As shown in the section on WINE Configuration, WINE
+ provides the ability to attach additional drives to a
+ given prefix. In this way, applications can be installed to
+ a common location, while each user will still have an prefix
+ where individual settings may be kept (depending on the
+ program). This is a good setup if there are relatively few
+ applications to be shared between users, and they are
+ programs that require few custom tweaks changes to the
+ prefix in order to function.</para>
+
+ <para>The steps to make install applications in this way are
+ as follows:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>First, set up a shared location on the system where
+ the files will be stored, such as
+ <filename>/mnt/windows-drive_d/</filename>. Creating new
+ directories is described in man page for the
+ <application>mkdir</application> command.</para>
+ </listitem>
+
+ <listitem>
+ <para>Next, set permissions for this new directory to allow
+ only desired users to access it. One approach to this is
+ to create a new group such as &quot;windows,&quot; add the
+ desired users to that group (see the sub-section on groups
+ in the Handbook's Users and Basic Account Management
+ section), and set to the permissions on the directory to
+ <literal>770</literal> (the section on Permissions in the
+ &os; Basics chapter of the Handbook illustrates this
+ process).</para>
+ </listitem>
+
+ <listitem>
+ <para>Finally, add the location as a drive to the user's
+ prefix using the <application>winecfg</application>
+ as described in the above section on WINE Configuration
+ in this chapter.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Once complete, applications can be installed to this
+ location, and subsequently run using the assigned drive
+ letter (or the standard &unix;-style directory path).
+ However, as noted above, only one user should be running
+ these applications (which may be accessing files within
+ their installation directory) at the same time. Some
+ applications may also exhibit unexpected behavior when run
+ by a user who is not the owner, despite being a member of
+ the group that should have full
+ &quot;read/write/execute&quot; permissions for the
+ entire directory.</para>
+ </sect2>
+
+ <sect2 xml:id="using-a-common-installation-of-wine">
+ <title>Using a Common Installation of WINE</title>
+
+ <para>If, on the other hand, there are many applications to be
+ shared, or they require specific tuning in order to work
+ correctly, a different approach may be required. In this
+ method, a completely separate user is created specifically
+ for the purposes of storing the WINE prefix and all its
+ installed applications. Individual users are then granted
+ permission to run programs as this user using the
+ <application>su</application> command. The result is
+ that these users can launch a WINE application as they
+ normally would, only it will act as though launched by the
+ newly-created user, and therefore use the
+ centrally-maintained prefix containing both settings and
+ programs. To accomplish this, take the following
+ steps.</para>
+
+ <para>Create a new user with the following command (as root),
+ which will step through the required details:</para>
+
+ <screen>&prompt.root; <userinput>adduser</userinput></screen>
+
+ <para>Enter the username (e.g.,
+ <replaceable>windows</replaceable>) and Full name
+ (&quot;Microsoft Windows&quot;). Then accept the defaults
+ for the remainder of the questions. Next, install the
+ <application>sudo</application> utlity using binary packages
+ with the following:</para>
+
+ <screen>&prompt.root; <userinput>pkg install sudo</userinput></screen>
+
+ <para>Once installed, edit <filename>/etc/sudoers</filename>
+ as follows:</para>
+
+ <programlisting># User alias specification
+
+# define which users can run the wine/windows programs
+User_Alias WINDOWS_USERS = user1,user2
+
+# define which users can administrate (become root)
+User_Alias ADMIN = user1
+
+# Cmnd alias specification
+
+# define which commands the WINDOWS_USERS may run
+Cmnd_Alias WINDOWS = /usr/bin/wine,/usr/bin/winecfg
+
+# Defaults
+Defaults:WINDOWS_USERS env_reset
+Defaults:WINDOWS_USERS env_keep += DISPLAY
+Defaults:WINDOWS_USERS env_keep += XAUTHORITY
+Defaults !lecture,tty_tickets,!fqdn
+
+# User privilege specification
+root ALL=(ALL) ALL
+
+# Members of the admin user_alias, defined above, may gain root privileges
+ADMIN ALL=(ALL) ALL
+
+# The WINDOWS_USERS may run WINDOWS programs as user windows without a password
+WINDOWS_USERS ALL = (windows) NOPASSWD: WINDOWS</programlisting>
+
+ <para>The result of these changes is the users named in the
+ <emphasis>User_Alias</emphasis> section are permitted to run
+ the programs listed in the
+ <emphasis>Cmnd<subscript>Alias</subscript></emphasis> section
+ using the resources listed in the
+ <emphasis>Defaults</emphasis> section (the current display) as
+ if they were the user listed in the final line of the file.
+ In other words, users designates as
+ <emphasis>WINDOWS_USERS</emphasis> can run the
+ <application>wine</application> and
+ <application>winecfg</application> applications as user
+ <emphasis>windows</emphasis>. As a bonus, the configuration
+ here means they will not be required to enter the password for
+ the <emphasis>windows</emphasis> user.</para>
+
+ <para>Next provide access to the display back to the
+ <emphasis>windows</emphasis> user, as whom the WINE programs
+ will be running:</para>
+
+ <screen>&prompt.user; <userinput>xhost +local:windows</userinput></screen>
+
+ <para>This should be added to the list of commands run either at
+ login or when the default graphical environment starts. Once
+ all the above are complete, a user configured as one of the
+ <literal>WINDOW_USERS</literal> in
+ <filename>sudoers</filename> can run programs using the
+ shared prefix with the following command:</para>
+
+ <para>it is worth noting that multiple users accessing this
+ shared environment at the same time is still risky. However,
+ consider also that the shared environment can itself contain
+ multiple prefixes. In this way an administrator can create a
+ tested and verified set of programs, each with its own prefix.
+ At the same time, one user can play a game while another works
+ with office programs without the need for redundant software
+ installations.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 xml:id="wine-on-os-faq">
+ <title>WINE on &os; FAQ</title>
+
+ <para>The following section describes some frequently asked
+ questions, tips/tricks, or common issues in running WINE on
+ &os;, along with their respective answers.</para>
+
+ <sect2 xml:id="basic-installation-and-usage">
+ <title>Basic Installation and Usage</title>
+
+ <sect3
+ xml:id="how-to-install-32-bit-and-64-bit-wine-on-the-same-system">
+ <title>How to Install 32-bit and 64-bit WINE on the Same
+ System?</title>
+
+ <para>As described earlier in this section, the
+ <application>wine</application> and
+ <application>i386-wine</application> packages conflict with
+ one another, and therefore cannot be installed on the same
+ system in the normal way. However, multiple installs can be
+ achieved using mechanisms like chroots/jails, or by building
+ WINE from source (note this does <emphasis>not</emphasis>
+ mean building the port).</para>
+ </sect3>
+
+ <sect3 xml:id="can-dos-programs-be-run-on-wine">
+ <title>Can DOS Programs Be Run on WINE?</title>
+
+ <para>They can, as &quot;Console User Interface&quot;
+ applications as mentioned eariler in this section. However,
+ there is an arguably better method for running DOS software:
+ <application>DOSBox</application>. On the other hand,
+ there's little reason not to at least try it. Simply create
+ a new prefix, install the software, and if it does not work
+ delete the prefix.</para>
+ </sect3>
+
+ <sect3
+ xml:id="should-the-wine-devel-packageport-be-installed-to-use-the-development-version-of-wine-instead-of-stable">
+ <title>Should the &quot;wine-devel&quot; Package/Port be
+ Installed to Use the Development Version of WINE Instead of
+ Stable?</title>
+
+ <para>Yes, installing this version will install the
+ &quot;development&quot; version of WINE. As with the 32-
+ and 64-bit versions, they cannot be installed together with
+ the stable versions unless additional measures are
+ taken.</para>
+
+ <para>Note that WINE also has a &quot;Staging&quot; version,
+ which contains the most recent updates. This was at one
+ time available as a &os; port; however, it has since been
+ removed. It can be compiled directly from source
+ however.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 xml:id="install-optimization">
+ <title>Install Optimization</title>
+
+ <sect3
+ xml:id="how-should-windows-hardware-graphics-drivers-be-handled">
+ <title>How Should &windows; Hardware (e.g., Graphics) Drivers
+ be Handled?</title>
+
+ <para>Operating system drivers transfer commands between
+ applications and hardware. WINE emulates a &windows;
+ environment, including the drivers, which in turn use
+ &os;'s native drivers for this transfer. it is not advisable
+ to install &windows; drivers, as the WINE system is designed
+ to use the host systems drivers. If, for example,
+ a graphics card that benefits from dedicated drivers,
+ install them using the standard &os; methods, not &windows;
+ installers.</para>
+ </sect3>
+
+ <sect3 xml:id="is-there-a-way-to-make-windows-fonts-look-better">
+ <title>Is There a way to Make &windows; Fonts Look
+ Better?</title>
+
+ <para>A user on the &os; forums suggests this configuration to
+ fix out-of-the-box look of WINE fonts, which can be slightly
+ pixelated.</para>
+
+ <para>According to <link
+ xlink:href="https://forums.freebsd.org/threads/make-wine-ui-fonts-look-good.68273/">a
+ post in the FreeBSD Forums</link>, adding the following to
+ <filename>.config/fontconfig/fonts.conf</filename>
+ will add anti-aliasing and make text more readable.</para>
+
+ <programlisting>&lt;?xml version="1.0"?&gt;
+&lt;!DOCTYPE fontconfig SYSTEM "fonts.dtd&gt;"
+
+&lt;fontconfig&gt;
+
+ &lt;!-- antialias all fonts --&gt;
+ &lt;match target="font"&gt;
+ &lt;edit name="antialias" mode="assign"&gt;&lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;&gt;
+ &lt;edit name="hinting" mode="assign"&gt;&lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;&gt;
+ &lt;edit name="hintstyle" mode="assign"&gt;&lt;const&gt;hintslight&lt;/const&gt;&lt;/edit&gt;&gt;
+ &lt;edit name="rgba" mode="assign"&gt;&lt;const&gt;rgb&lt;/const&gt;&lt;/edit&gt;&gt;
+ &lt;/match&gt;
+&lt;/fontconfig&gt;</programlisting>
+ </sect3>
+
+ <sect3
+ xml:id="does-having-windows-installed-elsewhere-on-a-system-help-wine-operate">
+ <title>Does Having &windows; Installed Elsewhere on a System
+ Help WINE Operate?</title>
+
+ <para>It may, depending on the application being run. As
+ mentioned in the section describing
+ <application>winecfg</application>, some built-in WINE DLLs
+ and other libraries can be overridden by providing a path to
+ an alternate version. Provided the &windows; partition or
+ drive is mounted to the &os; system and accessible to the
+ user, configuring some of these overrides will use native
+ &windows; libraries and may decrease the chance of
+ unexpected behavior.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 xml:id="application-specific">
+ <title>Application-Specific</title>
+
+ <sect3
+ xml:id="where-is-the-best-place-to-see-if-application-x-works-on-wine">
+ <title>Where is the Best Place to see if Application X Works on
+ WINE?</title>
+
+ <para>The first stop in determining compatibiliy should be the
+ <link xlink:href="https://appdb.winehq.org/">WINE
+ AppDB</link>. This is a compilation of reports of
+ programs working (or not) on all supported platforms,
+ although (as previously mentioned), solutions for one
+ platform are often applicable to others.</para>
+ </sect3>
+
+ <sect3
+ xml:id="is-there-anything-that-will-help-games-run-better">
+ <title>Is There Anything That Will Help Games Run
+ Better?</title>
+
+ <para>Perhaps. Many &windows; games rely on DirectX, a
+ proprietary Microsoft graphics layer. However there are
+ projects in the open source community attempting to implement
+ support for this technology.</para>
+
+ <para>The <emphasis>dxvk</emphasis> project, which is an attempt
+ to implement DirectX using the &os;-compatible Vulkan graphics
+ sub-system, is one such. Although its primary target is WINE
+ on Linux, <link
+ xlink:href="https://forums.freebsd.org/threads/what-about-gaming-on-freebsd.723/page-9">some
+ &os; users report</link> compiling and using dxvk.</para>
+
+ <para>In addition, work is under way on a
+ <application>wine-proton</application> <link
+ xlink:href="https://www.freshports.org/emulators/wine-proton/">port</link>.
+ This will bring the work of Valve, developer of the Steam
+ gaming platform, to &os;. Proton is a distribution of WINE
+ designed to allow many &windows; games to run on other
+ operating systems with minimal setup.</para>
+ </sect3>
+
+ <sect3
+ xml:id="is-there-anywhere-freebsd-wine-users-gather-to-exchange-tips-and-tricks">
+ <title>Is There Anywhere FreeBSD WINE Users Gather to Exchange
+ Tips and Tricks?</title>
+
+ <para>There are plenty of places FreeBSD users discuss issues
+ related to WINE that can be searched for solutions:</para>
+
+ <itemizedlist>
+ <listitem><para><link
+ xlink:href="https://forums.freebsd.org/">The &os;
+ forums</link>, particularly the <emphasis>Installation and
+ Maintenance of Ports or Packages</emphasis> or
+ <emphasis>Emulation and virtualization</emphasis>
+ forums.</para>
+ </listitem>
+
+ <listitem>
+ <para><link
+ xlink:href="https://wiki.freebsd.org/IRC/Channels">&os;
+ IRC channels</link> including #freebsd (for general
+ support), #freebsd-games, and others.</para>
+ </listitem>
+
+ <listitem>
+ <para><link xlink:href="https://discord.gg/2CCuhCt">The
+ BSD World Discord server's</link> channels including
+ <emphasis>bsd-desktop</emphasis>,
+ <emphasis>bsd-gaming</emphasis>,
+ <emphasis>bsd-wine</emphasis>, and others.</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+ </sect2>
+
+ <sect2 xml:id="other-os-resources">
+ <title>Other OS Resources</title>
+
+ <para>There are a number of resources focused on other
+ operating systems that may be useful for &os; users:</para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para><link xlink:href="https://wiki.winehq.org/">The WINE
+ Wiki</link> has a wealth of information on using WINE,
+ much of which is applicable across many of WINE's
+ supported operating systems.</para>
+ </listitem>
+
+ <listitem>
+ <para>Similarly, the documentation available from other OS
+ projects can also be of good value. <link
+ xlink:href="https://wiki.archlinux.org/index.php/wine">The
+ WINE page</link> on the Arch Linux Wiki is a
+ particularly good example, although some of the
+ &quot;Third-party applications&quot; (i.e.,
+ &quot;companion applications&quot;) are obviously not
+ available on &os;.</para>
+ </listitem>
+
+ <listitem>
+ <para>Finally, Codeweavers (a developer of a commercial
+ version of WINE) is an active upstream contributor.
+ Oftentimes answers to questions in <link
+ xlink:href="https://www.codeweavers.com/support/forums">their
+ support forum</link> can be of aid in troubleshooting
+ problems with the open source version of WINE.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ </sect1>
+ </chapter>