
    X VNC Server for OS/2 - based on Xvnc server 3.3.2r3
    
                      V1.00, 1999/03/27, akira@sra.co.jp
		      V1.01, 1999/07/27, akira@sra.co.jp

_What is VNC ?

    VNC stands for Virtual Network Computing, developed by ORL.
    VNC is a system to access remote desktops from a local machine. 
    It consists of a remote server and a local viewer (client).  This 
    is (X base) VNC server for OS/2.

        Jan. 1999, ORL has been acquired by AT&T to form AT&T
        Laboratories Cambridge.

    See  VNC site <http://www.uk.research.att.com/vnc/> for details.

_What is Xvnc ?

    Xvnc is a virtual X/VNC server.  X applications use it as normal X
    server, and VNC viewer uses it as VNC server to get X display images.

        +-------+         +-----+        +-------+
        |X apps |<------->|     |        |       |
        +-------+         |Xvnc |<------>|  VNC  |
	+-------+         |     |        |viewer |
	|X apps |<------->|     |        |       |
        +-------+         +-----+        +-------+
               X protocol       VNC(RFB) Protocol

    Combining Xvnc and VNC viewer makes pseudo X environment. As you can 
    run X application, Xvnc and VNC viewer on different machines, you may
    use several machines to balancing network/CPU loads, or you'll use
    remote applications with specific combinations.
    
    If you run Xapps. Vcnx, Viewer all in OS/2, then you'll get psuedo X
    environment on OS/2.
    
        +- OS/2 ------------------------------+
	| +-------+     +-----+     +-------+ |
        | | X apps|<--->|     |     |       | |
        | +-------+     | Xvnc|<--->|  VNC  | |
        | +-------+     |     |     |Viewer | |
        | | X apps|<--->|     |     |       | |
        | +-------+     +-----+     +-------+ |
        +-------------------------------------+

    If you run Xvnc and Viewer on you OS/2 and use Xapps on remote
    machine, it gives pseudo X terminal on you OS/2.

                    +- OS/2 ------------------+
        +-------+   |   +-----+     +-------+ |
        | X apps|<----->|     |     |       | |
        +-------+   |   | Xvnc|<--->|  VNC  | |
        +-------+   |   |     |     | viewer| |
        | X apps|<----->|     |     |       | |
        +-------+   |   +-----+     +-------+ |
                    +-------------------------+

    Also you can remote access to OS/2 with running viewer on another
    machine (only use X apps, cannnot access to WPS/PM).

        +- OS/2 ------------------+
        | +-------+     +-----+   |   +-------+
        | | X apps|<--->|     |   |   |       | 
        | +-------+     | Xvnc|<----->|  VNC  |
        | +-------+     |     |   |   | viewer|
        | | X apps|<--->|     |   |   |       |
        | +-------+     +-----+   |   +-------+
        +-------------------------+

_Contents

    Archive contains Xvnc and related binaries and patches to build Xvnc
    from unix source.  Binaries are build on Warp3/Connect with EMX. I
    hope they works on Warp4 also.

    Descriptions
        README.txt                  Now you are reading.
        README.jpn                  Japanese Description                  

    Executables
        Xvnc.exe                    Xvnc itself
	vncserver.cmd               Wrapper to startup Xvnc
	vncpasswd.exe               Prepare password for Xvnc
	xstartup.cmd                startup script (sample)

    Patches (in 'patches' directory)
        patch-vnc_3_3_2r3_os2   Patch
	Xvnc.def                Link definition file for OS/2
	os2_stubs.c             Need to run OS/2.
	os2_stubs.c.org         Original version (from XFree86)
        os2_stubs.c.dif         diff of above

    In v1.01, I modified 'vncserver.cmd' script and documents.
    
_Install and Use Binaries

