YTalk(1)

πŸ“¦ version 3.3.0, in fedora 43, fedora 44, nixos 26.05, nixpkgs unstable

okay bestie, sit DOWN, because we're reading YTalk(1) together and it's giving "group chat but it's 1997 and it lives in your terminal" πŸ’– no cap, this is the whole manual, every flag and every word, nothing skipped. grab a snack πŸ“


✨ NAME ✨

ytalk β€” a multi-user chat program. that's it. short, iconic, no notes πŸ’…


🌸 SYNOPSIS 🌸

ytalk [-s] [-Y] [-E] [-i] [-q] [-v] [-h hostname_or_ip] username...

πŸ¦‹ DESCRIPTION πŸ¦‹

YTalk 3.3.0

okay so YTalk is, at its heart, a multi-user chat program. it works almost exactly like the UNIX talk program and it even talks to the same talk daemon(s) β€” but the whole flex, the entire reason it exists, is that YTalk lets you have multiple connections at once. main character energy, fr fr πŸ‘‘

the username field is lowkey flexible and accepts a bunch of different shapes:

  • 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
  • aliasname β€” an alias defined in your .ytalkrc

you can stack multiple user names on the command line, like:

ytalk george fred@hissun.edu marc@grumpy.cc

and here's what the flags do, one by one, no skipping 🫢

  • -s β€” starts your YTalk window in a shell.
  • -Y β€” requires a capital Y or N as the answer to any yes/no question. caps lock era.
  • -E β€” requires you to press escape once before answering a yes/no question. this one's for the people who type while staring at the keyboard, we love them.
  • -i β€” disables the auto-invite port. meaning you won't see "talk to blah@blah.com", but your talk daemon will beep you instead. rude but okay.
  • -q β€” makes YTalk prompt you before quitting. it's asking for consent, periodt.
  • -v β€” prints the program version and exits. bye πŸ‘‹
  • -h β€” specifies the name or address of the local machine. super useful on multi-homed machines, or virtual hosts, to specify which network interface to use for communication.

so for every user you put on the command line, YTalk will try to connect to the talk daemon on that user's host and figure out whether that user has left an invitation for you to call. if they haven't? YTalk leaves an invitation for him and tells his talk daemon to send an announcement to his screen. note bestie: there is no dedicated YTalk daemon. none. it just vibes with the existing ones.

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. and 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. iconic behaviour honestly.

once a connection is 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 β€” and this is the tea β€” many of the features of YTalk can only operate when you're connected to a user who is also using YTalk. for the rest of this document, it's assumed that all connected 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 screen gets further subdivided into smaller and smaller windows, one for each connected user. and right now, the number of connected users is limited by the number of lines on your terminal (or window), because each connected user needs at least three lines. the math is mathing, sorry πŸ₯²

as each new user is added to the conversation, YTalk will transmit information about that user to all the other connected YTalk users so their screens also subdivide and incorporate the new user. but if the new user is using UNIX talk, then information about him will NOT be transmitted, because his screen would be unable to accept multiple connections.

the original author says, and I quote the vibe: he gave brief thought to allowing at least the output of UNIX talk users to be transmitted to all connected YTalk users, but he has not written any code to do so. respect for the honesty tbh.

also note that even though UNIX talk cannot handle multiple connections, 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're 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
k: kill all unconnected
o: options
r: rering all
s: shell
u: user list
w: output user to file
q: quit

let me walk you through them πŸšΆβ€β™€οΈ

  • choosing option a gives you 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 invitation and ring the given user.
  • choosing option d lets you select the name of a connection to terminate. rip to that connection.
  • choosing option k makes YTalk forget all pending (waiting) connections. memory? cleared ✨
  • choosing option o lets you view and/or modify any of the YTalk options. see the OPTIONS section below for a list of YTalk options.
  • choosing option r re-rings all users that have not yet responded to your talk invitation.
  • choosing option s lets you invoke a shell in your YTalk window. all other users will see what happens in your shell πŸ‘€. and YTalk will automatically resize your window down to the size of the smallest window you're connected to, in order to ensure that all users always see the same thing. fairness, we stan.
  • the u option displays a list of connected and unconnected users, as well as their window sizes and what version of talk software they're running. it's a whole roster.
  • choosing option w lets you 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.
🚨 warning bestie 🚨 the file, if it exists, will be OVERWRITTEN. like, gone. no undo. and by choosing w and the same user again, further output to the file will be terminated.

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. in the author's opinion β€” and honestly, correct β€” this is much preferable to blitting the announcement message and messing up user B's screen. the command-line option "-i" turns this off.


🌈 RUNTIME OPTIONS 🌈

