.\" -*- nroff -*-
.TH WINE 1 "Aug 5, 2001" "Version 20010731" "Windows On Unix"
.SH NAME
wine \- run Windows programs on Unix
.SH SYNOPSIS
.BI "wine " "[wine_options] " "[--] " "program " "[arguments ... ]"
.PP
For instructions on passing arguments to Windows programs, please see the 
.B
PROGRAM/ARGUMENTS
section of the man page.
.SH DESCRIPTION
.B wine
.I program
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
.I program
instead.
.PP
.B wine 
currently runs a growing list of applications written for all kinds of
Windows versions >= Win2.0, e.g. Win3.1, Win95/98, NT.
Older, simpler applications work better than newer, more complex ones.
Using Windows ME or Win2000 components with Wine is more problematic than
using none at all or the ones from older Windows versions.
A large percentage of the API has been implemented,
although there are still several major pieces of work left to do.
.SH REQUIREMENTS AND INSTALLATION
Read the README file in the Wine source distribution to know what Wine
requires and how it is installed from source.
.SH OPTIONS
.TP
.I --debugmsg [xxx]#name[,[xxx1]#name1][,<+|->relay=yyy1[:yyy2]]
Turn debugging messages on or off.  
.RS +7
.PP
xxx is optional and can be one of the following: 
.I err, 
.I warn, 
.I fixme, 
or 
.I trace. 
If xxx is not specified, all debugging messages for the specified
channel are turned on.  Each channel will print messages about a particular
component of 
.B wine.  
# is required and can be either + or -.  Note that 
there is not a space after the comma between names. yyy are either the
name of a whole DLL or a single API entry by name you either
want to include or exclude from the relay listing.  Case doesn't matter
for these.  You can do the same for snoop.
.PP
For instance:
.PP
.I --debugmsg warn+all
will turn on all warning messages (recommended for debugging)
.br
.I --debugmsg warn+dll,+heap
will turn on DLL warning messages and all heap messages.  
.br
.I --debugmsg 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 
.I --debugmsg -relay=rtlleavecriticalsection:RtlEnterCriticalSection
will turn on all relay messages except for RtlLeaveCriticalSection and
RtlEnterCriticalSection.
.br 
.I --debugmsg +relay=advapi32
will only turn on relay messages into the ADVAPI32 code.
.PP
The full list of names is:
all, accel, advapi, animate, aspi, atom, avifile, bitblt, bitmap, caret,
cdrom, class, clipboard, clipping, combo, comboex, comm, commctrl, commdlg,
console, crtdll, cursor, datetime, dc, ddeml, ddraw, debug, debugstr,
delayhlp, dialog, dinput, dll, dosfs, dosmem, dplay, driver, dsound, edit,
elfdll, enhmetafile, event, exec, file, fixup, font, gdi, global, graphics,
header, heap, hook, hotkey, icmp, icon, imagehlp, imagelist, imm, int, int10,
int16, int17, int19, int21, int31, io, ipaddress, joystick, key, keyboard,
ldt, listbox, listview, local, mci, mcianim, mciavi, mcicda, mcimidi,
mciwave, mdi, menu, message, metafile, midi, mmaux, mmio, mmsys, mmtime,
module, monthcal, mpr, msacm, msg, msvideo, nativefont, nonclient, ntdll,
odbc, ole, pager, palette, pidl, print, process, profile, progress, prop,
propsheet, psapi, psdrv, ras, rebar, reg, region, relay, resource, scroll,
segment, seh, selector, sendmsg, server, setupx, shell, snoop, sound,
static, statusbar, storage, stress, string, syscolor, system, tab, tape,
tapi, task, text, thread, thunk, timer, toolbar, toolhelp, tooltips,
trackbar, treeview, ttydrv, tweak, typelib, updown, ver, virtual, vxd, wave,
win, win16drv, win32, winedbg, wing, winsock, winspool, wnet, x11 and x11drv.

