|  | <chapter id="running"> | 
|  | <title>Running Wine</title> | 
|  |  | 
|  | <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> | 
|  |  | 
|  | <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 was put where. | 
|  | </para> | 
|  | </sect1> | 
|  |  | 
|  | <sect1 id="running-wine"> | 
|  | <title>How to run Wine</title> | 
|  |  | 
|  | <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 | 
|  | --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 id="explorer-like-wine"> | 
|  | <title>Explorer-like graphical Wine environments</title> | 
|  |  | 
|  | <para> | 
|  | If you prefer using a graphical interface to manage your | 
|  | files you might want to consider using Winefile.  This Winelib | 
|  | application comes with Wine and can be found with the other | 
|  | Wine programs.  It is a useful way to view your drive configuration | 
|  | and locate files, plus you can execute programs directly from | 
|  | Winefile.  Please note, many functions are not yet implemented. | 
|  | </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>accel</entry>  <entry>adpcm</entry>  <entry>advapi</entry>  <entry>animate</entry>  <entry>aspi</entry> </row> | 
|  | <row> <entry>atom</entry>  <entry>avicap</entry>  <entry>avifile</entry>  <entry>bidi</entry>  <entry>bitblt</entry> </row> | 
|  | <row> <entry>bitmap</entry>  <entry>cabinet</entry>  <entry>capi</entry>  <entry>caret</entry>  <entry>cdrom</entry> </row> | 
|  | <row> <entry>cfgmgr32</entry>  <entry>class</entry>  <entry>clipboard</entry>  <entry>clipping</entry>  <entry>combo</entry> </row> | 
|  | <row> <entry>comboex</entry>  <entry>comm</entry>  <entry>commctrl</entry>  <entry>commdlg</entry>  <entry>computername</entry> </row> | 
|  | <row> <entry>console</entry>  <entry>crtdll</entry>  <entry>crypt</entry>  <entry>curses</entry>  <entry>cursor</entry> </row> | 
|  | <row> <entry>d3d</entry>  <entry>d3d_shader</entry>  <entry>d3d_surface</entry>  <entry>datetime</entry>  <entry>dc</entry> </row> | 
|  | <row> <entry>ddeml</entry>  <entry>ddraw</entry>  <entry>ddraw_fps</entry>  <entry>ddraw_geom</entry>  <entry>ddraw_tex</entry> </row> | 
|  | <row> <entry>debugstr</entry>  <entry>devenum</entry>  <entry>dialog</entry>  <entry>dinput</entry>  <entry>dll</entry> </row> | 
|  | <row> <entry>dma</entry>  <entry>dmband</entry>  <entry>dmcompos</entry>  <entry>dmfile</entry>  <entry>dmfiledat</entry> </row> | 
|  | <row> <entry>dmime</entry>  <entry>dmloader</entry>  <entry>dmscript</entry>  <entry>dmstyle</entry>  <entry>dmsynth</entry> </row> | 
|  | <row> <entry>dmusic</entry>  <entry>dosfs</entry>  <entry>dosmem</entry>  <entry>dplay</entry>  <entry>dplayx</entry> </row> | 
|  | <row> <entry>dpnhpast</entry>  <entry>driver</entry>  <entry>dsound</entry>  <entry>dsound3d</entry>  <entry>edit</entry> </row> | 
|  | <row> <entry>enhmetafile</entry>  <entry>environ</entry>  <entry>event</entry>  <entry>eventlog</entry>  <entry>exec</entry> </row> | 
|  | <row> <entry>file</entry>  <entry>fixup</entry>  <entry>font</entry>  <entry>fps</entry>  <entry>g711</entry> </row> | 
|  | <row> <entry>gdi</entry>  <entry>global</entry>  <entry>glu</entry>  <entry>graphics</entry>  <entry>header</entry> </row> | 
|  | <row> <entry>heap</entry>  <entry>hook</entry>  <entry>hotkey</entry>  <entry>icmp</entry>  <entry>icon</entry> </row> | 
|  | <row> <entry>imagehlp</entry>  <entry>imagelist</entry>  <entry>imm</entry>  <entry>int</entry>  <entry>int21</entry> </row> | 
|  | <row> <entry>int31</entry>  <entry>io</entry>  <entry>ipaddress</entry>  <entry>iphlpapi</entry>  <entry>jack</entry> </row> | 
|  | <row> <entry>joystick</entry>  <entry>key</entry>  <entry>keyboard</entry>  <entry>listbox</entry>  <entry>listview</entry> </row> | 
|  | <row> <entry>loaddll</entry>  <entry>local</entry>  <entry>mapi</entry>  <entry>mci</entry>  <entry>mcianim</entry> </row> | 
|  | <row> <entry>mciavi</entry>  <entry>mcicda</entry>  <entry>mcimidi</entry>  <entry>mciwave</entry>  <entry>mdi</entry> </row> | 
|  | <row> <entry>menu</entry>  <entry>menubuilder</entry>  <entry>message</entry>  <entry>metafile</entry>  <entry>midi</entry> </row> | 
|  | <row> <entry>mmaux</entry>  <entry>mmio</entry>  <entry>mmsys</entry>  <entry>mmtime</entry>  <entry>module</entry> </row> | 
|  | <row> <entry>monthcal</entry>  <entry>mpeg3</entry>  <entry>mpr</entry>  <entry>msacm</entry>  <entry>msdmo</entry> </row> | 
|  | <row> <entry>msg</entry>  <entry>mshtml</entry>  <entry>msi</entry>  <entry>msimg32</entry>  <entry>msisys</entry> </row> | 
|  | <row> <entry>msrle32</entry>  <entry>msvcrt</entry>  <entry>msvideo</entry>  <entry>mswsock</entry>  <entry>nativefont</entry> </row> | 
|  | <row> <entry>netapi32</entry>  <entry>netbios</entry>  <entry>nls</entry>  <entry>nonclient</entry>  <entry>ntdll</entry> </row> | 
|  | <row> <entry>odbc</entry>  <entry>ole</entry>  <entry>oledlg</entry>  <entry>olerelay</entry>  <entry>opengl</entry> </row> | 
|  | <row> <entry>pager</entry>  <entry>palette</entry>  <entry>pidl</entry>  <entry>powermgnt</entry>  <entry>print</entry> </row> | 
|  | <row> <entry>process</entry>  <entry>profile</entry>  <entry>progress</entry>  <entry>propsheet</entry>  <entry>psapi</entry> </row> | 
|  | <row> <entry>psdrv</entry>  <entry>qcap</entry>  <entry>quartz</entry>  <entry>ras</entry>  <entry>rebar</entry> </row> | 
|  | <row> <entry>reg</entry>  <entry>region</entry>  <entry>relay</entry>  <entry>resource</entry>  <entry>richedit</entry> </row> | 
|  | <row> <entry>rundll32</entry>  <entry>sblaster</entry>  <entry>scroll</entry>  <entry>seh</entry>  <entry>selector</entry> </row> | 
|  | <row> <entry>server</entry>  <entry>setupapi</entry>  <entry>shdocvw</entry>  <entry>shell</entry>  <entry>shlctrl</entry> </row> | 
|  | <row> <entry>snmpapi</entry>  <entry>snoop</entry>  <entry>sound</entry>  <entry>static</entry>  <entry>statusbar</entry> </row> | 
|  | <row> <entry>storage</entry>  <entry>stress</entry>  <entry>string</entry>  <entry>syscolor</entry>  <entry>system</entry> </row> | 
|  | <row> <entry>tab</entry>  <entry>tape</entry>  <entry>tapi</entry>  <entry>task</entry>  <entry>text</entry> </row> | 
|  | <row> <entry>thread</entry>  <entry>thunk</entry>  <entry>tid</entry>  <entry>timer</entry>  <entry>toolbar</entry> </row> | 
|  | <row> <entry>toolhelp</entry>  <entry>tooltips</entry>  <entry>trackbar</entry>  <entry>treeview</entry>  <entry>ttydrv</entry> </row> | 
|  | <row> <entry>twain</entry>  <entry>typelib</entry>  <entry>uninstaller</entry>  <entry>updown</entry>  <entry>urlmon</entry> </row> | 
|  | <row> <entry>uxtheme</entry>  <entry>ver</entry>  <entry>virtual</entry>  <entry>vxd</entry>  <entry>wave</entry> </row> | 
|  | <row> <entry>wc_font</entry>  <entry>win</entry>  <entry>win32</entry>  <entry>wineboot</entry>  <entry>winecfg</entry> </row> | 
|  | <row> <entry>wineconsole</entry>  <entry>wine_d3d</entry>  <entry>winevdm</entry>  <entry>wing</entry>  <entry>winhelp</entry> </row> | 
|  | <row> <entry>wininet</entry>  <entry>winmm</entry>  <entry>winsock</entry>  <entry>winspool</entry>  <entry>wintab</entry> </row> | 
|  | <row> <entry>wintab32</entry>  <entry>wnet</entry>  <entry>x11drv</entry>  <entry>x11settings</entry>  <entry>xdnd</entry> </row> | 
|  | <row> <entry>xrandr</entry>  <entry>xrender</entry>  <entry>xvidmode</entry> </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>--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<n></title> | 
|  | <para> | 
|  | Sets the debug level for debug output in the terminal that | 
|  | wineserver got started in at level <n>. | 
|  | 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 terminology, 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 | 
|  | functionalities (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 & user backend</entry> | 
|  | <entry>Wineconsole & 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 intertwined 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 & 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: | 
|  | --> |