when you select Options off of the main menu, you're 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 reringing [off/on]
p: [don't] prompt before rerings
q: [don't] prompt before quitting

and here's what each one actually does, no gatekeeping πŸ’œ

  • 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 overextend the right margin will be automatically moved to the next line on your screen. aesthetically pleasing, honestly.
  • 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 session automatically, without asking you for verification. bold of it.

  • 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. it's just letting people in.
  • if rering is turned on, then YTalk will re-ring any user who does not respond to your invitation within 30 seconds. give them thirty seconds and then we're nagging.
  • if prompt-rering is turned on, then YTalk will ask you before re-ringing a user.
  • if prompt-quit is turned on, then YTalk will wait for keyboard input before quitting.

any of these options can be set to your preference in your .ytalkrc file, as described below.

✨ YTALK STARTUP FILE ✨

okay so this is the part where it gets personal πŸ’– if your home directory has a file called .ytalkrc in it, YTalk will read that file while it's starting up. And bestie, you can set all the YTalk runtime options in there, plus a few of the startup options too. it's giving "customize your whole experience" and honestly? obsessed. πŸŽ€


🌸 SETTING BOOLEAN OPTIONS 🌸

Boolean options can be pre-set with this exact syntax:

turn option [off | on]

where option is one of scrolling, word-wrap, auto-import, auto-invite, rering, prompt-rering, prompt-quit, caps, escape-yesno, noinvite, ignorebreak, or beeps. Setting these works just like it was described above, no cap. So for example, you could enable word-wrap with the line:

turn word-wrap on

look at you go πŸ’…


πŸ¦‹ ALIASES πŸ¦‹

You can set up aliases so you don't have to type out the full address of the user you wanna ring. it's the "saved contact" feature before saved contacts were a thing, fr fr. There are three types of aliases:

  • alias aliasname@ username@ β€” Replaces aliasname@host with username@host for every host. The @ at the end of username@ is not required. (yes, you read that right, it's optional, we love low-effort input 😌)
  • alias @aliashost @realhost β€” Replaces user@aliashost with user@realhost for every user. The @ at the beginning of @realhost is not required either.
  • alias aliasname user@host β€” Replaces aliasname with user@host.

🌈 SELECTING INTERFACES AND VIRTUAL HOSTS 🌈

On machines with multiple IP addresses (multiple interfaces, or virtual hosts), you can pick the default address that YTalk uses to communicate, using the localhost command in your .ytalkrc file. The syntax is:

localhost hostname-or-IP-address

that's it. that's the whole thing. iconic. ✨


πŸ’œ SETTING RE-ADDRESS MODES πŸ’œ

okay so the whole 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 typically hostname) than the remote machines do. messy, I know, but we're handling it. The basic syntax of a readdress command is:

readdress from-address to-address domain

The readdress statement is basically making a claim that the machine(s) in domain communicate with the machine(s) at from-address by sending a packet to to-address. And since most users have absolutely no use for this whatsoever, we're only describing it briefly. 🫢

THIS IS NOT ROUTING. like, at all. do not come for me.

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's running on domain 192.67.141.0 and it receives packets from 192.188.253.1, then it should respond to 192.67.141.9, not 192.188.253.1. right? right. okay, okay, okay. so 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. πŸ’€

Note that, in this case, the problem could also have been solved by telling the home YTalk to use the 192.67.141.0 interface, when doing YTalk requests across the PPP link. just so you know your options, bestie. 🧚


πŸ“ FILES πŸ“

  • /usr/local/etc/ytalkrc β€” System-wide defaults file.
  • ~/.ytalkrc β€” User's local configuration file. This file overrides options set in the system ytalkrc file. (user stays winning, periodt πŸ‘‘)

πŸ‘‘ CURRENT MAINTAINER πŸ‘‘

Andreas Kling <keso@impul.se>


🌟 ORIGINAL AUTHOR 🌟

Britt Yenne


🌸 PAST MAINTAINERS 🌸

Roger Espel Llima Jessica Peterson


πŸ’– 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. 😭 (no literally, the respect is mutual)

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.

Thanks to Steve McIntyre for patches and ideas.

Thanks to Katarina Erkkonen for CVS hosting.

Thanks to Alexander Rigbo for patches, testing and many good ideas.


πŸ™ˆ BUGS πŸ™ˆ

Please mail any bugs to the maintainer of this version, at <keso@impul.se>. we're listening, we promise 🫢


⭐ SEE ALSO ⭐

http://www.impul.se/ytalk/


πŸ’… LICENSE πŸ’…

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.


and that's the whole page, bestie πŸ’– this was YTalk 3.3.0, dated 2 Jan 2005 β€” yeah she's an elder but she ate and left no crumbs, go forth and ytalk responsibly βœ¨πŸŽ€

πŸ“¦ where this page comes from