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