  <chapter id="running">
    <title>Running Wine</title>

    <para>
      Written by &name-john-sheets; <email>&email-john-sheets;</email>
      Modified by &name-andreas-mohr; <email>&email-andreas-mohr;</email>
    </para>
    <para>
      Extended by &name-mike-hearn; <email>&email-mike-hearn;</email>, &name-eric-pouech; <email>&email-eric-pouech;</email>
      Modified by &name-andreas-mohr; <email>&email-andreas-mohr;</email>
    </para>

    <para>
      This chapter will describe all aspects of running Wine, like e.g.
      basic Wine invocation, command line parameters of various Wine
      support programs etc.
    </para>

    <para>
      This chapter will describe all aspects of running Wine, like e.g.
      basic Wine invocation, command line parameters of various Wine
      support programs etc.
    </para>

    <para>

    </para>

    <sect1 id="basic-usage">
      <title>Basic usage: applications and control panel applets</title>
      <para>
	Assuming you are using a fake Windows installation, you install
	applications into Wine in the same way you would in Windows: by
	running the installer. You can just accept the defaults for
	where to install, most installers will default to "C:\Program
	Files", which is fine. If the application installer requests it,
	you may find that Wine creates icons on your desktop and in your
	app menu. If that happens, you can start the app by clicking on
	them.
      </para>

      <para>
	The standard way to uninstall things is for the application to
	provide an uninstaller, usually registered with the "Add/Remove
	Programs" control panel applet.
	To access the Wine equivalent, run the <command>uninstaller</command>
	program (it is located in the
	<filename>programs/uninstaller/</filename> directory in a Wine
	source directory) in a <glossterm>terminal</glossterm>:
      </para>

      <screen>
        <prompt>$</prompt> <userinput>uninstaller</userinput>
      </screen>

      <para>
	Some programs install associated control panel applets, examples
	of this would be Internet Explorer and QuickTime. You can access
	the Wine control panel by running in a
	<glossterm>terminal</glossterm>:
      </para>

      <screen>
	 <prompt>$</prompt> <userinput>wine control</userinput>
      </screen>

      <para>
	which will open a window with the installed control panel
	applets in it, as in Windows.
      </para>

      <para>
	If the application doesn't install menu or desktop items, you'll
	need to run the app from the command line. Remembering where you
	installed to, something like:
      </para>

      <screen>
	 <prompt>$</prompt> <userinput>wine "c:\program files\appname\appname.exe"</userinput>
      </screen>

      <para>
	will probably do the trick. The path isn't case sensitive, but
	remember to include the double quotes.  Some programs don't
	always use obvious naming for their directories and EXE files,
	so you might have to look inside the program files directory to
	see what it put where.
      </para>
    </sect1>

    <sect1 id="running-wine">
      <title>How to run Wine</title>
      <para>
        Wine is a very complicated piece of software with many ways to
        adjust how it runs.  With very few exceptions, you can
        activate the same set of features through the <link
        linkend="config-file">configuration file</link> as you can
        with command-line parameters.  In this chapter, we'll briefly
        discuss these parameters, and match them up with their
        corresponding configuration variables.
      </para>

      <para>
        You can invoke the <command>wine --help</command> command to
        get a listing of all Wine's command-line parameters:
      </para>
      <para>
        <screen>
Usage: ./wine [options] program_name [arguments]

Options:
   --debugmsg name  Turn debugging-messages on or off
   --dll name       Enable or disable built-in DLLs
   --help,-h        Show this help message
   --version,-v     Display the Wine version
        </screen>
      </para>

      <para>
        You can specify as many options as you want, if any.
        Typically, you will want to have your configuration file set
        up with a sensible set of defaults; in this case, you can run
        <command>wine</command> without explicitly listing any
        options.  In rare cases, you might want to override certain
        parameters on the command line.
      </para>
      <para>
        After the options, you should put the name of the file you
        want <command>wine</command> to execute.  If the executable is
        in the <parameter>Path</parameter> parameter in the
        configuration file, you can simply give the executable file
        name.  However, if the executable is not in
        <parameter>Path</parameter>, you must give the full path to
        the executable (in Windows format, not UNIX format!).  For
        example, given a <parameter>Path</parameter> of the following:
      </para>
      <screen>