.PP
For more information on debugging messages, see the file 
.I documentation/debug-msgs
in the source distribution (FIXME: outdated).
.RE
.TP
.I --dll name[,name[,...]]={native|so|builtin}[,{n|s|b}[,...]]
Selects the override type and load order of dll used in the loading
process for any dll. The default is set in the configuration
file. There are currently three types of libraries that can be loaded
into a process' address space: Native windows dlls (
.I native
), native ELF libraries (
.I so
)and 
.B wine 
internal dlls (
.I builtin
). The type may be abbreviated with the first letter of the type (
.I n, s, b
). Each sequence of orders must be separated by commas.
.br
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 the --dll option several times, to
specify different loadorders for different libraries
.br
Examples:
.br
.I --dll comdlg32,commdlg=n,b
.br
Try to load comdlg32 and commdlg as native windows dll first and try
the builtin version if the native load fails.
.br
.I --dll shell,shell32=n --dll c:\(rs\(rsfoo\(rs\(rsbar\(rs\(rsbaz=b
.br
Try to load the libraries shell and shell32 as native windows dlls. Furthermore, if 
an application request to load c:\(rsfoo\(rsbar\(rsbaz.dll load the builtin library baz. 
.br
.I --dll comdlg32,commdlg=b,n --dll shell,shell32=b --dll comctl32,commctrl=n
.br
Try to load comdlg32 and commdlg as builtin first and try the native version
if the builtin load fails; load shell32/shell always as builtin and
comctl32/commctrl always as native.
.br
Note: It is wise to keep dll pairs (comdlg32/commdlg, shell/shell32, etc.)
having exactly the same load order. This will prevent mismatches at runtime.
See also configuration file format below.
.TP
.I --dosver version
Specify the DOS version 
.B wine 
should imitate (e.g. 6.22) This option
is only valid when used in conjunction with --winver win31.
.TP
.I --managed
Create each top-level window as a properly managed X window instead of
creating our own "sticky" window.
.TP
.I --winver version
Specify which Windows version 
.B wine 
should imitate.
Possible arguments are: win95, nt40, win31, win2000, win98, nt351, win30
and win20.
.PD 1
.SH PROGRAM/ARGUMENTS
The program name may be specified in DOS format (
.I
C:\(rs\(rsWINDOWS\(rs\(rsSOL.EXE)
or in Unix format (
.I /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
Command line processing goes as
follows: first 
.B wine
checks whether one or more of the above mentioned 
.B wine 
options have been specified. These
are removed from the command line, which is passed to the windows program. You can use
the parameter 
.I -- 
to indicate that 
.B wine 
should stop command line processing. This is needed in case a windows program understands 
an option that is usually interpreted (and thus removed from the command line) 
by 
.B wine. 
For example, if you want to execute 
.B wine 
with the options 
.I --managed --dll riched32=n
and if 
.B wine 
should run the program 
.I myapp.exe
with the arguments
.I --display 3d somefile
, then you could use the following command line to invoke 
.B wine:
.PP
.I wine --managed --dll riched32=n -- myapp.exe --display 3d somefile
.PP 
Note that in contrast to previous versions of 
.B wine, 
you must not pass 
program name and program option in one argument to 
.B wine. 
To run more
than one windows program, just execute 
.B wine 
once with the name of each program as argument. 
.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 
.I $HOME/.wine
). This directory contains also the socket, which is used to communicate with the
.I 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 WINEPRELOAD
If set, specifies the full name of a shared library that
.B wine
loads and runs as a Winelib application.
.TP
.I WINESERVER
Specifies the path and name of the
.B wineserver
binary. If not set, a file named "wineserver" is searched 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, a binary
named "wine" is searched in the path and in a few other likely
locations.
.TP
.I WINEDLLPATH
Specifies the path(s) in which to search for builtin dll files. This
is a list of directories separated by ":". Builtin dlls are also
searched in the directories specified by the standard
.I LD_LIBRARY_PATH
if they are not found in the directories listed in
.I WINEDLLPATH.
.TP
.I DISPLAY
Specifies the X11 display to use.
.SH CONFIGURATION FILE
.B wine
expects a configuration file (
.I $WINEPREFIX/config
(~/.wine/config)
), which must conform to the format specified in the
.BR wine.conf (5)
man page. A sample configuration file is documentation/samples/config in the 
.B wine 
source archive.
.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 X11 license. A copy of the
license is in the file
.B LICENSE
in the top-level directory of the source distribution.
.SH BUGS
.PP
A status report on many applications is available from
.I http://www.winehq.com/Apps.
Please add entries to this list for applications you currently run.
.PP
Bug reports and successes may be posted to 
.I comp.emulators.ms-windows.wine.
If you want to post a bug report, please read the file
.I documentation/bugreports
in the 
.B wine 
source to see what information is necessary (FIXME: outdated).
.PP
For problems and suggestions with this manpage, please send a note to
James Juran <jrj120@psu.edu>.
.SH AVAILABILITY
The most recent public version of 
.B wine
can be obtained via FTP from ibiblio.org in the
/pub/Linux/ALPHA/Wine/development directory.  The releases are in the
format 'Wine-yyyymmdd.tar.gz', or 'Wine-yyyymmdd.diff.gz' for the
diff's from the previous release. The same directory holds the
pre-built contents of the documentation in various formats
(wine-doc.xxx.gz).
.PP
The latest snapshot of the code may be obtained via CVS.  For information
on how to do this, please see
.I
http://www.winehq.com/dev.html
.PP
WineHQ, the
.B wine
development headquarters, is at
.I http://www.winehq.com/.
This website contains a great deal of information about
.B wine.
.PP
The
.B wine 
newsgroup is 
.I comp.emulators.ms-windows.wine.
It is used for discussion of various 
.B wine end user aspects/help.
.PP
For further information about 
.B wine
development, you might want to subscribe to the 
.B wine 
"cvs", "devel" and "patches" mailing lists at
.I http://www.winehq.com/dev.html#ml.
.SH FILES
.PD 0
.TP
.I @prefix@/bin/wine
The 
.B wine 
program loader.
.TP
.I @prefix@/bin/dosmod
The DOS program loader.
.TP
.I @prefix@/bin/wineserver
The 
.B wine 
server 
.TP 
.I @prefix@/bin/winedbg
The 
.B wine 
debugger
.TP 
.I @prefix@/bin/wineclpsrv
The 
.B wine 
clipboard server
.TP 
.I @prefix@/lib/
Directory containing 
.B wine's
shared libraries 
.TP
.I ~/.wine/config
User-specific configuration file
.TP 
.I ~/.wine
Directory containing user specific data managed by 
.B wine. 

.SH "SEE ALSO"
.BR wine.conf (5)