INSTALL
  
    Copy 

        Xvnc.exe
	vncserver.cmd
	vncpasswd.exe

    to a directory in a PATH.
    
    If you want to start some applications in X (as XFree86 does),
    edit 'xstartup.cmd' and put it to directory
    
        HOME/.vnc

    HOME directory must placed on HPFS drive, and shoud be shared between
    server and clients.

    These program requires EMX runtime (0.9c later) and some XFree86/2
    files, such as X fonts and some X programs. At least, you need
    
        Xbase.zip
	Xbin.zip
	Xfnts.zip
	Xfnon.zip

    of XFree86/2 distribution.  Look at XFree86/2 page at
    
        http://borneo.gmd.de/~veit/os2/xf86os2.html

    for more detail.

START

    Use wrapper script 'vncserver' to start VNC server.  'vncserver.cmd' 
    is normal REXX script to setup environment and parameters required
    Xvnc.  If you installed XFree86/2, it will work without any changes.
    Otherwise, adjust 'vncserver.cmd'  to your environment.

    If you haven't run a VNC server before, it asks password.  This
    password is required when you access to this server from viewer.
    Password was saved to

        HOME/.vnc/passwd

    with some encription.  You can change it with
    
        vncpasswd

    command.

STOP

    To terminate VCN server, call task-list (Ctrl-ESC) and close it.

        In UNIX, 'vncserver -kill:<display number>' terminate server,
	but OS/2 version script does not support it.

    Xvnc server is normal VIO (WINDOWCOMPAT) program, and you can stop
    it with Ctrl-C.

LOG

    If you start server with 'vncserver' script, execution log will
    saved to
    
        HOME/.vnc/host.display.log

    If you have a trouble, check it.
        
        Log file name is bit differs from UNIX version.

Combination with VNC Viewer

    If you have installed VNC viewer for PM (vncview.exe in PATH),
    
        vncserver -view

    will start both server and viewer.  It makes pseudo X on your WPS/PM.

Using remote machine

    If you only use X applications on remote machine (as X terminal),
    then your may use XDMCP (X Display Manager Control Protocol).
    If you specify

        -query remote-host
        -indirect remote-host
        -broadcast

    then XDMCP will enabled and Xvnc will connect to remote host's xdm 
    (X Display Manager).  In this case, local commands in 'xstartup.cmd'
    is not started.

        '-once' option with XDMCP terminate Xvnc when X session
        terminates.
    
Option and Customize 'vncserver'

    'vncserver' accept following options other than normal X server
    options.

    F<number>
            Specify display number. If not given, 'vncserver' select
            first non-used display number.

    -name <desktop-name>
            Set name of remote desktop.  It will shown in title of VNC
            viewer.

    -depth <depth>
            Specify pixel depth (bits per pixel) for remote desktop.
	    8/16/24/32 will work.

    -geometry <width>x<height>
            Specify size of remote desktop.

    -pixelformat rgbNNN|bgrNNN
            Specify pixel format (order and bits for each RGB).

    Default values are defined in 'vncserver' script.  You may change
    these values.

_FAQ

    Q.  I got X screen but not X applications on it.
    
    A.  Try
    
            xterm -display yourpc:0 (use display number report on startup)

    A1. If you got 'xterm' on desktop, then you have a problem on
        startup script.  Xvnc (invoked with vncserver script) uses local
        startup script 'xstartup.cmd' in HOME/.vnc directory.  Confirm
	HOME/.vnc directory and 'xstartup.cmd' script in it.
    
    A2. If Xvnc refused to start 'xterm' as

            Xlib: connection to "yourpc:0.0" refused by server
            Xlib: Client is not authorized to connect to Server

        then you have authentication problem.  First, restart Xvnc
        server with '-noauth' option.
	
	    vncserver -noauth

        '-noauth' option disable authentication, access from local 
        machine is always allowed.  If 'xterm' worked with this, 
	then you certain have authentication problem.

        If you run X applications (client) on same machine on Xvnc, then
	server (Xvnc) and clients (X application) must share same
	'HOME/.Xauthority' file.  If server and client uses different
	'HOME' directory, then you have such problem. Confirm HOME
        environment value in server and client.

