KIBITZ(1)
π KIBITZ(1) β the group-chat manual π
okay so bestie, this is kibitz from the General Commands Manual (yes the actual man page, section 1, we're fancy here). It lets two people vibe in the same shell together. Sharing is caring, no cap.
β¨ 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 lets two (or more) people interact with one shell (or literally any arbitrary program, it's giving flexible). Uses include:
- A novice user can ask an expert user for help. With
kibitz, the expert can see what the user is doing and offer advice, or just show how to do it right. (mentor era π) - By running
kibitzand 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. (iconic honestly) - People can team up on games, document editing, or other cooperative tasks where each person has strengths and weaknesses that complement one another. (duo queue energy π¦)
π 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 interpreter. 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:
kibitz user2 sleep 1000000
π¦ ARGUMENTS π¦
kibitz takes arguments, these should also be separated by whitespace.
-noprocβ runskibitzwith no process underneath. Characters are passed to the otherkibitz. This is particularly useful for connecting multiple interactive processes together. In this mode, characters are not echoed back to the typist. π-noescapeβ disables the escape character.-escapechar β sets the escape character. The default escape character is^].-silentβ turns off informational messages describing whatkibitzis doing to initiate a connection. (shhh π€«)-ttyttyname β defines the tty to which the invitation should be sent.-proxyusername β if you startkibitzto user2 on a remote computer,kibitzperforms arloginto the remote computer with your current username. This flag causesrloginto 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 variables USER and LOGNAME, then by using the commands whoami and logname.
π‘ The arguments-noescapeand-escapecan also be given by user2 when prompted to runkibitz. Bestie gets a say too.
π 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. Inception vibes, honestly. 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. (just keep stacking them π)
The xkibitz script is similar to kibitz but supports the ability to add additional users (and drop them) dynamically. π
π CAVEATS π
kibitzassumes the 2nd user has the same terminal type and size as the 1st user. If this assumption is incorrect, graphical programs may display oddly. πkibitzhandles character graphics, but cannot handle bitmapped 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).
kibitzuses the same permissions as used byrlogin,rsh, etc. Thus, you can onlykibitzto users at hosts for which you canrlogin. Similarly,kibitzwill prompt for a password on the remote host ifrloginwould. π- If you
kibitzto users at remote hosts,kibitzneeds to distinguish 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 variableEXPECT_PROMPTto anegrep(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"($|%|#) ". kibitzrequires thekibitzprogram on both hosts.kibitzrequiresexpect(1). π«Ά- By comparison, the
xkibitzscript uses the X authorization mechanism for inter-host communication so it does not need to login, recognize your prompt, or requirekibitzon 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
SHELLis used to determine the shell to start, if no other program is given on the command line. - If the environment variable
EXPECT_PROMPTexists, it is taken as a regular expression which matches the end of your login prompt (but does not otherwise occur while logging in). See also CAVEATS above. - If the environment variables
USERorLOGNAMEare defined, they are used to determine the current user name for akibitzto a remote computer. See description of the-proxyoption 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. (be a good bestie and give credit π)
okay that's the whole thing bestie, you ate π
signed off on 19 October 1994, and yes, this is KIBITZ(1) β the one and only. bye babe π¦β¨
π¦ where this page comes from
- debian bookworm: expect 5.45.4-2+b1
- ubuntu jammy: expect 5.45.4-2build1
- ubuntu noble: expect 5.45.4-3
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms