XKIBITZ(1)
β¨ XKIBITZ(1) β¨
okay bestie, pull up a chair π this is xkibitz, a page from the General Commands Manual, and it's literally the group-chat of your terminal. no cap.
πΈ NAME πΈ
xkibitz β allow multiple people to interact in an xterm
π SYNOPSIS π
xkibitz [ xkibitz-args ] [ program program-args... ]
π¦ INTRODUCTION π¦
so here's the vibe: xkibitz lets users in separate xterms share one shell (or honestly any program that runs in an xterm). it's giving collaboration, it's giving main character energy. here's what the girlies use it for:
- 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. (tutor era π«Ά) - By running
xkibitzand 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. (yes, editing the convo while it's happening β iconic) - People can team up on games, document editing, or other cooperative tasks where each person has strengths and weaknesses that complement one another. (squad goals fr fr)
- 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. (chaos, but the productive kind π )
π 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 display. (little name badge for each display, adorable π)
To show the current tags and displays, enter =.
To drop a display, enter - tag where tag is the display's tag according to the = command. (bye bestie π)
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. (everyone in the same group chat now)
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. (yes you can literally pause it, slay)
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-displayflags can be given. For example, to start upxkibitzwith three additional displays:
xkibitz -display mercury -display fox -display dragon:1.0
π CAVEATS π
ngl, there are some limits and we're being honest about them:
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 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 = 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. (help a girl out π₯Ί)
π± 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 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. periodt.
π SEE ALSO π
Tcl(3),libexpect(3)kibitz(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
okay that's the whole page bestie β¨ go forth and kibitz responsibly π«Ά this was General Commands Manual energy, dated 06 October 1994, and that's a wrap, mwah π
π¦ where this page comes from
- alpine 3.22: expect-doc 5.45.4-r5 Β· NIST-PD
- alpine 3.23: expect-doc 5.45.4-r5 Β· NIST-PD
- alpine 3.24: expect-doc 5.45.4-r5 Β· NIST-PD
- arch rolling: expect 5.45.4-5 Β· custom
- centos-stream 10: expect 5.45.4-25.el10 Β· LicenseRef-Fedora-Public-Domain
- centos-stream 9: expect 5.45.4-16.el9 Β· Public Domain
- debian bookworm: expect 5.45.4-2+b1
- fedora 43: expect 5.45.4-29.fc43 Β· LicenseRef-Fedora-Public-Domain
- fedora 43: expect 5.45.4-31.fc43 Β· LicenseRef-Fedora-Public-Domain
- fedora 44: expect 5.45.4-31.fc44 Β· LicenseRef-Fedora-Public-Domain
- fedora 44: expect 5.45.4-33.fc44 Β· LicenseRef-Fedora-Public-Domain
- nixos 26.05: expect 5.45.4
- nixpkgs unstable: expect 6.0a2
- opensuse-leap 16.0: expect 5.45.4-160000.2.2 Β· SUSE-Public-Domain
- opensuse-leap 16.0: expect 5.45.4-160000.2.2 Β· SUSE-Public-Domain
- opensuse-leap 16.0: expect 5.45.4-160000.2.2 Β· SUSE-Public-Domain
- opensuse-leap 16.0: expect 5.45.4-160000.2.2 Β· SUSE-Public-Domain
- 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