_Build from Sources        

    I build Xvnc and vncpasswd as below.  If you want to build them from
    source (vnc_3_3_2r3_unixsrc.xxx), try it.  It requires XFree86/2
    developping environment.

Expand archive

    Expand source archive (vnc_3_3_2r3_unixsrc.xxx) on root of some
    drive.  Build script put some commands on root, so select drive
    which have not many files in root.  Also it requires about 40MB 
    of disk space to build.  Archives are expanded under directory
    'vnc_unixsrc'.

Change to writable

    All files in archives are read-only.  Change to writable.

    [X:\vnc_unixsrc] chmod -R a+rw .

Apply patch

    [X:\vnc_unixsrc] patch -p 1 < patch_vnc_3_3_2r3_os2

Build 'libvncauth' and 'vncpasswd'

    [X:\vnc_unixsrc] xmkmf
    [X:\vnc_unixsrc] make World

Convert command files (*.cmd) to DOS/OS2 text

    Command files comes with archive (same as XFree86/2) are all in UNIX
    style text files, and REXX cannot read them.  So convert them to DOS
    style text files.

    [X:\vnc_unixsrc\Xvnc\config\imake] unix2dos *.cmd
    [X:\vnc_unixsrc\Xvnc\config\util]  unix2dos *.cmd

Build Xvnc

    [X:\vnc_unixsrc\Xvnc] copy config\util\buildos2.cmd
    [X:\vnc_unixsrc\Xvnc] buildos2

    Binary 'Xvnc.exe' is palced on

        X:\vnc_unixsrc\Xvnc\programs\Xserver

_About Patches

vnc_unixsrc/Imakefile

    I don't build 'vncviewer' (VNC viewer for X), so deleted it.

vnc_unixsrc/vncpasswd/Imakefile

    It assumes target library name as 'libvncauth.a', but OS/2 uses
    another library naming rule, it causes error on make.  So changed
    it with 'TargetLibraryName' macro to build target library name.

vnc_unixsrc/Xvnc/config/cf/os2.cf

    Two definitions
    
        BuildXKB
	BuildLBX

    are defined both 'vnc.def' and 'os2.cf'.  Of course, Xvnc never uses
    such extentions (LBX may be used, but never use XKB), enclosed them
    with '#ifndef'.

vnc_unixsrc/Xvnc/config/cf/vnclibs.def

    It assumes target library name as 'libvncauth.a', but OS/2 uses
    another library naming rule, it causes error on make.  So changed
    it with 'TargetLibraryName' macro to build target library name.

vnc_unixsrc/Xvnc/programs/Xserver/hw/vnc/init.c

    There is no 'strcasecmp' in EMX.  Relaced with 'stricmp'.

vnc_unixsrc/Xvnc/programs/Xserver/Imakefile

    It assumes target library name as 'libvn.a', but OS/2 uses another 
    library naming rule, it causes error on make.  So changed
    it with 'TargetLibraryName' macro to build target library name.

vnc_unixsrc/Xvnc/programs/Xserver/os/Imakefile

    Add definitions for additional 'os2_stubs.c' file.
    
vnc_unixsrc/Xvnc/programs/Xserver/os/os2_stubs.c

    Additonal file to build OS/2 version.  This was modified version of

        xc/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c

vnc_unixsrc/Xvnc/programs/Xserver/Xvnc.def

    Addtinal file to build OS/2 version.  It is linker definition file.

_Acknowledges

    Thanks for suggestions from

        Mr. Ueno <zodiac@ibm.net>
        Mr. Miyata <miyata@kusm.kyoto-u.ac.jp>
        Mr. Okunishi <fuji0924@mbox.kyoto-inet.or.jp>
    for porting.

_Contanct

    Please send bug reports, fixes, suggetions to <akira@sra.co.jp>.

    Newest version will placed at

        <http://www.sra.co.jp/people/akira/os2/xvnc/index-j.html>
