Copyright 1999 Adam Sacarny (magicbox@bestweb.net)
1. WHAT IS THE WINE CONFIG FILE?

The Wine config file stores various settings for Wine. These include:
	Drives and Information about them
	Directory Settings
	Port Settings
	The Wine look and feel
	Wine's DLL Usage

2. HOW DO I MAKE ONE?

This section will guide you through the process of making a config file. Take a
look at the file <dirs to wine>/wine.ini
It is organized by section.


     Name        | Needed? | What it does
----------------------------------------------------------------
[Drive X]        | yes     | Sets up drives recognized by wine
[wine]           | yes     | Settings for wine directories
[DllDefaults]    | recmd   | Defaults for loading DLL's
[DllPairs]       | recmd   | Sanity checkers for DLL's
[DllOverrides]   | recmd   | Overides defaults for DLL loading
[options]        | no      | No one seems to know
[fonts]          | yes     | Font appearance and recognition
[serialports]    | no      | COM ports seen by wine
[parallelports]  | no      | LPT ports seen by wine
[spooler]        | no      | Print spooling
[ports]          | no      | Direct port access
[spy]            | no      | What to do with certain debug messages
[Registry]       | no      | Specifies locations of windows registry files
[tweak.layout]   | recmd   | Appearance of wine
[programs]       | no      | Programs to be run automatically
[Console]        | no      | Console settings
Recmd-Recommended
2.1 THE [Drive X] SECTION
It should be pretty self explanatory, but here is an in-depth tutorial about
them.
There are up to 6 lines for each drive in Wine.

[Drive X]

The above line begins the section for a drive whose letter is X. 

Path=/dir/to/path

This path is where the drive will begin. When Wine is browsing in drive X, it
will see the files that are in the directory "/dir/to/path". Don't forget to
leave off the trailing slash!

Type=floppy|hd|cdrom|network <--- the |'s mean Type=<one of the options>

Sets up the type of drive Wine will see it as. Type must equal one of the four
"floppy", "hd", "cdrom", or "network". They are self-explanatory.

Label=blah

Defines the drive label. Generally only needed for programs that look for a
special CD-ROM. Info on finding the lable is in <dirs to
wine>/documentation/cdrom-labels. The label may be up to 11 characters.

Serial=deadbeef

Tells Wine the serial number of the drive. A few programs with intense
protection for pirating might need this, but otherwise don't use it. Up to 8
characters and hexadecimal.

Filesystem=msdos|win95|unix

Sets up the way Wine looks at files on the drive.

	msdos -> Case insensitive filesystem. Alike to DOS and Windows 3.x.
	8.3 is the maximum length of files (eightdot.123) - longer ones will be
	truncated. (NOTE: this is a very bad choice if you plan on running apps
	that use long filenames. win95 should work fine with apps that were
	designed to run under the msdos system. In other words, you might not
	want to use this.)
	
	win95 -> Case insensitive. Alike to Windows 9x/NT 4. This is the long
	filename filesystem you are probably used to working with. The
	filesystem of choice for most applications to be run under wine. 
	PROBABLY THE ONE YOU WANT
	
	unix  -> Case sensitive. This filesystem has almost no use (Windows apps
	expect case insensitive filenames). Try it if you dare, but win95 is a 
	much better choice.

Device=/dev/xx

Use this ONLY for floppy and cdrom devices. Using it on Extended2 partitions can
have dire results (When a windows app tries to do a lowlevel write, they do it
in a FAT way -- FAT does not mix with Extended2). Currently, it is useless when
used on cdrom's, however functionality could be implemented later to allow wine
to automatically find the cdrom label.
NOTE: This setting is not terribly important, almost all apps will have no
problem if it remains unspecified. If you are unsure about specifying device
names, just leave out this setting for your drives.