[wine]
"Path"="c:\\windows;c:\\windows\\system;e:\\;e:\\test;f:\\"
      </screen>
      <para>
        You could run the file
        <filename>c:\windows\system\foo.exe</filename> with:
      </para>
      <screen>
<prompt>$</prompt> <userinput>wine foo.exe</userinput>
      </screen>
      <para>
        However, you would have to run the file
        <filename>c:\myapps\foo.exe</filename> with this command:
      </para>
      <screen>
<prompt>$</prompt> <userinput>wine c:\\myapps\\foo.exe</userinput>
      </screen>
      <para>
      (note the backslash-escaped "\" !)
      </para>
      <para>
	For details on running text mode (CUI) executables, read the 
	<link linkend="CUI-programs">section</link> below.
      </para>
    </sect1>

    <sect1>
      <title>Explorer-like graphical Wine environments</title>

      <para>
	If you don't feel like manually invoking Wine for every program
	you want to run and instead want to have an integrated graphical
	interface to run your Windows programs in, then installing e.g.
	<ulink url="http://www.calmira.org">Calmira</ulink>, a
	Win95-Explorer-like shell replacement, would probably be a great
	idea. Calmira might still have a few problems running on Wine,
	though. Other usable Explorer replacements should be listed here
	in the future.
      </para>
    </sect1>
	
    <sect1 id="command-line-options">
      <title>Wine Command Line Options</title>

      <sect2 id="config-parameter">
        <title>--debugmsg [channels]</title>
        <para>
          Wine isn't perfect, and many Windows applications still
          don't run without bugs under Wine (but then, a lot of programs
          don't run without bugs under native Windows either!).  To
          make it easier for people to track down the causes behind
          each bug, Wine provides a number of <firstterm>debug
          channels</firstterm> that you can tap into.
        </para>
        <para>
          Each debug channel, when activated, will trigger logging
          messages to be displayed to the console where you invoked
          <command>wine</command>.  From there you can redirect the
          messages to a file and examine it at your leisure.  But be
          forewarned!  Some debug channels can generate incredible
          volumes of log messages.  Among the most prolific offenders
          are <parameter>relay</parameter> which spits out a log
          message every time a win32 function is called,
          <parameter>win</parameter> which tracks windows message
          passing, and of course <parameter>all</parameter> which is
          an alias for every single debug channel that exists.  For a
          complex application, your debug logs can easily top 1 MB and
          higher.  A <parameter>relay</parameter> trace can often
          generate more than 10 MB of log messages, depending on how
          long you run the application.  (As described in the
          <link linkend = "config-debug-etc">Debug</link>
          section of configuring wine you can 
          modify what the <parameter>relay</parameter> trace reports).
          Logging does slow down Wine
          quite a bit, so don't use <parameter>--debugmsg</parameter>
          unless you really do want log files.
        </para>
        <para>
          Within each debug channel, you can further specify a
          <firstterm>message class</firstterm>, to filter out the
          different severities of errors.  The four message classes
          are:
          <simplelist type="inline">
            <member><parameter>trace</parameter></member>
            <member><parameter>fixme</parameter></member>
            <member><parameter>warn</parameter></member>
            <member><parameter>err</parameter></member>
          </simplelist>.
        </para>
        <para>
          To turn on a debug channel, use the form
          <parameter>class+channel</parameter>.  To turn it off, use
          <parameter>class-channel</parameter>.  To list more than one
          channel in the same <parameter>--debugmsg</parameter>
          option, separate them with commas.  For example, to request
          <parameter>warn</parameter> class messages in the
          <parameter>heap</parameter> debug channel, you could invoke
          <command>wine</command> like this:
        </para>
        <screen>
<prompt>$</prompt> <userinput>wine --debugmsg warn+heap <replaceable>program_name</replaceable></userinput>
        </screen>
        <para>
          If you leave off the message class, <command>wine</command>
          will display messages from all four classes for that channel:
        </para>
        <screen>
<prompt>$</prompt> <userinput>wine --debugmsg +heap <replaceable>program_name</replaceable></userinput>
        </screen>
        <para>
          If you wanted to see log messages for everything except the
          relay channel, you might do something like this:
        </para>
        <screen>
<prompt>$</prompt> <userinput>wine --debugmsg +all,-relay <replaceable>program_name</replaceable></userinput>
        </screen>
        <para>
	  Here is a list of the debug channels and classes in Wine.
	  More channels will be added to (or subtracted from) later
	  versions.
        </para>

		<table frame="none"><title>Debug Channels</title>
		<tgroup cols=5 align="left">
		<tbody>
<row><entry>
all</><entry>accel</><entry>advapi</><entry>animate</><entry>aspi</>
</row><row><entry>
atom</><entry>avifile</><entry> bitblt</><entry> bitmap</><entry> caret</>
</row><row><entry>
cdrom</><entry>class</><entry> clipboard</><entry> clipping</><entry>combo</>
</row><row><entry>
comboex</><entry> comm</><entry>commctrl</><entry>commdlg</><entry> console</>
</row><row><entry>
crtdll</><entry>cursor</><entry>datetime</><entry>dc</><entry> ddeml</>
</row><row><entry>
ddraw</><entry> debug</><entry> debugstr</><entry>delayhlp</><entry>dialog</>
</row><row><entry>
dinput</><entry>dll</><entry> dosfs</><entry>dosmem</><entry>dplay</>
</row><row><entry>
driver</><entry>dsound</><entry>edit</><entry>elfdll</><entry>enhmetafile</>
</row><row><entry>
event</><entry>exec</><entry>file</><entry>fixup</><entry>font</>
</row><row><entry>
gdi</><entry> global</><entry>graphics</><entry> header</><entry>heap</>
</row><row><entry>
hook</><entry>hotkey</><entry>icmp</><entry>icon</><entry>imagehlp</>
</row><row><entry>
imagelist</><entry> imm</><entry>int</><entry>int10</><entry>int16</>
</row><row><entry>
int17</><entry>int19</><entry>int21</><entry>int31</><entry> io</>
</row><row><entry>
ipaddress</><entry>joystick</><entry>key</><entry>keyboard</><entry>loaddll</>
</row><row><entry>
ldt</><entry>listbox</><entry>listview</><entry>local</><entry>mci</>
</row><row><entry>
mcianim</><entry>mciavi</><entry>mcicda</><entry>mcimidi</><entry>mciwave</>
</row><row><entry>
mdi</><entry>menu</><entry>message</><entry>metafile</><entry>midi</>
</row><row><entry>
mmaux</><entry>mmio</><entry>mmsys</><entry>mmtime</><entry>module</>
</row><row><entry>
monthcal</><entry>mpr</><entry>msacm</><entry>msg</><entry>msvideo</>
</row><row><entry>
nativefont</><entry>nonclient</><entry>ntdll</><entry>odbc</><entry>ole</>
</row><row><entry>
opengl</><entry>pager</><entry>palette</><entry>pidl</><entry>print</>
</row><row><entry>
process</><entry>profile</><entry>progress</><entry>prop</><entry>propsheet</>
</row><row><entry>
psapi</><entry>psdrv</><entry>ras</><entry>rebar</><entry>reg</>
</row><row><entry>
region</><entry>relay</><entry>resource</><entry>richedit</><entry>scroll</>
</row><row><entry>
segment</><entry>seh</><entry>selector</><entry>sendmsg</><entry>server</>
</row><row><entry>
setupapi</><entry>setupx</><entry>shell</><entry>snoop</><entry>sound</>
</row><row><entry>
static</><entry>statusbar</><entry>storage</><entry>stress</><entry>string</>
</row><row><entry>
syscolor</><entry>system</><entry>tab</><entry>tape</><entry>tapi</>
</row><row><entry>
task</><entry>text</><entry>thread</><entry>thunk</><entry>timer</>
</row><row><entry>
toolbar</><entry>toolhelp</><entry>tooltips</><entry>trackbar</><entry>treeview</>
</row><row><entry>
ttydrv</><entry>tweak</><entry>typelib</><entry>updown</><entry>ver</>
</row><row><entry>
virtual</><entry>vxd</><entry>wave</><entry>win</><entry>win16drv</>
</row><row><entry>
win32</><entry>winedbg</><entry>wing</><entry>wininet</><entry>winsock</>
</row><row><entry>
winspool</><entry>wnet</><entry>x11</>
</row>
		</tbody>
		</tgroup>
		</table>

        <para>
          For more details about debug channels, check out the
          <ulink url="http://wine.codeweavers.com/docs/wine-devel/">
            The Wine Developer's Guide</ulink>.
        </para>
      </sect2>

      <sect2>
        <title>--dll</title>
        <para>
          Specifies whether to load the builtin or the native (if
	  available) version of a DLL.
	  Example:
	  <screen>
<prompt>$</prompt> <userinput>wine --dll setupx=n foo.exe</userinput>
          </screen>
	  See the <link linkend="config-dll">DLL chapter</link> for more details.
        </para>
      </sect2>

      <sect2>
        <title>--help</title>
        <para>
          Shows a small command line help page.
        </para>
      </sect2>

      <sect2>
        <title>--version</title>
        <para>
	  Shows the Wine version string. Useful to verify your installation.
        </para>
      </sect2>
    </sect1>

    <sect1 id="wineserver-command-line-options">
      <title>wineserver Command Line Options</title>

      <para>
        wineserver usually gets started automatically by Wine whenever
	the first wine process gets started.
	However, wineserver has some useful command line options that
	you can add if you start it up manually, e.g. via a user login
	script or so.
      </para>

      <sect2 id="wineserver-config-parameter">
        <title>-d&lt;n&gt;</title>
        <para>
	  Sets the debug level for debug output in the terminal that
	  wineserver got started in at level &lt;n&gt;.
	  In other words: everything greater than 0 will enable
	  wineserver specific debugging output (not to confuse with Wine's wineserver logging channel, --debugmsg +server, though!).
        </para>
      </sect2>

      <sect2>
        <title>-h</title>
        <para>
	  Display wineserver command line options help message.
        </para>
      </sect2>

      <sect2>
        <title>-k[n]</title>
        <para>
	  Kill the current wineserver, optionally with signal n.
        </para>
      </sect2>

      <sect2>
        <title>-p[n]</title>
        <para>
	  This parameter makes wineserver persistent, optionally for n
	  seconds. It will prevent wineserver from shutting down immediately.
	</para>
	<para>
	  Usually, wineserver quits almost immediately after the last
	  wine process using this wineserver terminated.
	  However, since wineserver loads a lot of things on startup
	  (such as the whole Windows registry data), its startup might
	  be so slow that it's very useful to keep it from exiting after
	  the end of all Wine sessions, by making it persistent.
	</para>
      </sect2>

      <sect2>
        <title>-w</title>
        <para>
          This parameter makes a newly started wineserver wait until the
	  currently active wineserver instance terminates.
        </para>
      </sect2>
    </sect1>

    <sect1 id="environment-variables">
      <title>Setting Windows/DOS environment variables</title>
      <para>
        Your program might require some environment variable to be set
	properly in order to run successfully.
	In this case you need to set this environment variable in the
	Linux shell, since Wine will pass on the entire shell environment
	variable settings to the Windows environment variable space.
	Example for the bash shell (other shells may have a different syntax
	!):
        <screen>
	  export MYENVIRONMENTVAR=myenvironmentvarsetting
	</screen>
	This will make sure your Windows program can access the
	MYENVIRONMENTVAR environment variable once you start your program
	using Wine.
	If you want to have MYENVIRONMENTVAR set permanently, then you can
	place the setting into /etc/profile, or also ~/.bashrc in the case of
	bash.
      </para>
      <para>
        Note however that there is an exception to the rule:
	If you want to change the PATH environment variable, then of
	course you can't modify it that way, since this will alter the
	Unix PATH environment setting. Instead, you should set the
	WINEPATH environment variable. An alternative way to
	indicate the content of the DOS PATH environment variable would
	be to change the "path" setting in the wine config file's <link
	linkend="config-wine">[wine]</link> section.
      </para>

    </sect1>

    <sect1 id="CUI-programs">
      <title>Text mode programs (CUI: Console User Interface)</title>
      <para>Text mode programs are program which output is only made
	out of text (surprise!). In Windows terminolgy, they are
	called CUI (Console User Interface) executables, by opposition
	to GUI (Graphical User Interface) executables. Win32 API
	provide a complete set of APIs to handle this situation, which
	goes from basic features like text printing, up to high level
	functionnalities (like full screen editing, color support,
	cursor motion, mouse support), going through features like
	line editing or raw/cooked input stream support
      </para>
      <para>
        Given the wide scope of features above, and the current usage
	in Un*x world, Wine comes out with three different ways for
	running a console program (aka a CUI executable):
	<itemizedlist>
	  <listitem>
	    <para>bare streams</para>
	  </listitem>
	  <listitem>
	    <para>wineconsole with user backend</para>
	  </listitem>
	  <listitem>
	    <para>wineconsole with curses backend</para>
	  </listitem>
	</itemizedlist>
      </para>
      <para>The names here are a bit obscure. "bare streams" means
	that no extra support of wine is provide to map between the
	unix console access and Windows console access. The two other
	ways require the use of a specific Wine program (wineconsole)
	which provide extended facilities. The following table
	describes what you can do (and cannot do) with those three 
	ways.
	<table>
	  <title>Basic differences in consoles</title>
	  <tgroup cols="4" align="left">
	    <thead>
	      <row>
		<entry>Function</entry>
		<entry>Bare streams</entry>
		<entry>Wineconsole &amp; user backend</entry>
		<entry>Wineconsole &amp; curses backend</entry>
		</row>
	    </thead>
	    <tbody>
	      <row>
		<entry>How to run (assuming executable is called foo.exe)</entry>
		<entry><msgtext>
<screen><prompt>$</prompt> <userinput>wine foo.exe</userinput></screen>
		  </msgtext></entry>
		<entry><msgtext>
<screen><prompt>$</prompt> <userinput>wineconsole -- --backend=user foo.exe</userinput></screen>
                </msgtext></entry>
		<entry><msgtext>
<screen><prompt>$</prompt> <userinput>wineconsole foo.exe</userinput></screen>
                </msgtext>You can also use --backend=curses as an option</entry>
	      </row>
	      <row>
		<entry>Good support for line oriented CUI applications
		  (which print information line after line)
		  </entry>
		<entry>Yes</entry>
		<entry>Yes</entry>
		<entry>Yes</entry>
	      </row>
	      <row>
		<entry>Good support for full screen CUI
		  applications (including but not limited to color
		  support, mouse support...)</entry>
		<entry>No</entry>
		<entry>Yes</entry>
		<entry>Yes</entry>
	      </row>
	      <row>
		<entry>Can be run even if X11 is not running</entry>
		<entry>Yes</entry>
		<entry>No</entry>
		<entry>Yes</entry>
	      </row>
	      <row>
		<entry>Implementation</entry>
		<entry>Maps the standard Windows streams to the
		  standard Unix streams (stdin/stdout/stderr)
		</entry>
		<entry>
		  Wineconsole will create a new Window (hence
		  requiring the USER32 DLL is available) where all
		  information will be displayed
		</entry>
		<entry>
		  Wineconsole will use existing unix console
		  (from which the program is run) and with the help of
		  the (n)curses library take control of all the terminal
		  surface for interacting with the user
		</entry>
	      </row>
	      <row>
		<entry>Known limitations</entry>
		<entry></entry>
		<entry></entry>
		<entry>
		  Will produce strange behavior if two (or more)
		  Windows consoles are used on the same Un*x terminal.
		</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</table>
      </para>
      <sect2 id="CUI-programs-config">
	<title>Configuration of CUI executables</title>
	<para>
	  When wineconsole is used, several configuration options are
	  available. Wine (as Windows do) stores, on a per application
	  basis, several options in the registry. This let a user, for
	  example, define the default screen-buffer size he would like
	  to have for a given application.
	</para>
	<para>
	  As of today, only the USER backend allows you to edit those
	  options (we don't recommend editing by hand the registry
	  contents). This edition is fired when a user right click in
	  the console (this popups a menu), where you can either
	  choose from:
	  <itemizedlist>
	    <listitem>
	      <para>
		Default: this will edit the settings shared by all
		applications which haven't been configured yet. So,
		when an application is first run (on your machine,
		under your account) in wineconsole, wineconsole will
		inherit this default settings for the
		application. Afterwards, the application will have its
		own settings, that you'll be able to modify at your will.
	      </para>
	      <para>
		Properties: this will edit the application's
		settings. When you're done, with the edition, you'll
		be prompted whether you want to:
		<orderedlist>
		  <listitem>
		    <para>
		      Keep these modified settings only for this
		      session (next time you run the application, you
		      will not see the modification you've just made).
		    </para>
		  </listitem>
		  <listitem>
		    <para>
		      Use the settings for this session and save them
		      as well, so that next you run your application,
		      you'll use these new settings again.
		    </para>
		  </listitem>
		</orderedlist>
	      </para>
	    </listitem>
	  </itemizedlist>
	</para>
	<para>
	  Here's the list of the items you can configure, and their
	  meanings:
	  <table>
	    <title>Wineconsole configuration options</title>
	    <tgroup cols="2" align="left">
	      <thead>
		<row>
		  <entry>Configuration option</entry>
		  <entry>Meaning</entry>
		</row>
	      </thead>
	      <tbody>
		<row>
		  <entry>Cursor's size</entry>
		  <entry>
		    Defines the size of the cursor. Three options are
		    available: small (33% of character height), medium
		    (66%) and large (100%)
		  </entry>
		</row>
		<row>
		  <entry>Popup menu</entry>
		  <entry>
		    It's been said earlier that wineconsole
		    configuration popup was triggered using a right
		    click in the console's window. However, this can
		    be an issue when the application you run inside
		    wineconsole expects the right click events to be
		    sent to it. By ticking control or shift you select
		    additional modifiers on the right click for
		    opening the popup. For example, ticking shift will
		    send events to the application when you right
		    click the window without shift being hold down,
		    and open the window when you right-click while
		    shift being hold down.
		  </entry>
		</row>
		<row>
		  <entry>Quick edit</entry>
		  <entry>
		    This tick box lets you decide whether left-click
		    mouse events shall be interpreted as events to be
		    sent to the underlying application (tick off) or
		    as a selection of rectangular part of the screen
		    to be later on copied onto the clipboard (tick on).
		  </entry>
		</row>
		<row>
		  <entry>History</entry>
		  <entry>
		    This lets you pick up how many commands you want
		    the console to recall. You can also drive whether
		    you want, when entering several times the same
		    command - potentially intertwened with others -
		    whether you want to store all of them (tick off)
		    or only the last one (tick on).
		  </entry>
		</row>
		<row>
		  <entry>Police</entry>
		  <entry>
		    The Police property sheet allows you to pick the
		    default font for the console (font file, size,
		    background and foreground color).
		  </entry>
		</row>
		<row>
		  <entry>Screenbuffer &amp; window size</entry>
		  <entry>
		    The console as you see it is made of two different
		    parts. On one hand there's the screenbuffer which
		    contains all the information your application puts
		    on the screen, and the window which displays a
		    given area of this screen buffer. Note that the
		    window is always smaller or of the same size than
		    the screen buffer. Having a stricly smaller window
		    size will put on scrollbars on the window so that
		    you can see the whole screenbuffer's content.
		  </entry>
		</row>
		<row>
		  <entry>Close on exit</entry>
		  <entry>
		    If it's ticked, then the wineconsole will exit
		    when the application within terminates. Otherwise,
		    it'll remain opened until the user manually closes
		    it: this allows seeing the latest information of a
		    program after it has terminated.
		  </entry>
		</row>
		<row>
		  <entry>Edition mode</entry>
		  <entry>
		    <msgtext>
		      <para>
			When the user enter commands, he or she can
			choose between several edition modes:
			<itemizedlist>
			  <listitem>
			    <para>
			      Emacs: the same keybindings as under
			      emacs are available. For example, Ctrl-A
			      will bring the cursor to the beginning
			      of the edition line. See your emacs
			      manual for the details of the commands.
			    </para>
			  </listitem>
			  <listitem>
			    <para>
			      Win32: this are the standard Windows
			      console key-bindings (mainly using
			      arrows).
			    </para>
			  </listitem>
			</itemizedlist>
		      </para>
		    </msgtext>
		  </entry>
		</row>
	      </tbody>
	    </tgroup>
	  </table>
	</para>
      </sect2>
    </sect1>
  </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("wine-user.sgml" "set" "book" "chapter" "")
End:
-->
