---
name: "WMMail"
section: "1"
platform: "linux"
package: "wmmail"
version: "0.64-13.2"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/WMMail"
---

# WMMail(1)

Window Maker Mail.app

## NAME

WMMail.app - Window Maker Mail.app

## SYNOPSIS

**WMMail *\[options ...\]* *\[\<pathname\>\]***

## DESCRIPTION

**WMMail.app** is a "mail-checker" like [**xbiff**(1x)](/xbiff/1x.md). It indicates the status of the user's mailbox by showing animated XPM icons when incoming mails are detected. Additionally, it can be configured to execute a program on incoming mail and/or on mouse double-clicks, and can provide a count of emails in the user's mailbox.

**WMMail.app** is based on **asmail**, a similar applet designed for the AfterStep window manager.  However, **WMMail.app** has been re-written to be compatible with the Window Maker Dock, i.e. **WMMail.app** can be dragged and dropped on (and off) the Dock dynamically.  It also uses a different config file format, more consistent with the one used by Window Maker.

To use **WMMail.app** with the Window Maker Dock, simply drag the **WMMail.app** icon to the Window Maker Dock.

To use **WMMail.app** with another window manager, you may need to use the **-s** option.  This tells **WMMail.app** to use its main window, rather than leaving it blank and trying to hide it.  If a small, empty window appears when you run **WMMail.app**, try this.

## OPTIONS

- **-help, -h**

  Prints a help message

- **-quiet, -q**

  Suppress all error messages

- **-swallowed, -s**

  Show window as well as appicon (for swallowing with AfterStep or other window manager).

- **\<pathname\>**

  Full path of defaults domain to use.  If none is specified, a series of paths are searched for this file.  See the *FILES* section for more information.

## CONFIGURATION FILE

The configuration file consists of a single PropList dictionary, which in turn is composed of several PropList key-value pairs. The recognized keys are:

