tkbroadcast version 3.2 ----------------------- Ethan Gold (etgold@cs.vassar.edu), August 1997 (Ethan or Clavius at the sitcom.vassar.edu:5500 metaserver) http://www.cs.vassar.edu/~etgold/tkbc.html (version 1.0 Jan-May 1996, unreleased - be glad) (disclaimer follows) This version is better! Use it! Tkbroadcast is an Xwindows based messaging utility designed to provide the funtionality of broadcast on the Apple Macintosh via IP. While appletalk broadcast is available for Unix, it isn't as slick as theMac version, and it requires CAP appletalk. If you are mainly interested in messaging between unix workstations, then tkbroadcast is for you! Written entirely in standard tcl/tk, tkbroadcast should be highly portable - EVEN to the Mac and Windows (NT?), and since it uses IP instead of a proprietary LAN protocal, it should works across the internet. Consider this emailware. If you like it, send me email! NOTE: a major overhaul was done for 2.0 AND 3.0. Please read the changes section towards the end of this document if you are upgrading from an earlier version. REQUIREMENTS: * tcl/tk versions 7.6 and 4.2 or newer which contain the new file handling commands. This can be hacked around for tcl 7.5 and 4.1 if necessary. INSTRUCTIONS: Edit the top of the script to point to the copy of wish on your system. Copy the tkbroadcast scripts into a directory in your PATH. I recommend the following link command: ln -s tkbroadcast.tcl tkbc Create a .tkbcrc file in your HOME directory and follow the sample .tkbcrc file format. All of the fields in the sample file are required. Note that the "record" fields are no longer used. Actually you might now be able to create this initial file entirely from within tkbc. if you're going to run the METASERVER Hopefully you know of a metaserver that is already running that you would like to be registered on. Config that metaserver into your .tkbcrc file. If you would like to run a metaserver you need to pick an unused port to run the metaserver on. Pick something that people won't try to use for anything else (such as tkbc clients). Follow the sample metaconfig.sample file. The metaserver looks for it's config in your home directory in a file called .tkbcmsrc unless you specify another file as the first argument on the command line. Run the metaserver in the background and then config your client to point to it (if you want). Publish your site. Email me if you want it listed in this file or on the tkbc homepage. Start tkbc. You will only receive messages when tkbc is running! This is a change from early versions which used a seperate daemon process to handle incoming messages. The text entry box in tkbc lets you spcify a machine and port directly instead of having to read it from the metaserver. Try sending a message to yourself by selecting your name and clicking "send" or by double-clicking your name in the listbox. All the information stored in the resource file ~/.tkbcrc SHOULD be manageable from the GUI Except for a couple "undocumented" features. I recommend running tkbc from your .xinitrc file or whatever file you use to set up your X clients unless you are on the slow side of a dialup connection. Use the -iconic command line option to start tkbc iconified to avoid desktop clutter. The included pixmap tkbroadcast.xpm is the original icon for Macintosh Broadcast by Joachim Lindenberg. I use an entry for tkbc in my window manager resource file that uses this icon. BUGS: * Try underlines instead of spaces in usernames until the protocol between the metaserver and client can handle them. FEATURES: * Files can be inserted into outgoing messages * Keypad Enter in the message box will send an outgoing message just like in the Mac version. * Excepting firewalls and other unfortunate obstacles, tkbroadcast should work happily across the internet. * On the fly address and personal info management * Incoming messages can be saved * Multiple compose windows (unlike the modal mac version) * Automatically updating userlist FUTURE: * metaserver metaserver? * non-unix support or special version * File browser for "insert file" on outgoing messages and file browser and save funtion for incoming messages * Personalized Icons? * A real manpage * Rewrite this README which still smacks of version 1.8 * Send to All has be moved off the work queue. With the advent of the metaserver too much potential for spam exists. CHANGES: since 3.1: * metaserver menu. user is only registered on the server listed in "own info" * metaserver managment from the GUI * removed arbitrary send button and entry, but can re-add if anybody cares * added cookie managment to the GUI * squashed metaserver vwait oversight bug which should have stopped busy wait condition or whatever is keeping the load up. * squashed bug which did not disable polling on network down in the client * squashed bug which did not update entry on duplicate add if entry cookies matched * squashed a missed socket close call bug. "Too many open files" error should harder to generate. * fixed "window already exists in parent" error for hitting buttons that generate windows since 3.0b1: * removed GNU date dependancy * removed all exec calls except getting hostname sound calls for portability * added receiver option and polling flag * added multiple error handling * beefed up error handling around socket and file calls * preliminary internals for multiple metaservers (3.2?) since 2.1: * implemented the metaserver which keeps a running tab of people "registered" using tkbc. The Metaserver ages entries. * The main gui no longer maintains it's own user list. The user list is now read from the configured metaserver. * Send to All has been removed (never worked anyway) * Deleting entries is no longer applicable. since 2.0: * added -iconic command line option to start iconified * added -version command line option * squashed changing Own Info bug, but there's another * squashed geometryless incoming and outgoing windows bug since 1.8: * A major overhaul was done for 2.0. From the user's perspective things are mostly the same, but internally everything's been mushed around. The 4 different scripts from version 1.X have been merged into one big script which maintains everything. The advantages to this approach are MUCH smaller memory footprint, greater likelyhood of cross- platform compatibility (ever try to "exec" on a mac?) faster operation, easier to manager source (I think) and the removal of the problem of interprocess communication, a possibility of a "send to all" function (as requested, but not yet working) and a sure fire way to make sure tkbc quits when X exits. This last item opens up the possibility for a tkbc metaserver which you can register yourself with which can then be queried by other users. This is something for 3.0. * The main tkbc interface now MUST BE RUNNING for you to receive messages since the "server" code is now merged into everything else. This is not to pretty from a user perspective, but it makes my end much simpler. Sorry, folks, you'll have to start tkbc from your .xinitrc files. * Multiple database files - this was initially done to make it easy to test the "send to all" code, but was left in 'caue it's cool. * Beginnings of "send to all" * Incoming messages now display the time and date * Later incoming messages should start appearing back on screen earlier (around 600y pixels instead of 7600.. oops) since 1.7: *Fixed absolute name resolution by parsing /etc/resolv.conf for the domain name. *Added an undocumented (ha!) feature that will play a sound for incoming messages that can be toggled with the line: sound on in the .tkbcrc file. there is currently no widget to supply this information, hence its "undocumented" status. *Fixed initial focus for outgoing messages *Turned on word wrap in the text widgets since 1.6: *Added save options to incoming messages *better key bindings in filename entry widgets *a little more immune to quitting on an error (little) since 1.5: *fixed "dummy" entry *fixed required extra blank line in .rc file *added tilde expansion in the "insert file" entry box. *improved some keyboard bindings *reread now properly rereads the resource file *Added "add new" so new addresses can be added without having to edit the file *address deletion and personal info management from within tkbc. you shouldn't even have to touch the rc file. CONTACT INFO: Please direct any problems, questions, suggestions to etgold@cs.vassar.edu (that's me) and I'll get back to you. I'd love to find out who's using my software, so if you decide to keep it, drop me a line. ACKNOWLEDGEMENTS: Thanks to Joachim Lindenberg for Appletalk Broadcast and John Ousterhout for tcl/tk, David Chappell for his suggestions, and all the patient Vassar computer science majors, Greg, and faculty whom I've bugged about this. DISCLAIMER: ----------- THIS SOFTWARE IS PROVIDED ENTIRELY WITHOUT WARRANTY, EXPLICIT OR IMPLIED! I'M AM NOT RESPONSIBLE FOR LOST DATA, MISUSED/ABUSED NETWORK RESOURCES, WASTES OF TIME/MONEY/PRODUCTIVITY. DISTRIBUTE THIS SOFTWARE UNDER THE TERMS OF THE GNU PUBLIC LICENSE. THE SUITABILITY OF THIS PRODUCT FOR ANY PURPOSE IS NOT GUARANTEED.