Access Keys:
Skip to content (Access Key - 0)

Zephyr

An Overview of Zephyr

There are several hundred workstations scattered about the MIT campus. If you've ever wondered how you would find someone or send a quick message to someone or a group of people without waiting for them to read mail while they are logged in, Zephyr is the answer.

Zephyr provides a means for centralizing users' locations while they are logged in and allows fast message service (on the order of a few seconds) to one user or many users simultaneously.

When you log in, a program called zwgc (Zephyr windowgram client) is run. This program registers you with the Zephyr server(s) and remains in the background to handle incoming messages. These messages appear in the upper left of your screen in the form of windows (hence windowgram). Clicking on the window will cause it to disappear. Here are some simple examples:

    > zlocate joeuser
    m4-082-5.MIT.EDU                   :0.0    Wed Apr 29 05:47:32 1992

This says that joeuser has been logged in to m4-082-5 since the indicated time. The :0.0 indicates the display he is using (see man X).

    athena% zwrite joeuser
    Type your message now. End with control-D or a dot on a line by itself.
    Hi there.
    .
    joeuser: Message sent

A small window with the sender's name and message appeared on his screen.

Working with Zephyr

A Zephyr subscription contains three pieces of information: Class, Instance, Recipient. In order to receive a zephyr notice you must have a subscription with the three fields matching that of the notice. By default you are subscribed to both:

<MESSAGE,PERSONAL,%ME%>
<OPERATIONS,MESSAGE,*> 

The Class Field

This is the major classification of the notice. The most common Class is message. This is the class zwrite uses by default. Other classes may have restrictions on who is allowed to send or subscribe to notices.

The Instance field

This field simply serves as a label to further classify the subject of the class. If for example you had a class called 'food', a possible instance may be 'peanut-butter'. Generally, there are no restrictions on who may receive or send notices by instance within a class. The asterisk '*' wildcard may be used to indicate all instances within a class for purposes of subscribing, but not sending.

The recipient field

This field can be one of two things; a '*' or %ME%. %ME% is simply an abbreviation for your username. When this field is set, the message (or zephyrgram) can only be received by that user. You cannot subscribe to messages with recipient set to any other user but yourself.

A * indicates that the message was broadcast to many people. It serves as wild card to show that the message was intended for no one in particular.

Useful subscriptions

