kibitz(1)
KIBITZ(1) USER COMMANDS KIBITZ(1)
NAME
kibitz - allow two people to interact with one shell
SYNOPSIS
kibitz [ kibitz-args ] user [ program program-args... ]
kibitz [ kibitz-args ] user@host [ program program-args... ]
INTRODUCTION
kibitz allows two (or more) people to interact with one
shell (or any arbitrary program). Uses include:
o A novice user can ask an expert user for help.
Using kibitz, the expert can see what the user is
doing, and offer advice or show how to do it right.
o By running kibitz 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 pro-
gress.
o People can team up on games, document editing, or
other cooperative tasks where each person has
strengths and weaknesses that complement one
another.
USAGE
To start kibitz, user1 runs kibitz with the argument of the
user to kibitz. For example:
kibitz user2
kibitz starts a new shell (or another program, if given on
the command line), while prompting user2 to run kibitz. If
user2 runs kibitz as directed, the keystrokes of both users
become the input of the shell. Similarly, both users
receive the output from the shell.
To terminate kibitz it suffices to terminate the shell
itself. For example, if either user types ^D (and the shell
accepts this to be EOF), the shell terminates followed by
kibitz.
Normally, all characters are passed uninterpreted. However,
if the escape character (described when kibitz starts) is
issued, the user may talk directly to the kibitz inter-
preter. Any Expect(1) or Tcl(3) commands may be given.
Also, job control may be used while in the interpreter, to,
for example, suspend or restart kibitz.
Various processes can provide various effects. For example,
you can emulate a two-way write(1) session with the command:
Last change: 19 October 1994 1
KIBITZ(1) USER COMMANDS KIBITZ(1)
kibitz user2 sleep 1000000
ARGUMENTS
kibitz takes arguments, these should also be separated by
whitespace.
The -noproc flag runs kibitz with no process underneath.
Characters are passed to the other kibitz. This is particu-
larly useful for connecting multiple interactive processes
together. In this mode, characters are not echoed back to
the typist.
-noescape disables the escape character.
-escape char sets the escape character. The default escape
character is ^].
-silent turns off informational messages describing what
kibitz is doing to initiate a connection.
-tty ttyname defines the tty to which the invitation should
be sent.
If you start kibitz to user2 on a remote computer, kibitz
performs a rlogin to the remote computer with your current
username. The flag -proxy username causes rlogin to use
username for the remote login (e.g. if your account on the
remote computer has a different username). If the -proxy
flag is not given, kibitz tries to determine your current
username by (in that order) inspecting the environment vari-
ables USER and LOGNAME, then by using the commands whoami
and logname.
The arguments -noescape and -escape can also be given by
user2 when prompted to run kibitz.
MORE THAN TWO USERS
The current implementation of kibitz explicitly understands
only two users, however, it is nonetheless possible to have
a three (or more) -way kibitz, by kibitzing another kibitz.
For example, the following command runs kibitz with the
current user, user2, and user3:
% kibitz user2 kibitz user3
Additional users may be added by simply appending more
"kibitz user" commands.
The xkibitz script is similar to kibitz but supports the
ability to add additional users (and drop them) dynamically.
Last change: 19 October 1994 2
KIBITZ(1) USER COMMANDS KIBITZ(1)
CAVEATS
kibitz assumes the 2nd user has the same terminal type and
size as the 1st user. If this assumption is incorrect,
graphical programs may display oddly.
kibitz handles character graphics, but cannot handle bit-
mapped graphics. Thus,
% xterm -e kibitz will work
% kibitz xterm will not work
However, you can get the effect of the latter command by
using xkibitz (see SEE ALSO below). kibitz uses the same
permissions as used by rlogin, rsh, etc. Thus, you can only
kibitz to users at hosts for which you can rlogin. Simi-
larly, kibitz will prompt for a password on the remote host
if rlogin would.
If you kibitz to users at remote hosts, kibitz needs to dis-
tinguish your prompt from other things that may precede it
during login. (Ideally, the end of it is preferred but any
part should suffice.) If you have an unusual prompt, set
the environment variable EXPECT_PROMPT to an egrep(1)-style
regular expression. Brackets should be preceded with one
backslash in ranges, and three backslashes for literal
brackets. The default prompt r.e. is "($|%|#) ".
kibitz requires the kibitz program on both hosts. kibitz
requires expect(1).
By comparison, the xkibitz script uses the X authorization
mechanism for inter-host communication so it does not need
to login, recognize your prompt, or require kibitz on the
remote host. It does however need permission to access the
other X servers.
BUGS
An early version of Sun's tmpfs had a bug in it that causes
kibitz to blow up. If kibitz reports "error flushing ...:
Is a directory" ask Sun for patch #100174.
If your Expect is not compiled with multiple-process support
(i.e., you do not have a working select or poll), you will
not be able to run kibitz.
ENVIRONMENT
The environment variable SHELL is used to determine the
shell to start, if no other program is given on the command
line.
If the environment variable EXPECT_PROMPT exists, it is
taken as a regular expression which matches the end of your
Last change: 19 October 1994 3
KIBITZ(1) USER COMMANDS KIBITZ(1)
login prompt (but does not otherwise occur while logging
in). See also CAVEATS above.
If the environment variables USER or LOGNAME are defined,
they are used to determine the current user name for a
kibitz to a remote computer. See description of the -proxy
option in ARGUMENTS above.
SEE ALSO
Tcl(3), libexpect(3), xkibitz(1)
"Exploring Expect: A Tcl-Based Toolkit for Automating
Interactive Programs" 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 Sussex, England, Vol. 23, No. 5,
May, 1993.
AUTHOR
Don Libes, National Institute of Standards and Technology
kibitz is in the public domain. NIST and I would appreciate
credit if this program or parts of it are used.
Last change: 19 October 1994 4
Man(1) output converted with
man2html