What is TNT? ------------ TNT is an Emacs client for AIM, AOL's free instant messaging service. Using TNT, you can, from the comfort of your Emacs window, check whether friends and coworkers are online, send them "instant messages", and join them in multi-party private chat sessions. Unlike the official AIM clients, TNT is designed to be functional rather than pretty, easy to use rather than easy to learn. It doesn't have a graphical user interface, fancy artwork, or other random fluff. Instead, like other emacs extensions, it has a keyboard-driven, text-based interface. TNT is AIM for grownups ;-). What versions of Emacs are supported? ------------------------------------- TNT was developed using GNU Emacs 19.34. We've briefly tested it with versions 19.29, 19.30, 20.2, and 20.3, and it seems to work. It also seems to work with XEmacs 20.4. If you are using a version of GNU Emacs earlier than 19.29, you will not be able to load the compiled (.elc) files because those versions used a different byte-code format. You may, however, be able to run successfully if you delete (or recompile) the .elc files. Version 18 of GNU Emacs is not supported. Is there support for TNT? ------------------------- The lastest release and other information about TNT can be found at the TNT home page, http://www.aim.aol.com/tnt. If you are using TNT and want to report bugs or make suggestions, please e-mail us at toctoc-list@aol.net. Please also state whether you want your name and e-mail address mentioned as a contributor. If you don't specify, we'll assume you don't. What does TNT stand for? ------------------------ TNT was so named in order to differentiate it from TiK. What then, you may ask, is TiK? TiK is another unoffical AIM client that is written in Tcl. Both TNT and TiK use a simplified protocol called TOC to communicate with the AIM host. (Actually, they communicate with a TOC server which, in turn, communicates with the AIM host). Details of the TOC protocol are given in the file PROTOCOL, which is included in this directory. Info on TiK can be found at http://www.aim.aol.com/tik. How do I get an account? ------------------------ Before you can use TNT, you need to have an AIM account. The account is free, and registering for it is only slightly painful :-). Just go to the AIM home page, http://www.aol.com/aim, and click on one of "sign up" buttons there. This will take you to a registration page where you can enter your desired username (or "screen name" in AOL-speak) and password. You also need to enter your e-mail address in order to receive the confirmation e-mail that will allow you to permanently activate your account. The hardest part about registering is choosing a screen name. There are currently more than 30 million screen names in use, so don't expect the first one you try to work. Many people give up, believing that the registration page is busted, after trying only their first and/or last names. Doh! Unless you have an unusual name, this isn't going to work. You need to be creative. How do I install TNT? --------------------- To install TNT, you must perform two steps. First, you must ensure that the TNT Lisp files are in a directory that is on your load path; second, you must arrange for these files to be loaded into Emacs. There are several ways of accomplishing each step. The method you choose will depend on how your computer is set up and on your personal preferences. Rather than attempt to describe all possibilities, I'll just describe one simple, albeit non-optimal, method. If you are experienced with Emacs, you'll undoubtedly want to improve on it. Both steps can be accomplished by adding two lines to your Emacs init file. This file is typically called ".emacs" and usually resides in your home directory. Edit this file and add the following two lines to the end, substituting the absolute path of the directory containing this README file for the "..." in the first line. (setq load-path (cons ".../lisp" load-path)) (load "tnt") Once you've done this, exit and restart Emacs to force the change to take effect. If you see an error message in the echo area at the bottom of the Emacs window, you may have mistyped one of the lines. If there's no error, you're probably all set. To test whether TNT was loaded, use the describe-function command (invoked by C-h f) to describe the function tnt-open. If it works, you should be able to run TNT. (Note: TNT has currently only been tested with Emacs version 19.34. How well it works with earlier or later versions is not known). How do I use TNT? ----------------- The table below summarizes TNT's primary commands. They can be invoked interactively using either M-x or the key bindings shown. A detailed description of each command follows the table. +------------------+-------------+-------------------------------------------+ | Function | Key Binding | Summary | +------------------+-------------+-------------------------------------------+ | tnt-open | C-x t o | Starts a new TNT session | | tnt-kill | C-x t k | Terminates the current session | | tnt-im | C-x t i | Starts an instant-message conversation | | tnt-join-chat | C-x t j | Joins a chat room | | tnt-show-buddies | C-x t b | Shows the buddy list | | tnt-edit-buddies | C-x t B | Invokes the buddy list editor | | tnt-accept | C-x t a | Accepts a message or a chat invitation | | tnt-reject | C-x t r | Rejects a message or a chat invitation | | tnt-next-event | C-x t n | Shows next event in notification ring | | tnt-prev-event | C-x t p | Shows previous event in notification ring | +------------------+-------------+-------------------------------------------+ tnt-open (C-x t o) This command signs onto the AIM service. You need to supply your screen name and password in response to the prompts in the minibuffer. If all goes well, you will get a "Signed on" message in the echo area, and an online indicator consisting of your screen name enclosed in brackets will appear in the mode line. If something goes wrong, you'll probably just get a message like "TNT connection lost" in the echo area. If you don't want to enter your screen name and password every time, you can set the variables tnt-default-username and tnt-default-password in your init (.emacs) file. If both of these variables are set, tnt-open will sign on immediately without prompting. However, if other people have read permission for your init file, you may want to set only the username and continue to enter your password manually. tnt-kill (C-x t k) This command signs off of the AIM service (or "kills" the TNT session). You'll get a "Signed off" message in the echo area, and the mode line will no longer show the online indicator. tnt-im (C-x t i) This command initiates an "instant message" conversation with another user. You will be prompted for the user's screen name. If the user is on your buddy list, you can use the Emacs "completion" feature to assist you. Hitting the tab key after typing one or more characters will cause Emacs to fill in as much of the rest of the name as it can. After you enter the screen name, the selected window will switch to a buffer in which the conversation will take place. To send a message to the other user, simply type the message at the end of buffer. The message will auto-wrap as you type and will be sent when you hit RETURN (or ENTER). You can tell that the message has been sent because it will be prefixed with your screen name. When the person with whom you're conversing responds, his message, prefixed by his screen name, will be inserted in the buffer immediately after your sent message. If you had already starting typing a new message when the response arrives, the response will be inserted before the new message so as not to disrupt your typing. When you are through with the conversation, you can simply kill or hide the buffer. You can carry on multiple conversations at once. Each conversation goes into its own buffer. The buffers have names of the form *im-name*, where "name" is the normalized screen name of the user you're conversing with. (Normalized simply means that all spaces have been removed from the screen name and that the screen name has been smashed to lowercase). If the conversation buffer for a particular user isn't visible at the time a message from that user arrives, you'll get a notification in the echo area informing you that a new message is available. You can use the tnt-accept or tnt-reject commands (described below) to either view or discard the message. tnt-join-chat (C-x t j) This command joins a chat room in which you can converse with several users at once. You will be prompted for the name of the room. The default is a randomly-generated name of an empty chat room. In most cases you will just want to use this name and invite other users into the room once you've joined. However, if you know the name of an existing room, you may enter that instead. Once inside a chat room, you can invite other users to join. You do this by typing an invitation message (describing the topic being discussed in the room) and terminating it with TAB (C-i). You will be prompted for a list of users to invite. Enter their screen names, separated by commas. Each invited user will recieve a copy of the invitation message and will be given an opportunity to join the room. You will be informed as they join by status messages that appear in the room's buffer. To send a message to all users in a room, simply type the message and hit RETURN. To send a private message to a particular user, terminate the message with LINEFEED instead of RETURN. (You will be prompted for the screen name of the desired recipient). tnt-accept (C-x t a) This command accepts a new message or chat invitation from another user. Use it when you recieve a notification in the echo area. It will switch the selected window to either the conversation buffer or the chat buffer, as appropriate, and remove the notification. If there was more than one pending notification, the next one will pop up in its place. When you've dealt with all of them, the echo area will return to its normal (blank) state. tnt-reject (C-x t r) This command rejects a new message or chat invitation from another user. Like tnt-accept, it is used when a notification appears in the echo area. Rather than switch to the conversation or chat buffer, though, it kills it. tnt-next-event (C-x t n) tnt-prev-event (C-x t p) Message and chat notifications are kept in a ring. These commands allow you to step through the ring and view pending notifications without having to accept or reject them. When you get to a notification that you want to act on, you can use tnt-accept or tnt-reject at that point. tnt-show-buddies (C-x t b) This command switches the selected window to the *buddies* buffer. This buffer is constantly updated while you are online to show the status of your "buddies". Buddies are other users of either the AIM service or the primary AOL service. You designate which users are your buddies by creating a "buddy list" using the tnt-edit-buddies command described below. If you do not have a buddy list, a default buddy list consisting of only you is used. While viewing the buddy list, you can use the "n" and "p" keys to move the cursor to the next or previous buddy name. With the cursor positioned on a buddy name, you can use the "i" key to initiate an conversation with that buddy. tnt-edit-buddies (C-x t B) This command allows you to edit your buddy list. It switches the selected window to the *edit-buddies* buffer, which shows your entire buddy list (both online and offline users), and allows you to edit the list. In the current release of TNT, the buddy-list editor is rather rudimentary. You just edit the buffer in text mode and use the tnt-save-buddy-list command (C-x C-s) to save your changes. Because the buddy list is stored on the host, you must be online in order to edit it. The buddy list is organized as a two-level hierarchy. At the top level are group names (e.g. "Friends", "Coworkers", etc.), and at the second level are the screen names of the users in each group. In the buddy editor, the buddy list is formatted so that the group names begin at the left margin. Following each group name is a list of screen names of users in that group, one screen name per line. In order to distinguish them from group names, the screen names are indented. When editing the buddy list, you must be careful to maintain this format.