Here is a setup for Drive X, a generic hard drive:
[Drive X]
Path=/dos-a
Type=hd
Label=Hard Drive
Filesystem=win95
This is a setup for Drive X, a generic CD-ROM drive:
[Drive X]
Path=/dos-d
Type=cdrom
Label=Total Annihilation
Filesystem=win95
Device=/dev/hdc
And here is a setup for Drive X, a generic floppy drive:
[Drive X]
Type=floppy
Path=/mnt/floppy
Label=Floppy Drive
Serial=87654321
Filesystem=win95
Device=/dev/fd0

2.2 THE [wine] SECTION 

The [wine] section of the configuration file contains information wine uses for
directories. When specifying the directories for the settings, make them as they
would appear in wine. If your drive C has a Path of /dos, and your windows
directory is located in /dos/windows, Windows=c:\windows.

Windows=c:\windows

Sets up the windows directory. Make one if you don't have windows. NO TRAILING
SLASH (NOT C:\windows\)!

System=c:\windows\system

Sets up where the windows system files are. Should reside in the directory used
for the "Windows" setting. If you don't have windows then this is where the
system files will go. NO TRAILING SLASH!

Temp=c:\temp

This should be the directory you want your temp files stored in. YOU MUST HAVE
WRITE ACCESS TO IT.

Path=c:\windows;c:\windows\system;c:\blanco

Behaves like the PATH setting on unix boxes. When wine is run like "wine
sol.exe", if sol.exe resides in a directory specified in the "Path" setting,
wine will run it (Of course, if sol.exe resides in the current directory, wine
will run that one). Make sure it always has your windows directory and system
directory (For this setup, it must have c:\windows;c:\windows\system).

SymbolTableFile=wine.sym

Sets up the symbol table file for the wine debugger. You probably don't need to
fiddle with this. May be useful if your wine is stripped.

printer=off|on

