XKIBITZ(1)                                             XKIBITZ(1)

NAME
       xkibitz - allow multiple people to interact in an xterm

SYNOPSIS
       xkibitz [ xkibitz-args ] [ program program-args...  ]

INTRODUCTION
       xkibitz allows users in separate xterms to share one shell
       (or any program that runs in an xterm).  Uses include:

              o   A novice user can ask an expert user for  help.
                  Using xkibitz, the expert can see what the user
                  is doing, and offer advice or show how to do it
                  right.

              o   By  running  xkibitz  and then starting a full-
                  screen editor, people may carry out a conversa-
                  tion,  retaining  the  ability  to scroll back-
                  wards, save the entire  conversation,  or  even
                  edit it while in progress.

              o   People  can team up on games, document editing,
                  or other cooperative tasks  where  each  person
                  has  strengths  and  weaknesses that complement
                  one another.

              o   If you want to have a large number of people do
                  an  on-line  code walk-through, you can sit two
                  in front of each workstation, and then  connect
                  them  all  together while you everyone looks at
                  code together in the editor.

USAGE
       To start xkibitz, one user (the master) runs xkibitz  with
       no arguments.

       xkibitz  starts  a new shell (or another program, if given
       on the command line).  The user can interact normally with
       the  shell,  or  upon  entering  an escape (described when
       xkibitz starts) can add users to the interaction.

       To add users, enter "+ display" where  display  is  the  X
       display  name.  If there is no ":X.Y" in the display name,
       ":0.0" is assumed.  The master user must  have  permission
       to  access each display.  Each display is assigned a tag -
       a small integer which can be used to  reference  the  dis-
       play.

       To show the current tags and displays, enter "=".

       To  drop  a  display,  enter "- tag" where tag is the dis-
       play's tag according to the "=" command.

       To return to the shared shell, enter "return".   Then  the
       keystrokes  of  all  users  become the input of the shell.
       Similarly, all users receive the output from the shell.

       To terminate xkibitz it suffices to  terminate  the  shell
       itself.   For example, if any user types ^D (and the shell
       accepts this to be EOF), the shell terminates followed  by
       xkibitz.

       Normally,  all  characters are passed uninterpreted.  How-
       ever, in the escape dialogue the user  talks  directly  to
       the xkibitz interpreter.  Any Expect(1) or Tcl(3) commands
       may also be given.  Also, job control may be used while in
       the interpreter, to, for example, suspend or restart xkib-
       itz.

       Various processes can produce various effects.  For  exam-
       ple, you can emulate a multi-way write(1) session with the
       command:

            xkibitz sleep 1000000

ARGUMENTS
       xkibitz understands a few special arguments  which  should
       appear  before the program name (if given).  Each argument
       should be separated by whitespace.  If the arguments them-
       selves  takes arguments, these should also be separated by
       whitespace.

       -escape sets the escape  character.   The  default  escape
       character is ^].

       -display adds a display much like the "+" command.  Multi-
       ple -display flags can be given.  For example, to start up
       xkibitz with three additional displays:

            xkibitz   -display   mercury  -display  fox  -display
       dragon:1.0

CAVEATS
       Due to limitations in both X and UNIX, resize  propagation
       is weak.

       When  the  master  user  resizes  the xterm, all the other
       xterms are logically resized.  Unfortunately, xkibitz can-
       not  force  the physical xterm size to correspond with the
       logical xterm sizes.

       The other users are free to resize their xterm  but  their
       sizes  are not propagated.  The master can check the logi-
       cal sizes with the "=" command.

       Deducing the window size is a non-portable operation.  The
       code  is  known to work for recent versions of SunOS, AIX,
       Unicos, and HPUX.  Send back mods if you add  support  for
       anything else.

ENVIRONMENT
       The  environment  variable  SHELL is used to determine and
       start a shell, if no other program is given on the command
       line.

       If  the environment variable DISPLAY is defined, its value
       is used for the display name of the  xkibitz  master  (the
       display  with  tag  number 0). Otherwise this name remains
       empty.

       Additional arguments may be passed to new  xterms  through
       the environment variable XKIBITZ_XTERM_ARGS.  For example,
       to create xterms with a scrollbar and a green pointer cur-
       sor:

            XKIBITZ_XTERM_ARGS="-sb -ms green"
            export XKIBITZ_XTERM_ARGS

       (this  is  for  the  Bourne shell - use whatever syntax is
       appropriate for your favorite shell). Any  option  can  be
       given that is valid for the xterm command, with the excep-
       tion of -display, -geometry and -S as  those  are  set  by
       xkibitz.

SEE ALSO
       Tcl(3), libexpect(3) kibitz(1)
       "Exploring  Expect:  A  Tcl-Based  Toolkit  for Automating
       Interactive Programs" by Don Libes, O'Reilly  and  Associ-
       ates, January 1995.
       "kibitz   -   Connecting   Multiple  Interactive  Programs
       Together", by Don Libes, Software - Practice & Experience,
       John  Wiley  & Sons, West Sussex, England, Vol. 23, No. 5,
       May, 1993.

AUTHOR
       Don Libes, National Institute of Standards and Technology

                         06 October 1994                        1