NAME
ytalk - A multi-user chat program.
SYNOPSIS
ytalk [-x] [-s] username...
DESCRIPTION
YTalk V3.0 Patch Level 2
YTalk is in essence a multi-user chat program. It works
almost exactly like the UNIX talk program and even communi-
cates with the same talk daemon(s), but YTalk allows for
multiple connections.
The username field may be formatted in several different
ways:
name - some user on your machine
name@host - some user on a different machine
name#tty - some user on a particular terminal
name#tty@host - some user on a particular tty on a
different machine
name@host#tty - same as "name#tty@host"
You can specify multiple user names on the command line, ie:
ytalk george fred@hissun.edu marc@grumpy.cc
The -x option disables the X11 interface (described below).
The -s option starts your YTalk window in a shell.
For each user on the command line, YTalk will attempt to
connect to the talk daemon on the specified user's host and
determine if that user has left an invitation for you to
call. If not, YTalk leaves an invitation for him and tells
his talk daemon to send an announcement to his screen.
There is not yet a dedicated YTalk daemon, but there will
be. Right now, YTalk is able to communicate with BOTH
existing versions of UNIX talk daemons. For any particular
host, YTalk will attempt to communicate with a talk daemon
the caller's host also supports. If the two hosts have no
daemon in common, then UNIX talk will not function at all,
but a connection is possible through (and only through)
YTalk.
Once a connection has been established between two users,
they can chat back and forth to their hearts' content. The
connection is terminated when one of them hits control-C or
selects quit off the main menu.
YTalk is perfectly compatible with UNIX talk and they can
even converse with each other without any problems.
However, many of the features of YTalk can only operate when
you are connected to a user who is also using YTalk. For
the rest of this document, it will be assumed that all con-
nected users are using YTalk, unless otherwise stated.
If you specified more than one user on the YTalk command
line, then YTalk will process and add each user to the
conversation as they respond to your invitation. As each
new user enters the conversation, the screen is further sub-
divided into smaller and smaller windows, one for each con-
nected user. Right now, the number of connected users is
limited by the number of lines on your terminal (or window),
for each connected user needs at least three lines.
YTalk does implement primitive support of the X11 Windowing
System. If the environment variable DISPLAY is set, then
YTalk attempts to connect to that X server. Further details
about the X11 interface (and how to turn it off) are given
below.
As each new user is added to the conversation, YTalk will
transmit information about that user to all other connected
YTalk users so that their screens will also subdivide and
incorporate the new user. If the new user is using UNIX
talk, then information about him will NOT be transmitted,
for his screen would be unable to accept multiple connec-
tions. I have given brief thought to allowing at least the
output of UNIX talk users to be transmitted to all connected
YTalk users, but I have not written any code to do so. Note
that even though UNIX talk cannot handle multiple connec-
tions, it is still possible for YTalk to handle multiple
UNIX "talk" connections. For example, george (using YTalk)
could communicate with fred and joe (both using UNIX talk),
but fred and joe would be unaware of each other. The best
way to understand the limitations that UNIX "talk" places on
YTalk is to test various connections between the two and see
how things work.
ESCAPE MENU
Whenever you are using YTalk, you can hit the ESCAPE key to
bring up a menu which at this moment has these options:
a: add a user
d: delete a user
o: options
s: shell
u: user list
w: output user to file
q: quit
By choosing option "a", you are given the opportunity to
type the name of any user you wish to include into the
conversation. Again, YTalk will accept an invitation from
that user if an invitation exists, or will leave an invita-
tion and ring the given user.
By choosing option "d", you can select the name of a connec-
tion to terminate.
By choosing option "o", you can view and/or modify any of
the YTalk options. See the OPTIONS section below for a list
of YTalk options.
By choosing option "s", you can invoke a shell in your YTalk
window. All other users will see what happens in your
shell. YTalk will automatically resize your window down to
the size of the smallest window you are connected to, in
order to ensure that all users always see the same thing.
The "u" option displays a list of connected and unconnected
users, as well as their window sizes and what version of
talk software they are running.
By choosing option "w", you can select any connected user
and type the name of a file, and all further output from
that user will be dumped to the specified file. The file,
if it exists, will be OVERWRITTEN. By choosing "w" and the
same user again, further output to the file will be ter-
minated.
Oh, one other thing: when user A attempts to ytalk to user
B, but user B is already ytalking with user C, user A's
YTalk program will realize that user B is already using
YTalk, and will communicate with user B's YTalk program
directly in order to initialize the conversation. User B
will see a nice windowed message like:
Do you wish to talk with user A?
and he will be prompted for a yes/no answer. This, in my
opinion, is much preferable to blitting the announcement
message and messing up user B's screen.
RUNTIME OPTIONS
When you select Options off of the main menu, you are given
the opportunity to edit the YTalk options. The current
options are:
s: turn scrolling [off/on]
w: turn word-wrap [off/on]
i: turn auto-import [off/on]
v: turn auto-invite [off/on]
r: turn auto-rering [off/on]
a: turn asides [off/on]
If scrolling is turned on, then a user's window will scroll
when he reaches the bottom, instead of wrapping back around
to the top.
If word-wrap is turned on, then any word which would overex-
tend the right margin will be automatically moved to the
next line on your screen.
If auto-import is turned on, then YTalk will assume that you
wish to talk to any users which connect to other YTalk users
which are connected to you. That last sentence does make
sense; try again. YTalk will add these users to your ses-
sion automatically, without asking you for verification.
If auto-invite is turned on, then YTalk will automatically
accept any connection requested by another user and add them
to your session. You will not be asked for verification.
If auto-rering is turned on, then YTalk will automatically
re-ring any user who does not respond to your invitation
within 30 seconds. You will not be asked for verification.
If asides is turned on (it may not be available), then key-
board input received while the input focus is in a specific
users' window will only be sent to that user. See the X11
interface description below.
Any of these options can be set to your preference in your
.ytalkrc file, as described below.
YTALK STARTUP FILE
If your home directory contains a file named ".ytalkrc" then
YTalk will read this file while starting up. All YTalk run-
time options, as well as some startup options, can be set in
this file.
SETTING BOOLEAN OPTIONS
Boolean options can be pre-set with the following syntax:
turn option [off | on]
where option is one of scrolling , word-wrap , auto-import ,
auto-invite , auto-rering , asides , or X . Setting these
options works just like described above. Turning X on or
off will enable or disable the X11 Interface described
below. For example, one could enable word-wrap with the
line:
turn word-wrap on
SETTING RE-ADDRESS MODES
The purpose of readdressing is to allow Ytalk connections
across point-to-point network gateways where the local
machines know themselves by a different address (and typi-
cally hostname) than the remote machines. The basic syntax
of a readdress command is this:
readdress from-address to-address domain
The readdress statement simply makes a claim that the
machine(s) in domain communicate with the machine(s) at
from-address by sending a packet to to-address . Since most
users have no use for this whatsoever, I'll describe it only
briefly.
THIS IS NOT ROUTING. For example, my machine at home is
connected via PPP to the network at my office. My machine
at home thinks its ethernet address is 192.188.253.1 and its
hostname is "talisman.com". The network at my office has
the address 192.67.141.0. When I'm connected via PPP, my
home machine is placed into the office network as address
192.67.141.9 with hostname "talisman.austin.eds.com".
YTalk needs to know that if it is running on domain
192.67.141.0 and receives packets from 192.188.253.1 that it
should respond to 192.67.141.9, not 192.188.253.1. right?
right. okay, okay, okay. I put this line into my .ytalkrc
on both ends:
readdress talisman talisman.austin.eds.com 192.67.141.0
On my home end, this translates to:
readdress 192.188.253.1 192.67.141.9 192.67.141.0
which tells my home machine to advertise itself as
"192.67.141.9" instead of "192.188.253.1" when YTalk-ing to
machines on the network "192.67.141.0". On the office end,
the readdress command translates to:
readdress 192.67.141.9 192.67.141.9 192.67.141.0
which the office machines basically ignore.
Enough. For more information on how to use this, consult
the source code or send me a letter. :-)
X11 INTERFACE
If the DISPLAY environment variable is defined when YTalk
starts up, then YTalk will attempt to communicate with that
X server. A window will be created for you and each user
you are connected to. The X11 Interface can be disabled
either by specifying -x on the command line or by putting
this line into your .ytalkrc file:
turn X off
A window is created for each individual user in the conver-
sation. If the input focus is in the main window (ie: the
one with "ytalk" in the title bar) then anything typed will
be sent to all connected users. If the input focus is in
one of the users' windows, then anything typed will be sent
as an aside to only that user. If the "aside" option is
turned off (see above) then ytalk will beep and not accept
anything typed when the input focus is not in the main win-
dow.
YTalk consults the X11 Resource Database for these user-
definable configuration options:
YTalk.display: X server to connect to, defaulting to
the DISPLAY environment variable.
YTalk.reverse: reverse black/white pixels.
YTalk.font: font to use, defaulting to "9x15".
YTalk.geometry: window size, defaulting to "80x24".
FUTURE WORK
Work is being done on the following ideas:
1) a dedicated YTalk daemon.
2) MBCS/NLS support.
FILES
/usr/local/etc/ytalkrc
System-wide defaults file.
$HOME/.ytalkrc
User's local configuration file. This file overrides
options set in the system ytalkrc file.
AUTHOR
Britt Yenne
yenne@austin.eds.com
CONTRIBUTORS
Special thanks to Carl Edman for numerous code patches, beta
testing, and comments. I think this guy spends as much time
on ytalk as I do.
Special thanks to Tobias Hahn and Geoff W. for beta testing
and suggestions.
Thanks to Sitaram Ramaswamy for the original YTalk manpage.
Thanks to Magnus Hammerin for Solaris 2.* support.
Thanks to Thilo Wunderlich for Linux support.
Thanks to Jonas Yngvesson for aside messages in X.
Thanks to Andreas Stolcke for fixing the X resource database
calls.
Thanks to Pete Wenzel for fixing the #elif directive.
Thanks to John Vanderpool, Shih-Chen Huang, Andrew Myers,
Duncan Sinclair, Evan McLean, Larry Schwimmer, J. Adam
Hawkes, and Mark Musone for comments and ideas.
The README file shipped with ytalk gives detailed attribu-
tions.
BUGS
If you have any ideas, comments, or questions, I'd be happy
to hear from you at:
ytalk@austin.eds.com