.\" -*- nroff -*-
.TH WINE 1 "October 2005" "@PACKAGE_STRING@" "Windows On Unix"
.SH NAME
wine \- run Windows programs on Unix
.SH SYNOPSIS
.BI "wine " program
[arguments ... ]
.br
.B wine --help
.br
.B wine --version
.PP
For instructions on passing arguments to Windows programs, please see the
.B
PROGRAM/ARGUMENTS
section of the man page.
.SH DESCRIPTION
.B wine
loads and runs the given program, where the program is a DOS, Windows
3.x, or Win32 executable (x86 binaries only).
.PP
For debugging wine, use
.B winedbg
instead.
.PP
For running CUI executables (Windows console programs), use
.B wineconsole
instead of
.BR wine .
This will display all the output in a separate windows (this requires X11 to
run). Not using
.B wineconsole
for CUI programs will only provide very limited console support, and your
program might not function properly.
.PP
When invoked with
.B --help
or
.B --version
as the only argument,
.B wine
will simply print a small help message or its version respectively and exit.
.SH PROGRAM/ARGUMENTS
The program name may be specified in DOS format
.RI ( C:\(rs\(rsWINDOWS\(rs\(rsSOL.EXE )
or in Unix format
.RI ( /msdos/windows/sol.exe ).
You may pass arguments to the program being executed by adding them to the
end of the command line invoking
.B wine
(such as: wine notepad C:\(rs\(rsTEMP\(rs\(rsREADME.TXT).
Note that you need to '\(rs' escape special characters (and spaces) when invoking Wine via
a shell, e.g.
.PP
wine C:\(rs\(rsProgram\(rs Files\(rs\(rsMyPrg\(rs\(rstest.exe
.PP
.SH ENVIRONMENT VARIABLES
.B wine
makes the environment variables of the shell from which
.B wine
is started accessible to the windows/dos processes started. So use the
appropriate syntax for your shell to enter environment variables you need.
.TP 
.I WINEPREFIX
If set, the content of this variable is taken as the name of the directory where
.B wine
stores its data (the default is 
.IR $HOME/.wine ).
This directory is also used to identify the socket which is used to
communicate with the
.IR wineserver .
All 
.B wine
processes using the same 
.B wineserver
(i.e.: same user) share certain things like registry, shared memory,
and config file.
By setting 
.I WINEPREFIX
to different values for different 
.B wine
processes, it is possible to run a number of truly independent 
.B wine
processes. 
.TP
.I WINESERVER
Specifies the path and name of the
.B wineserver
binary. If not set, Wine will try to load
.BR @bindir@/wineserver ,
and if this doesn't exist it will then look for a file named
"wineserver" in the path and in a few other likely locations.
.TP
.I WINELOADER
Specifies the path and name of the
.B wine
binary to use to launch new Windows processes. If not set, Wine will
try to load
.BR @bindir@/wine ,
and if this doesn't exist it will then look for a file named "wine" in
the path and in a few other likely locations.
.TP
.I WINEDEBUG
Turns debugging messages on or off. The syntax of the variable is
of the form
.RI [ class ][+/-] channel [,[ class2 ][+/-] channel2 ].
.RS +7
.PP
.I class
is optional and can be one of the following: 
.BR err ,
.BR warn ,
.BR fixme ,
or 
.BR trace .
If
.I class
is not specified, all debugging messages for the specified
channel are turned on.  Each channel will print messages about a particular
component of 
.BR wine .
The following character can be either + or - to switch the specified
channel on or off respectively.  If there is no
.I class
part before it, a leading + can be omitted. Note that spaces are not
allowed anywhere in the string.
.PP
Examples:
.TP
WINEDEBUG=warn+all
will turn on all warning messages (recommended for debugging).
.br
.TP
WINEDEBUG=warn+dll,+heap
will turn on DLL warning messages and all heap messages.  
.br
.TP
WINEDEBUG=fixme-all,warn+cursor,+relay
will turn off all FIXME messages, turn on cursor warning messages, and turn
on all relay messages (API calls).
.br 
.TP
WINEDEBUG=relay
will turn on all relay messages. For more control on including or excluding
functions and dlls from the relay trace look into the [Debug] section
of the wine configuration file.
.PP
For more information on debugging messages, see the
.I Running Wine
chapter of the Wine User Guide.
.RE
.TP
.I WINEDLLPATH
Specifies the path(s) in which to search for builtin dlls and Winelib
applications. This is a list of directories separated by ":". In
addition to any directory specified in
.IR WINEDLLPATH ,
Wine will also look in
.BR @dlldir@ .
.TP
.I WINEDLLOVERRIDES
Defines the override type and load order of dlls used in the loading
process for any dll. The default is set in the configuration
file. There are currently two types of libraries that can be loaded
into a process' address space: native windows dlls
.RI ( native ),
.B wine 
internal dlls
.RI ( builtin ).
The type may be abbreviated with the first letter of the type
.RI ( n ", " b ).
The library may also be disabled (''). Each sequence of orders must be separated by commas.
.RS
.PP
Each dll may have its own specific load order. The load order
determines which version of the dll is attempted to be loaded into the
address space. If the first fails, then the next is tried and so
on. Multiple libraries with the same load order can be separated with
commas. It is also possible to use specify different loadorders for
different libraries by separating the entries by ";".
.PP
The load order for a 16-bit dll is always defined by the load order of
the 32-bit dll that contains it (which can be identified by looking at
the symbolic link of the 16-bit .dll.so file). For instance if
ole32.dll is configured as builtin, storage.dll will be loaded as
builtin too, since the 32-bit ole32.dll contains the 16-bit
storage.dll.
.PP
Examples:
.TP
WINEDLLOVERRIDES="comdlg32,shell32=n,b"
.br
Try to load comdlg32 and shell32 as native windows dll first and try
the builtin version if the native load fails.
.TP
WINEDLLOVERRIDES="comdlg32,shell32=n;c:\(rs\(rsfoo\(rs\(rsbar\(rs\(rsbaz=b"
.br
Try to load the libraries comdlg32 and shell32 as native windows dlls. Furthermore, if 
an application request to load c:\(rsfoo\(rsbar\(rsbaz.dll load the builtin library baz. 
.TP
WINEDLLOVERRIDES="comdlg32=b,n;shell32=b;comctl32=n;oleaut32="
.br
Try to load comdlg32 as builtin first and try the native version if
the builtin load fails; load shell32 always as builtin and comctl32
always as native. Oleaut32 will be disabled.
.RE
.TP
.I DISPLAY
Specifies the X11 display to use.
.TP
OSS sound driver configuration variables
.TP
.I AUDIODEV
Set the device for audio input / output. Default
.BR /dev/dsp .
.TP
.I MIXERDEV
Set the device for mixer controls. Default
.BR /dev/mixer .
.TP
.I MIDIDEV
Set the MIDI (sequencer) device. Default
.BR /dev/sequencer .
.SH FILES
.TP
.I @bindir@/wine
The 
.B wine 
program loader.
.TP
.I @bindir@/wineconsole
The 
.B wine 
program loader for CUI (console) applications.
.TP
.I @bindir@/wineserver
The 
.B wine 
server 
.TP 
.I @bindir@/winedbg
The 
.B wine 
debugger
.TP 
.I @dlldir@
Directory containing 
.BR wine 's
shared libraries 
.TP
.I $WINEPREFIX/dosdevices
Directory containing the DOS device mappings. Each file in that
directory is a symlink to the Unix device file implementing a given
device. For instance, if COM1 is mapped to /dev/ttyS0 you'd have a
symlink of the form $WINEPREFIX/dosdevices/com1 -> /dev/ttyS0.
.br
DOS drives are also specified with symlinks; for instance if drive D:
corresponds to the CDROM mounted at /mnt/cdrom, you'd have a symlink
$WINEPREFIX/dosdevices/d: -> /mnt/cdrom. The Unix device corresponding
to a DOS drive can be specified the same way, except with '::' instead
of ':'. So for the previous example, if the CDROM device is mounted
from /dev/hdc, the corresponding symlink would be
$WINEPREFIX/dosdevices/d:: -> /dev/hdc.
.SH AUTHORS
.B wine
is available thanks to the work of many developers. For a listing
of the authors, please see the file 
.B AUTHORS
in the top-level directory of the source distribution.
.SH COPYRIGHT
.B wine
can be distributed under the terms of the LGPL license. A copy of the
license is in the file
.B COPYING.LIB
in the top-level directory of the source distribution.
.SH BUGS
.PP
A status report on many applications is available from
.IR http://appdb.winehq.org .
Please add entries to this list for applications you currently run, if
there is no entry for this application.
.PP
Bug reports may be posted to Wine Bugzilla
.I http://bugs.winehq.org
If you want to post a bug report, please see
.I http://wiki.winehq.org/Bugs
in the 
.B wine 
source to see what information is necessary
.PP
Problems and suggestions with this manpage please also report to
.I http://bugs.winehq.org
.SH AVAILABILITY
The most recent public version of 
.B wine
can be downloaded from
.I http://www.winehq.org/download
.PP
The latest snapshot of the code may be obtained via GIT.  For information
on how to do this, please see
.I
http://www.winehq.org/site/git
.PP
WineHQ, the
.B wine
development headquarters, is at
.IR http://www.winehq.org .
This website contains a great deal of information about
.BR wine .
.PP
For further information about 
.B wine
development, you might want to subscribe to the 
.B wine 
mailing lists at
.I http://www.winehq.org/forums

.SH "SEE ALSO"
.BR wineserver (1),
.BR winedbg (1)
