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 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:' 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 Specify display number. If not given, 'vncserver' select first non-used display number. -name Set name of remote desktop. It will shown in title of VNC viewer. -depth Specify pixel depth (bits per pixel) for remote desktop. 8/16/24/32 will work. -geometry x 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 Mr. Miyata Mr. Okunishi for porting. _Contanct Please send bug reports, fixes, suggetions to . Newest version will placed at