Tells wine whether to allow printer drivers and printing to work. Using these
things are pretty alpha, so you might want to watch out. Some people might find
it useful, however. If you're not planning on working on printing, don't even
add this to your wine.ini (It probably isn't already in it). Check out the
[spooler] and [parallelports] sections too.

2.3 INTRODUCTION TO DLL SECTIONS

There are a few things you will need to know before configuring the DLL sections
in your wine configuration file.

	2.3.1 WINDOWS DLL PAIRS
	
	Most windows DLL's have a win16 (Windows 3.x) and win32 (Windows 9x/NT)
	form.  The combination of the win16 and win32 DLL versions are called
	the "DLL pair". This is a list of the most common pairs:
	   Win16   |   Win32   | Native* 
	-----------------------------
	KERNEL     | KERNEL32  | No!
	USER       | USER32    | No!
	SHELL      | SHELL32   | Yes
	GDI        | GDI32     | No!
	COMMDLG    | COMDLG32  | Yes
	VER        | VERSION   | Yes
	*-Is it possible to use native dll with wine?(See next section)

	2.3.2 DIFFERENT FORMS OF DLL'S
	
	There are a few different forms of DLL's wine can load:
		native -> The DLL's that are included with windows. Many windows
		DLL's can be loaded in their native form. Many times these
		native versions work better than their non-Microsoft equivalent
		-- other times they don't.
		elfdll -> ELF encapsulated windows DLL's. This is currently
		experimental (Not working yet).
		so -> Native ELF libraries. Will not work yet.
		builtin -> The most common form of DLL loading. This is what you
		will use if the DLL is error-prone in native form (KERNEL for
		example), you don't have the native DLL, or you just want to be
		Microsoft-free.
	
2.4 THE [DllDefaults] SECTION

These settings provide wine's default handling of DLL loading.

EXTRA_LD_LIBRARY_PATH=/dirs

The directory specified here is appended to the normal search path for certain
forms of DLL's (elfdll and .so).

DefaultLoadOrder = native, elfdll, so, builtin

This setting is a comma-delimited list of which order to attempt loading DLL's.
If the first option fails, it will try the second, and so on. The order
specified above is probably the best in most conditions.

2.5 THE [DllPairs] SECTION

This section is optional, but strongly recommended. If you try to use native
SHELL32, but builtin SHELL, you could have some big problems (native and
builtin/so/elfdll do certain things in different ways). Using different forms of
a pair is a *very*, **very** bad idea. By specifying DLL pairs here, wine will
print out a message if you use different forms of a pair.
You shouldn't need to change anything in this section, the following should work
fine in all cases:

[DllPairs]
kernel	= kernel32
gdi	= gdi32
user	= user32
commdlg	= comdlg32
commctrl= comctl32
ver	= version
shell	= shell32
lzexpand= lz32
winsock	= wsock32

2.6 THE [DllOverrides] SECTION

The format for this section is the same for each line:

<DLL>{,<DLL>,<DLL>...} = <FORM>{,<FORM>,<FORM>...}

For example, to load builtin KERNEL pair (Case doesn't matter here):

kernel,kernel32 = builtin

To load the native COMMDLG pair, but if that doesn't work try builtin:

commdlg,comdlg32 = native,builtin

To load the native COMCTL32:

comctl32 = native

Here is a good generic setup (As it is defined in wine.ini that was included
with your wine package):

[DllOverrides]
kernel32, gdi32, user32	= builtin
kernel, gdi, user	= builtin
toolhelp		= builtin
comdlg32, commdlg	= elfdll, builtin, native
version, ver		= elfdll, builtin, native
shell32, shell		= builtin, native
lz32, lzexpand		= builtin, native
commctrl, comctl32	= builtin, native
wsock32, winsock	= builtin
advapi32, crtdll, ntdll	= builtin, native
mpr, winspool		= builtin, native
ddraw, dinput, dsound	= builtin, native
winmm, w32skrnl, msvfw32= builtin
wnaspi32, wow32		= builtin
system, display, wprocs	= builtin
wineps			= builtin

NOTE: You see that elfdll or so is the first option for a few of these dll's.
This will fail for you, but you won't notice it as wine will just use the second
or third option.

2.7 THE [options] SECTION

No one seems to know what this section is...

AllocSystemColors=100

System colors to allocate? Just leave it at 100.

2.8 THE [fonts] SECTION

This section sets up wine's font handling.

Resolution = 96

Since the way X handles fonts is different from the way Windows does, wine uses
a special mechanism to deal with them. It must scale them using the number
defined in the "Resolution" setting. 60-120 are reasonable values, 96 is a nice
in the middle one. If you have the real windows fonts available (<dirs to
wine>/documentation/ttfserver and fonts), this parameter will not be as
important. Of course, it's always good to get your X fonts working acceptably in
wine.

Default = -adobe-times-

The default font wine uses. Fool around with it if you'd like.

OPTIONAL: 

The "Alias" setting allows you to map an X font to a font used in wine. This is
good for apps that need a special font you don't have, but a good replacement
exists. The syntax is like so:

AliasX = [Fake windows name],[Real X name]<,optional "masking" section>

Pretty straightforward. Replace "AliasX" with "Alias0", then "Alias1" and so on.
The fake windows name is the name that the font will be under a windows app in
wine. The real X name is the font name as seen by X (Run "xfontsel").
The optional "masking" section allows you to utilize the fake windows name you
define. If it is not used, then wine will just try to extract the fake windows
name itself and not use the value you enter.

Here is an example of an alias without masking. The font will show up in windows
apps as "Google". When defining an alias in a config file, forget about my
comment text (The "<-- blah" stuff)

Alias0 = Foo,--google-      <-- Note the no spaces after the " = ". Important!

Here is an example with masking enabled. The font will show up as "Foo" in
windows apps.

Alias1 = Foo,--google-,subst 

For more info check out <dirs to wine>/documentation/fonts

2.9 THE [serialports], [parallelports], [spooler], AND [ports] SECTIONS

Even though it sounds like a lot of sections, these are all closely related.
They all are for communications and parallel ports. 

The [serialports] section tells wine what serial ports it is allowed to use.

ComX=/dev/cuaY

Replace X with the number of the COM port in Windows (1-8) and Y with the
number of it in X (Usually the number of the port in Windows minus 1). ComX can
actually equal any device (/dev/modem is acceptable). It is not always necessary
to define any COM ports (An optional setting). Here is an example:

Com1=/dev/cua0

Use as many of these as you like in the section to define all of the COM ports
you need.

The [parallelports] section sets up any parallel ports that will be allowed
access under wine.

LptX=/dev/lpY

Seem farmiliar? Syntax is just like the COM port setting. Replace X with a value
from 1-4 as it is in Windows and Y with a value from 0-3 (Y is usually the value
in windows minus 1, just like for COM ports). You don't always need to define a
parallel port (AKA, it's optional). As with the other section, LptX can equal 
any device (Maybe /dev/printer). Here is an example:

Lpt1=/dev/lp0

The [spooler] section will inform wine where to spool print jobs. Use this if
you want to try printing. Wine docs claim that spooling is "rather primitive" at
this time, so it won't work perfectly. IT IS OPTIONAL
The only setting you use in this section works to map a port (LPT1, for example)
to a file or a command. Here is an example, mapping LPT1 to the file "out.ps":

LPT1:=out.ps

The following command maps printing jobs to LPT1 to the command "lpr". Notice 
the |:

LPT1:=|lpr

The [ports] section is usually useful only for people who need direct port
access for programs requiring dongles or scanners. IF YOU DON'T NEED IT, DON'T
USE IT! 

read=0x779,0x379,0x280-0x2a0

Gives direct read access to those IO's.

write=0x779,0x379,0x280-0x2a0 

Gives direct write access to those IO's. It probably a good idea to keep the
values of the "read" and "write" settings the same. This stuff will only work 
when you're root.

2.10 THE [spy], [Registry], [tweak.layout], and [programs] SECTIONS

[spy] is used to Include or exclude debug messages, and to output them to a
file. The latter is rarely used. THESE ARE ALL OPTIONAL AND YOU PROBABLY DON'T
NEED TO ADD OR REMOVE ANYTHING IN THIS SECTION TO YOUR CONFIG.

File=/blanco

Sets the logfile for wine. Set to CON to log to standard out. THIS IS RARELY
USED

Exclude=WM_SIZE;WM_TIMER;

Excludes debug messages about WM_SIZE and WM_TIMER in the logfile.

Include=WM_SIZE;WM_TIMER;

Includes debug messages about WM_SIZE and WM_TIMER in the logfile.

[Registry] can be used to tell wine where your old windows registry files exist. This
section is completely optional and useless to people using wine without an existing
windows installation.

UserFileName=/dirs/to/user.reg

The location of your old user.reg file.

LocalMachineFileName=/dirs/to/system.reg

The location of your old system.reg file.

[tweak.layout] is devoted to wine's look. There is only one setting for it.

WineLook=win31|win95|win98

Will change the look of wine from Windows 3.1 to Windows 95. "win98" behaves
just like "win95" most of the time.

[programs] can be used to say what programs run under special conditions.

Default=/program/to/execute.exe

Sets the program to be run if wine is started without specifying a program.

Startup=/program/to/execute.exe

Sets the program to automatically be run at startup every time.

3. WHERE DO I PUT IT?

The wine config file can go in two places. 

	/usr/local/etc/wine.conf <--- A systemwide config file, used for anyone
	who doesn't have their own.
	$HOME/.winerc <--- Your own config file, that only is used for your
	user. 

So copy the file you made to be the wine.conf to /usr/local/etc/wine.conf or 
$HOME/.winerc for wine to recognize it. 

4. WHAT IF IT DOESN'T WORK?

There is always a chance that things will go wrong. If the unthinkable happens, 
try the newsgroup, comp.emulators.ms-windows.wine
Make sure that you have looked over this document thoroughly, and have also
read:
README
documentation/bugreports
http://www.westfalen.de/witch/wine-HOWTO.txt (Optional but recommended)
If indeed it looks like you've done your research, be prepared for helpful
suggestions. If you haven't, brace yourself for heaving flaming.

