Zephyr on Athena (AC-34)Zephyr is a communication service for sending and receiving messages interactively. It's faster than an e-mail system; messages are delivered instantaneously, however you can converse only with other users who are logged on and running Zephyr at the same time you are.
This document describes the following aspects of Zephyr:
To carry on conversations with Zephyr, you send messages and you also specify what kinds of messages (or notices) you want to receive which is called "subscribing." Besides standard classes and instances that are in use you, and others with whom you want to converse with, can make up your own. For example, if you and your friends want to converse about mystery book writers, you could all send and subscribe to the class name "mystery" and the instance name "writers."
In many cases, you don't need to specify all three components, i.e., class, instance and recipient, when sending or subcribing to messages because Zephyr uses a number of defaults. It's useful to understand the system of defaults so you can make sure that you're sending and/or subscribing to the right messages. The following is a list of the defaults:
Using * means something different when used to specify class, instance or recipient:
If someone is using Zephyr to harass you, send e-mail to stopit@mit.edu. If you believe you are in danger, call the Campus Police immediately at x3-1212.
There are several programs that you use for carrying out Zephyr tasks:
athena% zwrite usernamewhere username is the username of the person to whom the message is to be sent.
Result: If the user is logged in, the following message appears:
Type your message now. End with control-D or a dot on a line by itself.If the user is not currently logged in, the following message appears:
username: Not logged in or not subscribing to messages
Result:Zephyr will say:
Message queued for username...When the message is successfully sent, the word sent will appear at the end of this.
Here is an example of a message being successfully sent:
athena% zwrite joeuser Type your message now. End with control-D or a dot on a line by itself. Hi, Joe! . Message queued for joeuser... sent
Here is an example of a message that can't be sent because the user isn't logged in.
athena% zwrite joeuser username: Not logged in or not subscribing to messagesTo send the same message to a number of different users, just include their usernames, separated by spaces, on the zwrite command line. For example:
athena% zwrite abbott costello
athena% zwrite [-c class] [-i instance] [user]
The following example sends your message to everyone who is subscribing to white-magic instance:
athena% zwrite -i white-magic
Since a class isn't specified, the default is used which is "message" and since an instance isn't specified, the default "personal" is used.
There are many other options available with zwrite. See the man page for more information.
A formatting command can be embedded anywhere in your text. Formatting commands use the following syntax:
text @command(formatted text) textWhere command is the name of a Zephyr formatting command and formatted text is the text to be formatted. You can use delimiters other than parentheses to enclose the text to be formatted, including (), {}, [], and <>.
These following formatting commands can be used:
| Command | Action |
|---|---|
| @roman | nullify @italic and @bold |
| @b or @bold | boldface |
| @i or @italic | italics |
| @l or @left | left aligned |
| @c or @center | center aligned |
| @r or @right | right aligned |
| @small | small type size |
| @medium | medium type size (default) |
| @large | large type size |
| @huge | larger than large type size |
| @(@color(colorname) text) | use a color for specified text |
| @(@font(fontname) text) | use a font for specified text |
Use the following commands set characteristics that relate to the entire Zephyr message.
| Command and syntax | Purpose |
|---|---|
| @beep() | Ring the X bell once. NOTE: Use this feature sparingly -- it can be annoying to recipients if it's used too much. |
| @font(fontname) | Set the current font e.g., courier, times, or helvetica. (Use "xlsfonts | more" to list other possibilities.) |
| @color(colorname) | Set the color. For a list of possibilities, enter the following:
athena% showrgb | more |
A NOTE ABOUT COLORS AND FONTS: Sending Zephyr messages formatted with very large fonts and/or mutliple colors can be annoying. Use font size and color judiciously to ensure that you won't offend your readers.
Zephyr lets you locate other users if they are logged on and using Zephyr. To do this, enter:
athena% zlocate usernameIf that user is logged in and is not "hidden", (see Setting Zephyr Exposure for information) a message is displayed indicating the machine name in which the user is logged in, and the date. For example, if you were trying to locate user costello, a message like this one would be displayed:
athena% zlocate costello W20-575-20.MIT.EDU unix:0 Tue Oct 14 15:26:43 1997If the user you're trying to locate is either not logged in or has set his/her exposure level to hidden, a message to that effect is displayed. Here is an example of locating costello when he is not logged in:
athena% zlocate costello Hidden or not logged-in
There are two ways you can locate several users at once:
If you want to locate multiple users, enter each username, followed by a space. For example:
athena% zlocate abbott costello
abbott@ATHENA.MIT.EDU:
Hidden or not logged-in
costello@ATHENA.MIT.EDU:
sidney.mit.edu :0.0 Wed Aug 12 11:28:25 1998
Using the znol command
The command znol accomplishes two tasks. When first run, the znol command will go through a list of usernames you've created and locate anyone who is logged in and not hidden. Throughout your login session, you'll be notified, via Zephyr messages, when users in this same list log in or out, as long as they're not hidden. To use znol:
abbott costello hardy laurel
athena% znolResult: For each person in your ~/.anyone file, znol lists where and when each person is logged in. For example:
abbott: M14S-010-1.MIT.EDU unix:0 Tue Oct 14 16:05:24 1997 costello: W20-575-20.MIT.EDU unix:0 Tue Oct 14 15:26:43 1997 laurel: M11-113-14.MIT.EDU unix:0 Tue Oct 14 12:35:29 1997
As znol tries to locate each user, it subscribes you to the login messages from that user. See Setting Zephyr Exposure and Subscribing to Zephyr Messages for more information.
You can also create text files of usernames and name them something other than ~/.anyone. You then use the -f option with the znol command to specify the filename:
athena% znol -f filename
Where filename is the name of the file you want to use.
If you decide you do not want to receive a message every time a person logs in or out, you can disable znol for the rest of your session by entering:
athena% znol off
For information on other options to znol, type man znol at the athena% prompt.
Subscriptions are handled through the zctl program, which is short for Zephyr control. You use zctl to subscribe to classes and instances and to save the subscriptions in a file (by default the file ~/.zephyr.subs).
To use zctl, you can either enter the zctl command and options on one line at the athena% prompt, or you can enter zctl and press Return and enter the zctl options at the zctl prompt. Enter ? at the zctl prompt to get a list of zctl options.
There are two ways that you can subscribe:
Use the sub option to add subscriptions that are in effect until you log out. To do this, enter
athena% zctl sub [class] [instance] [recipient]
For example, if you want to subscribe to <message help *>, enter
athena% zctl sub message help \*NOTE: You include the backslash before the asterisk when you issue this command so that the asterisk will be sent to zctl without being interpreted by the Athena command shell first. If you enter the sub command directly at the zctl prompt, or directly into your ~/.zephyr.vars file, you should not include the backslash). For more information about the backslash and other special characters, see the csh man page by entering:
athena% man csh
There are some classes to which you are automatically subscribed. They are:
If you use the attach command, it will automatically subscribe you to <filsrv lockername *>
If you use the znol command (discussed later in this document), you are automatically subscribed to <login username *>
Adding subscriptions permanently until you remove them
The add option adds a new subscription to a subscriptions file called ~/.zephyr.subs so that you will be subscribed every time you log in. To do this, enter:
athena% zctl add [class] [instance] [recipient]
To remove a subscription for the duration of your login session, enter:
athena% zctl unsub [class] [instance] [recipient]
To remove a subscription from your subscriptions file,
athena% zctl del [class] [instance] [recipient]
This section lists some of the interesting subscriptions to which you may subscribe.
| Subscription | Synopsis |
|---|---|
| <Login username@mit.edu your-username> | Login and logout notices |
| <Filsrv machinename your-username> | Shutdown messages |
| <Filsrv machinename:hesiodname your-username> | Filesystem messages. Example: Filsrv machinename: menelaus jdoe |
| <Discuss machinename:path your-username> | Discuss transaction notices |
| <mail pop your-username> | New mail notification |
| <Operations message> | Operations messages |
The easiest way to find out interesting instances is to subscribe to <class * *> which subscribes you to every non-personal message which comes across the network (Note that you cannot subscribe to class *.):
athena% zctl sub message \* \*
Subscribing to "star star" (i.e., <class * *>) can get noisy and distracting when you're working and lots of windowgrams appear on your screen, but you will be able to decide which instances are worth your attention. You can learn of others (that may not necessarily appear while you are logged in) through word of mouth.
Here is a partial list of instances belonging to class message. Note that none of these instances are officially sanctioned.
| INSTANCE | SYNOPSIS | |
|---|---|---|
| personal | User to user messages. | |
| urgent | Urgent user messages. | |
| proverb | Proverb every hour. | |
| weather | Weather report on the half hour. | |
| xconq | Messages concerning the xconq game, especially finding opponents. | |
| boggle | Automatic message when someone starts playing mboggle. | |
| hunt | Automatic message when someone starts playing hunt. | |
| consult | Consultant messages for consultant communication.
NOTE: Don't ask questions over instance consult - use olc. Consultant use of this instance is subject to change. | |
| help | Informal questions other users can answer. | |
| sipb | Questions, answers, and discussions involving SIPB (Student Information Processing Board) members. | |
| watchmaker | Technical discussions about Athena. Watchmakers are student programmers employed by Athena system development. | |
| white-magic | Random discussions, hard to define. Listen in if you're not too busy. A voluminous instance. |
Some living groups have an instance, for example, fenway (Fenway House), chiphi (Chi Phi), nh2 (New House II), Desmond (New House V), tdchi (Theta Delta Chi), and nud (Nu Delta).
Some courses may also have an instance, especially if the course uses Athena. For example, 1.00 and 6.170. This is a good way to discuss assignments, quizzes, etc.
Zephyr lets you control whether or not people can zlocate you. To set an exposure level you use the set exposure option:
zctl set exposure exposure-level
Where exposure-level can be one of the following (listed from widest exposure to narrowest exposure):
| Exposure Level | Result |
|---|---|
| net-announced | Anyone can locate you and receive login messages about you. |
| net-visible | Anyone can locate you. Only users within the same Kerberos realm (@mit.edu) ** can receive login notices about you. |
| realm-announced | Anyone within the same Kerberos realm ** can locate you or receive login messages about you. |
| realm-visible | (default) Anyone within the same Kerberos realm ** can locate you. No login or logout messages will be sent. |
| opstaff | Only Athena operations staff can locate you, and no login messages will be sent. |
| none | You are not registered with Zephyr at all: No one can locate you, no login messages about you will be sent, no subscriptions will be enabled, nor will any messages be displayed. |
* For exposure levels other than "none", default Zephyr
subscriptions and any additional personal subscriptions are
also enabled.
** The Kerberos realm for Athena users is @mit.edu. Type man
kerberos for more information about Kerberos realm.
You have the option of hiding during your login session, but still receiving Zephyr messages, the equivalent of exposure level "opstaff". To do this type:
athena% zctl hide
To set exposure back to your default, type:
athena% zctl unhide
There are two kinds of Zephyr messages you might want to send automatically:
To send an automatic reply to users who send you a message, use the zaway command. By default, the zaway command will use the text in a file named ~/.away that you create and send it to other Zephyr users that send you messages. To use zaway
athena% zaway
You can also create a file named something other than ~/.away and use it in the following way:
athena% zaway filename
If you run zaway, no ~/.away file exists, and no other file is specified, the following message is sent in response to incoming Zephyr messages:
I'm sorry, but I'm away from my computer and am not able to receive your message.
The ~/.away file also allows you to specify different messages for different users. The general format of this file is:
>username message >username >username message
In addition, there are two options that add to the ability to specify users:
If a user name does not match any of those listed in the file, and no "*" or "%" field is specified, no return message is sent. All messages are preceded by the automated reply:
Here is an example of a ~/.away file:
>abbott >costello Who's on first, what's on second, and >% I'm sorry, I'm not able to respond right now, >* I'll be back in a few minutes.
abbott and costello will get "Who's on first, what's on second, and." Everyone other than abbott and costello who send you messages will get "I'm sorry, I'm not able to respond right now,". Everyone, i.e., abbott, costello and everyone else who sends you messages will get "I'll be back."
As mentioned earlier, you can specify a file other than ~/.away by entering:
zaway filename
To exit zaway, press Ctrl-C.
For more information about zaway, see the man page by entering:
athena% man zaway
The zleave command sets an "alarm." You supply the time you want to leave, then Zephyr sends you reminders 5 minutes before, 1 minute before, at the actual time, and every minute for ten minutes thereafter (or until you log out or cancel zleave).
You can set the time as a specific time, within the next 12 hours, or a relative time, e.g., 20 minutes from the current time, using the format hhmm.
To set a specific time:
athena% zleave 1145 Alarm set for Mon Aug 13 11:45:50 1999To set a relative time:
athena% zleave +0005 Alarm set for Mon Aug 13 11:33:20 1999
The default messages are:
| Message | When Sent |
|---|---|
| You have to leave in 5 minutes | 5 minutes before specified time |
| Just one more minute! | 1 minute before |
| Time to leave! | Specified time |
| You're going to be late! | Each minute following |
If you want to add more text to the default message, use the -m option. For example:
athena% zleave +0020 -m "Are you done yet?"Result: The following is displayed:
Just one more minute! Are you done yet?If you want to add a beep sound, use the @beep() option:
athena% zleave +0200 -m "@beep()"To cancel the zleave messages, enter:
athena% zleave cancel
NOTE: You can also abbreviate cancel to just can. Also, when you start zleave, you are subscribed to <message zleave your-username> but canceling zleave does not unsubscribe you.
For more information about zleave, see the man page by entering:
athena% man zleave
athena% zctl add mail \* %me%
When you log in without using the Xwindows system (such as using a terminal style session, dialing in, or using Telnet), you need to run Zephyr in "tty" mode. This means that incoming messages will appear as regular text on your screen.
There are two ways you can run Zephyr in tty mode:
To set Zephyr to start in tty mode each time you log in
Entering the following:
athena% zctl set fallback true
To set Zephyr to run in tty mode when you need it
athena% zwgc -ttymode
NOTE: If you have fallback set in your dotfiles, you need to kill the zwgc program that's started up when you log in, then restart Zephyr in tty mode:
athena% add consult; punt zwgcIf you don't want the messages appearing, but you want to read them at your leisure, see Saving Zephyr messages.
You can save information from a Zephyr windowgram by using cut and paste. This text can be pasted into another non-windowgram window, such as an Xterm or an Emacs window. Use the following mouse techniques to highlight text and put it in the X buffer.
| Mouse technique | Purpose |
|---|---|
| Shift-Left click | Mark one end of the region to be copied |
| Shift-Right click | Mark other end of the region to be copied and highlighted |
| Shift-Left click and drag over text | "Dragged" text is highlighted and copied |
| Shift-Right click and drag over text | Extends highlighted text |
Then press C-y to paste the text into an Emacs window or click the middle mouse button to paste into an Xterm window.
NOTE: There is no way to cut-and-paste "special effects" such as boldface, italics, or large print. This special text will get pasted as normal text.
You can save Zephyr messages you receive to the file. This way, if you lose a message, you can look at the file to see what you missed. To do this,
tail -f /tmp/filename &
If you want to receive and read Zephyr messages, but not have them display on the screen, you can save them to a file. To do this, enter:
athena% zwgc -ttymode > /directory-name/filename
This will save incoming Zephyr messages in a file in a directory and file that you specify. You may want to create this file in the /tmp directory, so that it doesn't count against your quota; but note that files in the /tmp directory will be deleted when the workstation deactivates.
If you want to save messages to a file automatically when you log in, you need to do the following to prevent Zephyr from automatically starting up and displaying messages in windowgrams:
athena% zctl set fallback false
Then put the following line into your ~/.startup.tty file:
zwgc -ttymode > /directory-name/filename
The first topic covered in this section describes how to make changes to the .zwgc.desc and .Xresources files since customizing Zephyr often requires modifying one of these files.
The subsequent topics cover the following ways to customize Zephyr:
Customizing Zephyr most often involves making changes to one or two files: ~/.Xresources and ~/.zwgc.desc. These are simply text files that you can edit using Emacs or any other text editor.
You can control many aspects of the windowgrams you receive (e.g., placement on your screen, use of fonts, etc.) by using the file ~/.zwgc.desc. The language is fully described in the manual page for zwgc (type man zwgc at the athena% prompt). The default ~/.zwgc.desc file is found in /usr/athena/share/zephyr/zwgc.desc. An easy way to begin working with the ~/.zwgc.desc is to copy this file to your home directory (~/.zwgc.desc), then you can make changes and experiment. There is also a directory in the Zephyr locker (/mit/zephyr/examples) that contains code fragments for ~/.zwgc.desc files. You can look here for ideas.
Many customizations for Zephyr windowgrams involve the ~/.Xresources file, which is used by the X window system. For detailed information on the ~/.Xresources file and X manipulation, read the X man pages:
athena% man X
To see the effect resulting from the changes you make to these files, you either have to log out and log in again or you can incorporate the changes immediately by re-loading the .Xresources or .zwgc.desc files, then killing and restarting the zwgc program.
To incorporate changes to ~/.zwgc.desc, enter the following:
athena% zctl wg_read
To incorporate changes to ~/.Xresources, enter the following:
athena% xrdb -load ~/.Xresources
To kill the zwgc program, enter:
athena% add consult; punt zwgc
To start the zwgc program, enter:
athena% zwgc
When you send a Zephyr message to someone, your signature appears in the message. If you do not explicitly set it to something else, it will be your name as it appears in your finger information.
There are two ways to change your signature:
athena% zctl set zwrite-signature "new-signature"
where new-signature is the signature you want to use.
To change your signature for a specific Zephyr message, enter:
athena% zwrite your-username -s "new-signature"
where new-signature is the signature you want to use.
Using the -s option will override the signature if previously set in either your finger information or your zwrite-signature variable.
If you don't want any signature, you can set an empty signature by entering:
athena% zwrite your-username -s ""
If you want to change the default font that is used when displaying Zephyr messages, you need to include the following line in your ~/.Xresources file:
zwgc*style*substyle.default.fontfamily: font-name
where font-name is the name of the font that you want to use.
You can use one of the predefined fonts: times, helvetica, or courier (which is the Athena default) or, if you have defined your own font families in your ~/.Xresources file, you can use one of those names.
Whenever you change your ~/.Xresources file, you must either wait until the next login to incorporate the changes, or rerun your .Xresources file, then kill and restart the zwgc program.
You can selectively filter the display of Zephyr messages that you receive by using the Filter feature. For example, if you subscribe to the message <message * *> and do not want to see messages from the <message white-magic *> instance, you can filter out <message white-magic *>. You still receive the <message white-magic *> messages but they are not displayed. You can also redisplay messages you had previously filtered out.
You can filter messages in two ways:
To do this, enter
athena% add sipb athena% zpunt instance
where instance is the name of the instance that you want to punt. For example, if you wanted to filter class message, instance "annoy" notices, enter:
athena% add sipb athena% zpunt annoy
To do this, add the following line to your ~/.zephyr.subs file for each message that you want to filter:
-class instance recipient
For example, to ignore class message, instance "annoy" notices, you would insert this line:
-message annoy *
Here is an example that uses variables and formatting commands to change the way a windowgram is displayed. Using a text editor, open the file called .zwgc.desc and change the line
print substitute($default)to:
print "New mail from @bold("+protect($1)+"), Subject: @italic("+protect($3)+")\n"
This changes the mail notification from:
(Authentication: UNAUTHENTIC) You have new mail: From: abbott@ATHENA.MIT.EDU To: costello@ATHENA.MIT.EDU Subject: Who's on first.to:
(Authentication: UNAUTHENTIC) New mail from abbott@ATHENA.MIT.EDU, Subject: Who's on first.
To see the changes immediately, you need to reload the zwgc.desc file and kill and restart the zwgc program.
For more information on editing the zwgc.desc file, see the zwgc man page.
To change where Zephyr notices appear on your screen you need to edit the ~/.Xresources file. You specify the x and y coordinates for a corner of the window by using either numbers or special characters (e.g., "c" for center) along with pluses or minuses to indicate a relative position.
The syntax for a line that positions windowgrams is:
zwgc.style.class.instance*geometry: +c+c
where class.instanceare the specific class and instance for which you want to position the windowgram.
The following is an example of two lines that might be used in the .Xresources file:
zwgc.style.message.urgent*geometry: +c+c zwgc.style.message.personal*geometry: -0-0
These lines would position urgent messages in the center of your screen, personal messages in the lower right corner, and by default, the others would appear in the upper left corner.
If you simply wanted all of your Zephyr notices to appear in the lower left, for example, you could add this line to your .zwgc.desc file:
zwgc*geometry: +0-0For more details on positioning windowgrams, refer to the ~/.Xresources section of Dotfiles on Athena.
When you receive a message it is marked Authentic or UNAUTHENTIC. These labels indicate the result of the sender's or your own authentication.
Zephyr uses the Kerberos authentication to verify its users. (For more information about Kerberos, type man kerberos from the athena% prompt.) If you and the sender pass authentication, then the message is marked with Authentic. If you or the sender failed authentication then the message is marked with UNAUTHENTIC. This does not necessarily mean that something bad is occurring. Any user can fail authentication if he or she loses his or her "Kerberos tickets" or his or her tickets expire (which they do after 10 hours). Any legitimate user can gain a new set of tickets and be automatically reauthenticated to the Zephyr server by running the renew program:
athena% renew MIT Athena (w20-575-80) Kerberos Initialization for "abbott" Password:If you are receiving all of your windowgrams marked UNAUTHENTIC, it is probably because you changed or renewed your Kerberos tickets. If you had recently typed kinit (rather than using renew), then remember that you need to do zctl load as well. Zephyr will then receive the new tickets. (The renew form of renewing your Kerberos tickets automatically executes the zctl load command after executing kinit.)
Sometimes you may receive the following error messages when logging in:
main.c: Hostmanager not responding Setting Location zctl (load): Hostmanager not responding: while subscribing /etc/athena/zinit: Hostmanager not responding while subscribingThey may be mixed with other normal status messages. The common theme here is that your hostmanager is not running. To remedy the situation you will need to log in as a superuser then restart the hostmanager. If you are in a public cluster, you can log in as a superuser, however if you're using a private Athena workstaion, you'll need to contact the person who maintains the workstation.
To restart your hostmanager program, do the following:
athena% su log in as a superuser Password: drroot enter the password athena# /etc/athena/zhm & start new host manager athena# exit exit from the root shell athena% zctl load reload subscriptions
If you find that you are receiving two of every Zephyr message, you most likely have two zwgc programs running. You need to find out how many are running and if there is more than one, kill one of them.
athena% ps -elf | grep zwgc
Result: You'll get a list of zwgc jobs that running.
For example, you will see something like this:
costello 26543 0.0 0.2 40 28 p1 S 0:00 grep zwgc costello 26266 2.5 3.9 337 244 p1 S 0:00 zwgc costello 25855 1.8 5.2 385 325 v0 S 0:38 zwgc
To get rid of one of them, enter the following:
athena% kill job-number
where job-number is one of the 5-digit numbers for one of the jobs called "zwgc." In the above example, the number would be "26266". Make sure you don't use the job number for "grep zwgc."
Result: One of the zwgc programs is killed.
To avoid receiving multiple copies of Zephyr messages, make sure you are not starting zwgc in any of your "dotfiles" like ~/.startup.X. The Athena system files automatically start zwgc for you when you log in. Also, if you are experimenting with Zephyr customization, you don't need to start a new zwgc every time you want to incorporate your new changes. To incorporate changes to your .zwgc.desc without waiting for the next login, just type:
athena% zctl wg_readTo incorporate changes to ~/.Xresources without waiting for the next login, you need to type the following line, then kill and restart zwgc:
athena% xrdb -load ~/.Xresources
The Athena Consultants maintain a set of answers to commonly asked questions about the Athena system, including a subset of "Zephyr Answers".
There are Unix Manual pages available on all of the Zephyr commands. To see any of them, enter the following:
athena% man topic-namewhere topic-name is one of the following:
For more technical information, type:
athena% man topic-name
where topic-name is one of the following:
There is a Discuss meeting called Zephyr_Comments (zcmts for short) for discussions about Zephyr. To add this to your list of Discuss meetings, start up Discuss and enter the following:
discuss: am menelaus:/usr/spool/discuss/zcmts
(See the document Discuss on Athena for information about using Discuss.)
|
|
Comments and feedback to olh-suggest@mit.edu
|