- **DisableBeep (Yes\|No)**

  When set to \`Yes', **WMMail** won't make an audible signal when new mail is found.

- **DoubleClickTime (Int)**

  **WMMail** will consider two clicks a double click event if they arrive in less than 'DoubleClickTime' milliseconds appart from each other.

- **DisplayEachMailbox (Yes\|No)**

  (Experimental) Show name of each mailbox containing new messages along with its message counts.  Must be used with Animations!

- **DisplayMessageCount (None\|NewOnly\|TotalOnly\|NewOverTotal)**

  *None*, no message count is displayed; *NewOnly*, only the new messages count is displayed; *TotalOnly*, only the total message count is displayed; *NewOverTotal*, the message count is displayed as 'New/Total'

- **DisplayColor (Color)**

  the string name of a color with respect to the screen associated with a colormap.  An RGB Device specification is identified by the prefix \`\`rgb:'' and conforms to the following syntax: rgb:\<red\>/\<green\>/\<blue\>, where each component is of the form *hhhh* where \`h' is a single hexadecimal digit. \`h' is scaled to 4 bits, \`hh' to 8, \`hhh' to 12 and \`hhhh' to 16 bits.  The forms \`#RGB', \`#RRGGBB', \`#RRRGGGBBB' and \`#RRRRGGGGBBBB' are also accepted. An RGB intensity specification is identified by the prefix \`\`rgbi:'' and conforms to the following syntax: rgbi:\<red\>/\<green\>/\<blue\>, where each componet is a floating point value between 0.0 and 1.0, inclusive.

- **DisplayFont (Font)**

  The font used for displaying the count information. \`Font' is a standard structured format for font names string. Since it probably contains \`\*' and or \`?', you have to enclose it in double quotes.

- **ExecuteOnNew (String)**

  The program (and arguments) to excecute when new mail is found.

- **ExecuteOnClick (String)**

  The program (and arguments) to excecute when a double click event is processed.

- **DisplayLocation (Coordinates)**

  Specifies the coordinates relative to the lower left corner where the *message count* is displayed.

- **Animations (Dictionary)**

  This dictionary consists in turn of three dictionaries: *Empty*, *Old* and *New*. Each of them can have two entries: *Delay* and *Frames*. *Delay* specifies the number of tenths of seconds to stop between each frame of the animation; *Frames* is an array that lists all the pixmaps in the animation. You have to specify the full path to the pixmaps. List the pixmaps in the order you want them to be shown. If you do not want an animation, list just one icon.

- **Mailboxes (Array)**

  Specifies all the mailboxes **WMMail.app** should monitor.  Each element of the array is a dictionary which varies according to the mailbox type.  See the **Mailboxes** section.  The generic keys for each mailbox are *Name* (string), the name of current mailbox; *Type* (string), the type of the mailbox;  *UpdateInterval* (int), the number of seconds between updates (default: 15); and *Options* (dictionary), which are options specific to each mailbox type.

## MAILBOXES

**WMMail.app** can monitor several types of mailboxes, namely *mbox*, *mh*, *maildir*, *pop3* and *imap*. Each mailbox type takes different options:

- **mbox**

  *Path* (string), the path to the mailbox. *CheckTimeStampOnly* (Yes\|No), the state of the mailbox changes according to the following rules: no mailbox or empty mailbox, no mail; smaller than last time but non-zero, old mail; read after most recent write, old mail; no read after most recent write and same size as last time, no change; bigger than last time, new mail. If *CheckTimeStampOnly* is set to \`No', the status changes according to: no mailbox or empty mailbox, no mail; no new mails, old mail; same number of new mails or fewer, no change; more new mails than last time, new mail. *MailboxHasInternalData* (Yes\|No), if set to \`Yes' it means there's an "internal data" message stored in the mailbox and it should no be taken into account when computing the total mail count in the mailbox (IMAP daemons write this kind of message for bookkeeping purposes -- and yes, everyone hates them).  This option defaults to \`No'.

- **mh**

  *Path* (string), the path to the mailbox. The status changes according to: no folder or empty folder, no mail; no new mails, old mail; same number of new mails or fewer, no change; more new mails than last time, new mail.

- **maildir**

  *Path* (string), the path to the mailbox. The state is determined in the same way as for *mboxes*.

- **pop3**

  *Hostname* (string), the POP3 server.  *Username* (string), the username on the server.  *Password* (string), the password. *Port* (int), the port number to use (optional, default is 110).

- **imap**

  *Hostname* (string), the IMAP server.  *Username* (string), the username on the server.  *Password* (string), the password. *Port* (int), the port number to use (optional, default is 143). *Folder* (string), the name of the folder to check (optional, default is "INBOX").  *UseSelect* (Yes\|No), use the slower "SELECT" command to examine mailbox if set to \`Yes'.  May be necessary with some older (broken?) IMAP servers which don't support the default "EXAMINE" command properly (optional, default is \`No').

## EXAMPLES

Here is an example of a configuration file.

```
{
  DisableBeep = No;
  DoubleClickTime = 250;
  DisplayMessageCount = None;
  DisplayColor = "#FFFFFF";
  DisplayFont = "-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*";
  DisplayLocation = (0, 10);
  ExecuteOnClick = "wterm -name mail -e mutt";
  ExecuteOnNew = "play ~/GNUstep/Library/WMMail.app/Sounds/doorbell.au";
  Animations = {
    Empty = {
      Delay = 10;
      Frames = ("~/GNUstep/Library/WMMail.app/Anims/NeXT/Mail1.xpm");
    };
    Old = {
      Delay = 10;
      Frames = ("~/GNUstep/Library/WMMail.app/Anims/NeXT/Mail1.xpm");
    };
    New = {
      Delay = 2;
      Frames = (
        "~/GNUstep/Library/WMMail.app/Anims/NeXT/Mail1.xpm",
        "~/GNUstep/Library/WMMail.app/Anims/NeXT/Mail2.xpm",
        "~/GNUstep/Library/WMMail.app/Anims/NeXT/Mail3.xpm",
        "~/GNUstep/Library/WMMail.app/Anims/NeXT/Mail2.xpm"
      );
    };
  };
  Mailboxes = (
    {
      Name = "Home";
      Type = mbox;
      UpdateInterval = 15;
      Options = {
        CheckTimeStampOnly = No;
        Path = "$(MAIL)";
      };
    },
    {
      Name = "MH Folder";
      Type = mh;
      UpdateInterval = 60;
      Options = {
        Path = "~bryan/Mail/inbox"
      };
    },
    {
      Name = "MailDir Folder";
      Type = maildir;
      UpdateInterval = 15;
      Options = {
        Path = "~bryan/MailDir";
      };
    },
    {
      Name = "School";
      Type = imap;
      UpdateInterval = 300;
      Options = {
        Hostname = "mailserver.school.edu";
        Username = "bryan";
        Password = "secret";
        Folder = "mail/INBOX";
      };
    }
  );
}
```

Normally, the status is only updated after a certain amount of time has passed (15 seconds, by default).  However, you can force an update by sending a SIGUSR1 signal to wmmail.  This can be used, for example, by [procmail(1)](/procmail/1.md) to notify wmmail that mail has just arrived.  Simply add the following to the end of your ~/.procmailrc:

```
# Notify WMMail.app of the updated inbox
#
:0hci
| (sleep 1 && killall -USR1 WMMail) </dev/null &
```

## FILES

- **~/GNUstep/Defaults/WMMail**

  **WMMail.app** defaults.

- **/etc/GNUstep/Defaults/WMMail**

  System wide defaults.

- **/usr/lib/GNUstep/Apps/WMMail.app/Anims**

  **WMMail.app**'s animations are installed here.

- **/usr/lib/GNUstep/Apps/WMMail.app/Sounds**

  **WMMail.app**'s sounds are installed here.

## ENVIRONMENT

- GNUSTEP\_USER\_ROOT

  specifies the initial path for the Defaults directory. "Defaults/" is appended to this variable to determine the actual location of the databases. If the varialbe is not set, it defaults to "~/GNUstep"

- GNUSTEP\_LOCAL\_ROOT

  specifies the location of the system-wide **local** GNUstep directory (this is useful, for example, in those cases where the system-wide location is really a network wide location). If this variable is empty, GNUSTEP\_SYSTEM\_ROOT is looked for.

- GNUSTEP\_SYSTEM\_ROOT

  specifies the location of the system-wide GNUstep directory. If this variable is empty, it defaults to /etc/GNUstep

## BUGS

ExecuteOnNewOnce (previously AlwaysNewMailExecute) is broken.

ExecuteOnUpdate is broken.

DisplayEachMailbox crashes if no Animations defined.

With some weird, old combination of OS and X Window, e.g. Solaris with X11R5, SunOS with OpenWindows, etc., the WMMail application icon may not show up when the program is run. If this is the case for you, add the following line to your ~/GNUstep/Defaults/WMWindowAttributes: WMMail = { EmulateAppIcon = Yes; };

With some window managers that have an automatic dock or "slit" (i.e. blackbox or fluxbox), an extra empty window may appear in the dock/slit area.  This is harmless, and you can make the window disappear by selecting "restart" from the window manager's menu.

## VERSION

This man page is up-to-date for version 0.64 of **WMMail.app**.

## AUTHORS

**WMMail.app** is based on **asmail** for the AfterStep window manager (C) 1996, 1997, 1998 by Per Liden \<per@rsn.hk-r.se\> (http://www.rby.hk-r.se/~pt96pli/)

All modifications made to **asmail** to make it work with Window Maker and further development, (C) 1997, 1998, 1999 by Bryan Chan \<bryan.chan@utoronto.ca\>. **WMMail.app** is licensed through the GNU General Public License. Read COPYING for the complete license.

The NeXT-lookalike XPM icons are acquired from an **asmail** hack by Jon Leffert \<jbleffer@midway.uchicago.edu\>.

The notification sounds are acquired from xbiff++, an enhanced xbiff by Mike Wagner \<wagner@cadillac.siemens.com\> and Jamie Zawinski \<jwz@netscape.com\>.

**WMMail.app** also contains code from:

- **Window Maker (http://windowmaker.org/)**

  Alfredo K. Kojima (kojima@windowmaker.org)

- **Malaprop (http://www.sorted.org/~pete/wmaker)**

  Peter Bentley (pete@sorted.org)

- **GNU CC (http://fsf.varesearch.com/software/gcc)**

  Free Software Foundation, Inc.

This manpage was written by Marcelo Magallon \<mmagallo@debian.org\> for the Debian Project, and has been maintained and updated by Chris Waters \<xtifr@debian.org\>.  This is free documentation; 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.