-c 3down: used by jhawk's 3down script, which shows changes to 3down
-c accounts: like consult, but for Athena Accounts; generally using this class is as effective as for reaching Accounts as -c consult
-c consult: someone knowledgeable is usually on this
-i consult: for Athena outages/problems (generally, for services run by ops)
-c consult-auto: for automated messages, such as [ astronut|hd:Erica's ] printer outage notification script
-c rcc: for general RCC questions (recommended to permanently subscribe)
-c help: where people in the MIT community can ask questions
-i help: like -c help, but is an instance
-c helpdesk: for ServiceDesk consultants
-c moira: for moira outages/problems
-i network: for network outages/problems
-i printadm: zephyr printing problems and lpcng usage
-c n42: for topics related to N42
-c noc: automated monitoring of network equipment, heavy traffic class
-c noc-ilg: used by the [hd:NOC] to report outages/problems with [hd:ILG] networks
-c sipb: used by the Student Information Processing Board (and those affiliated to it

It should be noted that the network and printadm zephyr instances are low-traffic instances. Use them only when necessary. For instance, do not ask question that can be found somewhere else. If you are inquiring about a potential outage on -i network, make sure it is not already noted on 3DOWN before asking on the zephyr instance.

Login notifications

Getting Notified When Someone Logs in

To receive a zephyrgram when one of your friends logs in, he must be announcing his login and you must be able to receive it. All you have to do is create a file in your home directory and name it .anyone. In this file include a list, 1 per line, of usernames of people from whom you want to receive login notification. Then to receive these notifications, run the program znol. This program will read your .anyone file and subscribe you to the appropriate messages.

The tricky part is that the people you are interested in must set their exposure such that they allow notifications to be sent when they log in or out. This is not set by default. To do so, the person must type one of the following.

  • zctl set exposure realm-announced
  • zctl set exposure net-announced
  • zctl set exposure net-visible

Note: net-announced and net-visible are currently the same. They will apply when sites outside of Project Athena adopt Zephyr

The difference between these two is that to receive notification from someone with realm-announced, you must pass authentication with Kerberos whereas net-announced performs no check for authentication.

See the man pages on znol and zctl for more info.

User Logged ON AT Sent Message

Occasionally, you may get a zephyrgram that reads something like this:

    username unknown opcode
         on SENT on
             at

(sometimes it reads logged on at sent or something of this sort.)

This just means that the zephyr server had a timeout. It occurs when you log in at a time when the Athena zephyr servers are overloaded. It is not an unusual thing to happen, and you shouldn't be concerned by it.

Hiding From Other Users

Zephyr allows you to have various exposure levels, in other words, you control whether or not people can zlocate you. To set an exposure level you need to set a variable from within zctl (Zephyr control program). To set your exposure use

    zctl set exposure <exposure level>

where the exposure level can be one of:

net-announced: anyone can zlocate you or receive notification when you log in
net-visible: anyone can zlocate you but your login is only announced to those within the Athena realm.
realm-announced: only users who have been authenticated with Kerberos can zlocate you and can receive notification when you login
realm-visible: only users who have been authenticated with Kerberos can zlocate you; your login is not announced
opstaff: only members of Athena operations staff can find you
none: no one can find you or zwrite you, and your login is not announced. This option disables Zephyr completely.

You have the option to hide during your login session without resetting your
Zephyr variables. To do this, type

    zctl hide

To become visible again, type

    zctl unhide

Customizations

Creating a Signature in Your Zwrite Messages

To get a signature to appear in the windowgrams you send out:

    zctl set zwrite-signature Pablo Picasso

Subsequent messages will begin with:

    From: Pablo Picasso

You can also add the "-s" option to zwrite, as in:

    zwrite -s "Pablo Picasso" joeuser

To change the signature in Xzwrite, right-click on the xzwrite icon. Then select Change Signature.

How to Avoid Accidentally Clicking Away Zephyr Messages

By adding the following line to your .Xresources file:

	zwgc*minTimeToLive: 100

you can set a minimum on the amount of time (in milliseconds) that a zephyrgram must be on the screen before it will accept mouse clicks. This means that when a zephyr message pops up on the screen any mouse clicks in the zephyr message during that period of time will not cause the zephyrgram to disappear; note that any mouse clicks during that period of time will be totally ignored and not queued.

Note: If you are unsure about X resources, and how to use them, see the answer How do I use X Resources? under the XWINDOWS topic of our browser.

How to Display Pings From Other Users

Between the time you type your zwrite command and actually start entering the text of your message, there is something called a "ping" that gets sent to the recipient of your message. This ping is used by the sender's zwrite process to determine if the recipient is logged on.

It may be desirable to display a message when your machine receives a zephyr ping, so you know when someone is writing to you. This is easily possible, and requires a small addition to your .zwgc.desc file. If you do not have such a file, you can copy the default one into your directory by typing

    cp  /usr/athena/share/zephyr/zwgc.desc  ~/.zwgc.desc

You then need to change the permissions on this file so that you can edit it by typing

    chmod  u+w  ~/.zwgc.desc

In this default file, you'll see a few lines that say this:

    # Opcode "ping" is used by sender programs to see if the message would
    # really get sent, or if the recipient has logged out.  No useful
    # information is normally contained in these messages, so we discard them.
    if (upcase($opcode) == "PING") then exit endif

This tells zephyr to merely discard ping messages; to actually display a message for them, replace the last line with the following:

    if (upcase($opcode) == "PING") then
            if (upcase($instance) == "PERSONAL") then
                    print "Ping from "+$sender+"\n"
                put
            endif
        exit
    endif

Once you've done this, zephyr will display a notice for pings starting the next time you log in, or start a zephyr process. If you want the change to take place immediately, you can tell zephyr to reread the file you just changed by typing at the athena prompt:

    zctl  wg_read

NOTE: You will NOT be notified if the sender uses the "-n" option with the zwrite command, which suppresses the initial ping. For example:

    zwrite -n jo

would not send out the notification.

For more example fragments like this, you can examine the directories /mit/zephyr/examples, and /mit/dotfiles/Zwgc.desc by typing:

    attach zephyr
    cd /mit/zephyr/examples

or

    attach dotfiles
    cd /mit/dotfiles/Zwgc.desc

New Mail Notification via Zephyr

To receive mail notifications, you will need to subscribe to the appropriate zephyr class. You do this by typing the following at your athena prompt.

    zctl add mail inbox %me%

If you had subscribed with

    zctl add mail \* %me%

Then you will get notifications for mail that got automatically refiled into your Spamscreen folder (if you have one) as well as your inbox. You can undo this with

    zctl del mail \* %me%

Useful aliases

  • alias consulton "zctl sub consult * *"
  • alias consultoff "zctl unsub consult * *"
  • alias zcon "zwrite -c consult"

Then you can do:

    athena% consulton
    athena% zcon
    "Hi, Could someone help me out with the following printer...."
    <listen to responses>
    athena% consultoff

Customizing Your .zwgc.desc

You can control the look of the windowgrams you receive by creating a file called .zwgc.desc. You can copy the default .zwgc.desc file into your directory by doing:

    cp  /usr/athena/share/zephyr/zwgc.desc  ~/.zwgc.desc

You then need to change the permissions on this file so that you can edit it
by typing

    chmod  u+w  ~/.zwgc.desc

(You can find out more about the chmod command by typing man chmod.) You may then modify your .zwgc.desc as you wish. There are samples of certain modifications (saving all windowgrams to a file, filtering out certain instances, etc.) available. To get to them:

    attach  zephyr
    cd  /mit/zephyr/attic/examples

To get a list of the available examples, type

    ls

To view a file, type

    more  filename

where filename is the name of the file you're interested in. You can make the changes take effect immediately by typing

    zctl  wg_read

There are also some examples in the dotfiles locker. To get to those, type

    attach dotfiles	
    cd /mit/dotfiles/Zwgc.desc

Then follow the same steps as above for viewing these files.

Zephyr logs

Publicly accessible Zephyr logs

Logs of many Zephyr classes/instances can be found at /mit/zlog/ and /mit/czlog. There are also /mit/zlogs and /mit/sipbzlog. See Zephyr on Athena for instructions on sub/unsub/add/del from Zephyr instances/classes.

Logging Zephyrs

You can keep a log file containing the text of all the zephyrgrams you receive. This log file will be written into the file

/tmp/zwgc_log.${USER}

on the Athena workstation you are on, where ${USER} denotes your username (e.g. if your username is pegray then the copies will be saved in /tmp/zwgc_log.pegray).

You can find an example of how it is done by typing:

    attach zephyr
    more /mit/zephyr/attic/examples/log_file

For more information about customizing your .zwgc.desc file please refer to the appropriate [ manual page|istcontrib:Manual Pages].

If you do create a log in the /tmp directory, you might want to delete it when you log out – otherwise it could be potentially read by other users. To do that automatically, insert the line

    /bin/rm /tmp/zwgc_log.username

into your ~/.logout file. Replace username above with your username.

Further Documentation

For more info on Zephyr, see the document Zephyr on Athena, available at CopyTech (11-004) or via the On-Line Help system by typing the following at the athena prompt:

    help zephyr

There are also man pages related to zephyr:

    [zephyr(1)], [zwrite(1)], [zlocate(1)], [znol(1)], [zleave(1)], [zaway(1)]

For more advanced features of Zephyr see:

    [zwgc(1)], [zctl(1)], [owl(1)]

For other references, see the Zephyr on Athena document.

IS&T Contributions

Documentation and information provided by IS&T staff members


Last Modified:

April 01, 2017

Get Help

Request help
from the Help Desk
Report a security incident
to the Security Team
Labels:
c-zephyr c-zephyr Delete
linux linux Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
Feedback
This product/service is:
Easy to use
Average
Difficult to use

This article is:
Helpful
Inaccurate
Obsolete
Adaptavist Theme Builder (4.2.3) Powered by Atlassian Confluence 3.5.13, the Enterprise Wiki