XKIBITZ(1)                  General Commands Manual                 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 pro-
       gram that runs in an xterm).  Uses include:

              o   A novice user can ask an expert user for help.  Using  xkib-
                  itz,  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 conversation, retaining the ability
                  to scroll backwards, 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  weak-
                  nesses 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 worksta-
                  tion,  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 interac-
       tion.

       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 mas-
       ter  user must have permission to access each display.  Each display is
       assigned a tag - a small integer which can be  used  to  reference  the
       display.

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

       To drop a display, enter "- tag" where tag is the display's tag accord-
       ing 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.   However,  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 xkibitz.

       Various processes can produce various effects.  For  example,  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 themselves 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.   Multiple  -display
       flags  can be given.  For example, to start up xkibitz with three addi-
       tional 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  logi-
       cally  resized.  Unfortunately, xkibitz cannot 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 logical sizes with the "=" com-
       mand.

       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 environ-
       ment variable XKIBITZ_XTERM_ARGS.  For example, to create xterms with a
       scrollbar and a green pointer cursor:

            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  exception  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  Pro-
       grams" by Don Libes, O'Reilly and Associates, January 1995.
       "kibitz  -  Connecting  Multiple Interactive Programs Together", by Don
       Libes, Software - Practice & Experience, John Wiley & Sons,  West  Sus-
       sex, England, Vol. 23, No. 5, May, 1993.

AUTHOR
       Don Libes, National Institute of Standards and Technology



                                06 October 1994                     XKIBITZ(1)
