NAME

xmh - send and read mail with an X interface to MH

SYNOPSIS

xmh [-path _m_a_i_l_p_a_t_h] [-initial _f_o_l_d_e_r_n_a_m_e] [-flag] [-_t_o_o_l_k_i_t_o_p_t_i_o_n ...]

DESCRIPTION

The xmh program provides a graphical user interface to the _M_H Message Handling System. To actually do things with your mail, it makes calls to the _M_H package. Electronic mail messages may be composed, sent, received, replied to, forwarded, sorted, and stored in folders. _x_m_h provides extensive mechanism for customization of the user interface.

This document introduces many aspects of the Athena Widget Set.

OPTIONS

-path _d_i_r_e_c_t_o_r_y
This option specifies an alternate collection of mail folders in which to process mail. The directory is specified as an absolute pathname. The default mail path is the value of the Path component in the _M_H profile, which is determined by the MMHH environment variable and defaults to $HOME/.mh_profile. $HOME/Mail will be used as the path if the _M_H Path is not given in the profile.
-initial _f_o_l_d_e_r
This option specifies an alternate folder which may receive new mail and is initially opened by _x_m_h. The default initial folder is ``inbox''.
-flag
This option will cause _x_m_h to change the appearance of appropriate folder buttons and to request the window manager to change the appearance of the _x_m_h icon when new mail has arrived. By default, _x_m_h will change the appearance of the ``inbox'' folder button when new mail is waiting. The application-specific resource cchheecckkNNeewwMMaaiill can be used to turn off this notification, and the --ffllaagg option will still override it.

These three options have corresponding application-specific resources, MMaaiillPPaatthh, IInniittiiaallFFoollddeerr, and MMaaiillWWaaiittiinnggFFllaagg, which can be specified in a resource file.

The standard toolkit command line options are given in _X_(_7_).

INSTALLATION

_x_m_h requires that the user is already set up to use _M_H, version 6. To do so, see if there is a file called .mh_profile in your home directory. If it exists, check to see if it contains a line that starts with ``Current-Folder''. If it does, you've been using version 4 or earlier of _M_H; to convert to version 6, you must remove that line. (Failure to do so causes spurious output to stderr, which can hang _x_m_h depending on your setup.)

If you do not already have a .mh_profile, you can create one (and everything else you need) by typing ``inc'' to the shell. You should do this before using _x_m_h to incorporate new mail.

For more information, refer to the _m_h_(_1_) documentation.

Much of the user interface of _x_m_h is configured in the _X_m_h application class defaults file; if this file was not installed properly a warning message will appear when _x_m_h is used. _x_m_h is backwards compatible with the R4 application class defaults file.

The default value of the SendBreakWidth resource has changed since R4.

BASIC SCREEN LAYOUT

_x_m_h starts out with a single window, divided into four major areas:

-
Six buttons with pull-down command menus.

-
A collection of buttons, one for each top level folder. New users of _M_H will have two folders, ``drafts'' and ``inbox''.

-
A listing, or Table of Contents, of the messages in the open folder. Initially, this will show the messages in ``inbox''.

-
A view of one of your messages. Initially this is blank.

XMH AND THE ATHENA WIDGET SET

_x_m_h uses the X Toolkit Intrinsics and the Athena Widget Set. Many of the features described below (scrollbars, buttonboxes, etc.) are actually part of the Athena Widget Set, and are described here only for completeness. For more information, see the Athena Widget Set documentation.

SCROLLBARS

Some parts of the main window will have a vertical area on the left containing a grey bar. This area is a _s_c_r_o_l_l_b_a_r. They are used whenever the data in a window takes up more space than can be displayed. The grey bar indicates what portion of your data is visible. Thus, if the entire length of the area is grey, then you are looking at all your data. If only the first half is grey, then you are looking at the top half of your data. The message viewing area will have a horizontal scrollbar if the text of the message is wider than the viewing area.

You can use the pointer in the scrollbar to change what part of the data is visible. If you click with pointer button 2, the top of the grey area will move to where the pointer is, and the corresponding portion of data will be displayed. If you hold down pointer button 2, you can drag around the grey area. This makes it easy to get to the top of the data: just press with button 2, drag off the top of the scrollbar, and release.

If you click with button 1, then the data to the right of the pointer will scroll to the top of the window. If you click with pointer button 3, then the data at the top of the window will scroll down to where the pointer is.

Any area containing many words or short phrases, each enclosed in a rectangular or rounded boundary, is called a _b_u_t_t_o_n_b_o_x. Each rectangle or rounded area is actually a button that you can press by moving the pointer onto it and pressing pointer button 1. If a given buttonbox has more buttons in it than can fit, it will be displayed with a scrollbar, so you can always scroll to the button you want.

Some buttons have pull-down menus. Pressing the pointer button while the pointer is over one of these buttons will pull down a menu. Continuing to hold the button down while moving the pointer over the menu, called dragging the pointer, will highlight each selectable item on the menu as the pointer passes over it. To select an item in the menu, release the pointer button while the item is highlighted.

ADJUSTING THE RELATIVE SIZES OF AREAS

If you're not satisfied with the sizes of the various areas of the main window, they can easily be changed. Near the right edge of the border between each region is a black box, called a _g_r_i_p. Simply point to that grip with the pointer, press a pointer button, drag up or down, and release. Exactly what happens depends on which pointer button you press.

If you drag with the pointer button 2, then only that border will move. This mode is simplest to understand, but is the least useful.

If you drag with pointer button 1, then you are adjusting the size of the window above. _x_m_h will attempt to compensate by adjusting some window below it.

If you drag with pointer button 3, then you are adjusting the size of the window below. _x_m_h will attempt to compensate by adjusting some window above it.

All windows have a minimum and maximum size; you will never be allowed to move a border past the point where it would make a window have an invalid size.

PROCESSING YOUR MAIL

This section will define the concepts of the selected folder, current folder, selected message(s), current message, selected sequence, and current sequence. Each _x_m_h command is introduced.

For use in customization, action procedures corresponding to each command are given; these action procedures can be used to customize the user interface, particularly the keyboard accelerators and the functionality of the buttons in the optional button box created by the application resource CCoommmmaannddBBuuttttoonnCCoouunntt.

FOLDERS AND SEQUENCES

A folder contains a collection of mail messages, or is empty. _x_m_h supports folders with one level of subfolders.

The selected folder is whichever foldername appears in the bar above the folder buttons. Note that this is not necessarily the same folder that is currently being viewed. To change the selected folder, just press on the desired folder button with pointer button 1; if that folder has subfolders, select a folder from the pull-down menu.

The Table of Contents, or toc, lists the messages in the viewed folder. The title bar above the Table of Contents displays the name of the viewed folder.

The toc title bar also displays the name of the viewed sequence of messages within the viewed folder. Every folder has an implicit ``all'' sequence, which contains all the messages in the folder, and initially the toc title bar will show ``inbox:all''.

FOLDER COMMANDS

The _F_o_l_d_e_r command menu contains commands of a global nature:

Open Folder
Display the data in the selected folder. Thus, the selected folder also becomes the viewed folder. The action procedure corresponding to this command is XXmmhhOOppeennFFoollddeerr(([_f_o_l_d_e_r_n_a_m_e])). It takes an optional argument as the name of a folder to select and open; if no folder is specified, the selected folder is opened. It may be specified as part of an event translation from a folder menu button or from a folder menu, or as a binding of a keyboard accelerator to any widget other than the folder menu buttons or the folder menus.
Open Folder in New Window
Displays the selected folder in an additional main window. Note, however, that you cannot reliably display the same folder in more than one window at a time, although _x_m_h will not prevent you from trying. The corresponding action is XXmmhhOOppeennFFoollddeerrIInnNNeewwWWiinnddooww(()).
Create Folder
Create a new folder. You will be prompted for a name for the new folder; to enter the name, move the pointer to the blank box provided and type. Subfolders are created by specifying the parent folder, a slash, and the subfolder name. For example, to create a folder named ``xmh'' which is a subfolder of an existing folder named ``clients'', type ``clients/xmh''. Click on the Okay button when finished, or just type Return; click on Cancel to cancel this operation. The action corresponding to Create Folder is XXmmhhCCrreeaatteeFFoollddeerr(()).

Delete Folder
Destroy the selected folder. You will be asked to confirm this action (see CONFIRMATION WINDOWS). Destroying a folder will also destroy any subfolders of that folder. The corresponding action is XXmmhhDDeelleetteeFFoollddeerr(()).

Close Window
Exits _x_m_h, after first confirming that you won't lose any changes; or, if selected from any additional _x_m_h window, simply closes that window. The corresponding action is XXmmhhCClloossee(()).

HIGHLIGHTED MESSAGES, SELECTED MESSAGES

AND THE CURRENT MESSAGE

It is possible to highlight a set of adjacent messages in the area of the Table of Contents. To highlight a message, click on it with pointer button 1. To highlight a range of messages, click on the first one with pointer button 1 and on the last one with pointer button 3; or press pointer button 1, drag, and release. To extend a range of selected messages, use pointer button 3. To highlight all messages in the table of contents, click rapidly three times with pointer button 1. To cancel any selection in the table of contents, click rapidly twice.

The selected messages are the same as the highlighted messages, if any. If no messages are highlighted, then the selected messages are considered the same as the current message.

The current message is indicated by a `+' next to the message number. It usually corresponds to the message currently being viewed. Upon opening a new folder, for example, the current message will be different from the viewed message. When a message is viewed, the title bar above the view will identify the message.

TABLE OF CONTENTS COMMANDS

The _T_a_b_l_e _o_f _C_o_n_t_e_n_t_s command menu contains commands which operate on the open, or viewed, folder.

Incorporate New Mail
Add any new mail received to viewed folder, and set the current message to be the first new message. This command is selectable in the menu and will execute only if the viewed folder is allowed to receive new mail. By default, only ``inbox'' is allowed to incorporate new mail. The corresponding action is XXmmhhIInnccoorrppoorraatteeNNeewwMMaaiill(()).
Commit Changes
Execute all deletions, moves, and copies that have been marked in this folder. The corresponding action is XXmmhhCCoommmmiittCChhaannggeess(()).
Pack Folder
Renumber the messages in this folder so they start with 1 and increment by 1. The corresponding action is XXmmhhPPaacckkFFoollddeerr(()).
Sort Folder
Sort the messages in this folder in chronological order. (As a side effect, this may also pack the folder.) The corresponding action is XXmmhhSSoorrttFFoollddeerr(()).
Rescan Folder
Rebuild the list of messages. This can be used whenever you suspect that _x_m_h's idea of what messages you have is wrong. (In particular, this is necessary if you change things using straight _M_H commands without using _x_m_h.) The corresponding action is XXmmhhFFoorrcceeRReessccaann(()).

MESSAGE COMMANDS

The _M_e_s_s_a_g_e command menu contains commands which operate on the selected message(s), or if there are no selected messages, the current message.

Compose Message
Composes a new message. A new window will be brought up for composition; a description of it is given in the COMPOSITION WINDOWS section below. This command does not affect the current message. The corresponding action is XXmmhhCCoommppoosseeMMeessssaaggee(()).

View Next Message
View the first selected message. If no messages are highlighted, view the current message. If current message is already being viewed, view the first unmarked message after the current message. The corresponding action is XXmmhhVViieewwNNeexxttMMeessssaaggee(()).

View Previous
View the last selected message. If no messages are highlighted, view the current message. If current message is already being viewed, view the first unmarked message before the current message. The corresponding action is XXmmhhVViieewwPPrreevviioouuss(()).

Delete
Mark the selected messages for deletion. If no messages are highlighted, mark the current message for deletion and automatically display the next unmarked message. The corresponding action is XXmmhhMMaarrkkDDeelleettee(()).

Move
Mark the selected messages to be moved into the currently selected folder. (If the selected folder is the same as the viewed folder, this command will just beep.) If no messages are highlighted, mark the current message to be moved and display the next unmarked message. The corresponding action is XXmmhhMMaarrkkMMoovvee(()).

Copy as Link
Mark the selected messages to be copied into the selected folder. (If the selected folder is the same as the viewed folder, this command will just beep.) If no messages are highlighted, mark the current message to be copied. Note that messages are actually linked, not copied; editing a message copied by _x_m_h will affect all copies of the message. The corresponding action is XXmmhhMMaarrkkCCooppyy(()).

Unmark
Remove any of the above three marks from the selected messages, or the current message, if none are highlighted. The corresponding action is XXmmhhUUnnmmaarrkk(()).

View in New
Create a new window containing only a view of the first selected message, or the current message, if none are highlighted. The corresponding action is XXmmhhVViieewwIInnNNeewwWWiinnddooww(()).

Reply
Create a composition window in reply to the first selected message, or the current message, if none are highlighted. The corresponding action is XXmmhhRReeppllyy(()).

Forward
Create a composition window whose body is initialized to contain an encapsulation of of the selected messages, or the current message if none are highlighted. The corresponding action is XXmmhhFFoorrwwaarrdd(()).

Use as Composition
Create a composition window whose body is initialized to be the contents of the first selected message, or the current message if none are selected. Any changes you make in the composition will be saved in a new message in the ``drafts'' folder, and will not change the original message. However, there is an exception to this rule. If the message to be used as composition was selected from the ``drafts'' folder, (see BUGS), the changes will be reflected in the original message (see COMPOSITION WINDOWS). The action procedure corresponding to this command is XXmmhhUUsseeAAssCCoommppoossiittiioonn(()).

Print
Print the selected messages, or the current message if none are selected. _x_m_h normally prints by invoking the _e_n_s_c_r_i_p_t(1) command, but this can be customized with the _x_m_h application-specific resource PPrriinnttCCoommmmaanndd. The corresponding action is XXmmhhPPrriinntt(()).

SEQUENCE COMMANDS

The _S_e_q_u_e_n_c_e command menu contains commands pertaining to message sequences (See MESSAGE-SEQUENCES), and a list of the message-sequences defined for the currently viewed folder. The selected message-sequence is indicated by a check mark in its entry in the margin of the menu. To change the selected message-sequence, select a new message-sequence from the sequence menu.

Pick Messages
Define a new message-sequence. The corresponding action is XXmmhhPPiicckkMMeessssaaggeess(()).

The following menu entries will be sensitive only if the current folder has any message-sequences other than the ``all'' message-sequence.

Open Sequence
Change the viewed sequence to be the same as the selected sequence. The corresponding action is XXmmhhOOppeennSSeeqquueennccee(()).

Add to Sequence
Add the selected messages to the selected sequence. The corresponding action is XXmmhhAAddddTTooSSeeqquueennccee(()).

Remove from Sequence
Remove the selected messages from the selected sequence. The corresponding action is XXmmhhRReemmoovveeFFrroommSSeeqquueennccee(()).

Delete Sequence
Remove the selected sequence entirely. The messages themselves are not affected; they simply are no longer grouped together to define a message-sequence. The corresponding action is XXmmhhDDeelleetteeSSeeqquueennccee(()).

VIEW COMMANDS

Commands in the _V_i_e_w menu and in the buttonboxes of view windows (which result from the _M_e_s_s_a_g_e menu command VViieeww IInn NNeeww) correspond in functionality to commands of the same name in the _M_e_s_s_a_g_e menu, but they operate on the viewed message rather than the selected messages or current message.

Close Window
When the viewed message is in a separate view window, this command will close the view, after confirming the status of any unsaved edits. The corresponding action procedure is XXmmhhCClloosseeVViieeww(()).
Reply
Create a composition window in reply to the viewed message. The related action procedure is XXmmhhVViieewwRReeppllyy(()).
Forward
Create a composition window whose body is initialized contain an encapsulation of the viewed message. The corresponding action is XXmmhhVViieewwFFoorrwwaarrdd(()).
Use As Composition
Create a composition window whose body is initialized to be the contents of the viewed message. Any changes made in the composition window will be saved in a new message in the ``drafts'' folder, and will not change the original message. An exception: if the viewed message was selected from the ``drafts'' folder, (see BUGS) the original message is edited. The action procedure corresponding to this command is XXmmhhVViieewwUUsseeAAssCCoommppoossiittiioonn(()).
Edit Message
This command enables the direct editing of the viewed message. The action procedure is XXmmhhEEddiittVViieeww(()).
Save Message
This command is insensitive until the message has been edited; when activated, edits will be saved to the original message in the view. The corresponding action is XXmmhhSSaavveeVViieeww(()).
Print
Print the viewed message. _x_m_h prints by invoking the _e_n_s_c_r_i_p_t(1) command, but this can be customized with the application-specific resource PPrriinnttCCoommmmaanndd. The corresponding action procedure is XXmmhhPPrriinnttVViieeww(()).
Delete
Marks the viewed message for deletion. The corresponding action procedure is XXmmhhVViieewwMMaarrkkDDeelleettee(()).

OPTIONS

The _O_p_t_i_o_n_s menu contains one entry.

Read in Reverse
When selected, a check mark appears in the margin of this menu entry. Read in Reverse will switch the meaning of the next and previous messages, and will increment to the current message marker in the opposite direction. This is useful if you want to read your messages in the order of most recent first. The option acts as a toggle; select it from the menu a second time to undo the effect. The check mark appears when the option is selected.

COMPOSITION WINDOWS

Composition windows are created by selecting CCoommppoossee MMeessssaaggee from the _M_e_s_s_a_g_e command menu, or by selecting RReeppllyy or FFoorrwwaarrdd or UUssee aass CCoommppoossiittiioonn from the _M_e_s_s_a_g_e or _V_i_e_w command menu. These are used to compose mail messages. Aside from the normal text editing functions, there are six command buttons associated with composition windows:
Close Window
Close this composition window. If changes have been made since the most recent Save or Send, you will be asked to confirm losing them. The corresponding action is XXmmhhCClloosseeVViieeww(()).

Send
Send this composition. The corresponding action is XXmmhhSSeenndd(()).

New Headers
Replace the current composition with an empty message. If changes have been made since the most recent Send or Save, you will be asked to confirm losing them. The corresponding action is XXmmhhRReesseettCCoommppoossee(()).

Compose Message
Bring up another new composition window. The corresponding action is XXmmhhCCoommppoosseeMMeessssaaggee(()).

Save Message
Save this composition in your drafts folder. Then you can safely close the composition. At some future date, you can continue working on the composition by opening the drafts folder, selecting the message, and using the ``Use as Composition'' command. The corresponding action is XXmmhhSSaavvee(()).

Insert
Insert a related message into the composition. If the composition window was created with a ``Reply'' command, the related message is the message being replied to, otherwise no related message is defined and this button is insensitive. The message may be filtered before being inserted; see RReeppllyyIInnsseerrttFFiilltteerr under APPLICATION RESOURCES for more information. The corresponding action is XXmmhhIInnsseerrtt(()).

ACCELERATORS

Accelerators are shortcuts. They allow you to invoke commands without using the menus, either from the keyboard or by using the pointer.

_x_m_h defines pointer accelerators for common actions: To select and view a message with a single click, use pointer button 2 on the message's entry in the table of contents. To select and open a folder or a sequence in a single action, make the folder or sequence selection with pointer button 2.

To mark the highlighted messages, or current message if none have been highlighted, to be moved to a folder in a single action, use pointer button 3 to select the target folder and simultaneously mark the messages. Similarly, selecting a sequence with pointer button 3 will add the highlighted or current message(s) to that sequence. In both of these operations, the selected folder or sequence and the viewed folder or sequence are not changed.

_x_m_h defines the following keyboard accelerators over the surface of the main window, except in the view area while editing a message:

        Meta-I          Incorporate New Mail
        Meta-C          Commit Changes
        Meta-R          Rescan Folder
        Meta-P          Pack Folder
        Meta-S          Sort Folder

Meta-space View Next Message Meta-c Mark Copy Meta-d Mark Deleted Meta-f Forward the selected or current message Meta-m Mark Move Meta-n View Next Message Meta-p View Previous Message Meta-r Reply to the selected or current message Meta-u Unmark

Ctrl-V Scroll the table of contents forward Meta-V Scroll the table of contents backward Ctrl-v Scroll the view forward Meta-v Scroll the view backward

TEXT EDITING COMMANDS

All of the text editing commands are actually defined by the Text widget in the Athena Widget Set. The commands may be bound to different keys than the defaults described below through the X Toolkit Intrinsics key re-binding mechanisms. See the X Toolkit Intrinsics and the Athena Widget Set documentation for more details.

Whenever you are asked to enter any text, you will be using a standard text editing interface. Various control and meta keystroke combinations are bound to a somewhat Emacs-like set of commands. In addition, the pointer buttons may be used to select a portion of text or to move the insertion point in the text. Pressing pointer button 1 causes the insertion point to move to the pointer. Double-clicking button 1 selects a word, triple-clicking selects a line, quadruple-clicking selects a paragraph, and clicking rapidly five times selects everything. Any selection may be extended in either direction by using pointer button 3.

In the following, a _l_i_n_e refers to one displayed row of characters in the window. A _p_a_r_a_g_r_a_p_h refers to the text between carriage returns. Text within a paragraph is broken into lines for display based on the current width of the window. When a message is sent, text is broken into lines based upon the values of the SSeennddBBrreeaakkWWiiddtthh and SSeennddWWiiddtthh application-specific resources.

The following keystroke combinations are defined:


Ctrl-a    Beginning Of Line   Meta-b         Backward Word
Ctrl-b    Backward Character  Meta-f         Forward Word
Ctrl-d    Delete Next Character              Meta-iInsert File
Ctrl-e    End Of Line         Meta-k         Kill To End Of Paragraph
Ctrl-f    Forward Character   Meta-q         Form Paragraph
Ctrl-g    Multiply Reset      Meta-v         Previous Page
Ctrl-h    Delete Previous Character          Meta-yInsert Current Selection
Ctrl-j    Newline And Indent  Meta-z         Scroll One Line Down
Ctrl-k    Kill To End Of Line Meta-d         Delete Next Word
Ctrl-l    Redraw Display      Meta-D         Kill Word
Ctrl-m    Newline             Meta-h         Delete Previous Word
Ctrl-n    Next Line           Meta-H         Backward Kill Word
Ctrl-o    Newline And Backup  Meta-<         Beginning Of File
Ctrl-p    Previous Line       Meta->         End Of File
Ctrl-r    Search/Replace Backward            Meta-]Forward Paragraph
Ctrl-s    Search/Replace Forward             Meta-[Backward Paragraph
Ctrl-t    Transpose Characters
Ctrl-u    Multiply by 4       Meta-Delete    Delete Previous Word
Ctrl-v    Next Page           Meta-Shift DeleteKill Previous Word
Ctrl-w    Kill Selection      Meta-Backspace Delete Previous Word
Ctrl-y    Unkill              Meta-Shift BackspaceKill Previous Word
Ctrl-z    Scroll One Line Up


In addition, the pointer may be used to copy and paste text: Button 1 Down Start Selection Button 1 MotionAdjust Selection Button 1 Up End Selection (copy)

Button 2 Down Insert Current Selection (paste)

Button 3 Down Extend Current Selection Button 3 MotionAdjust Selection Button 3 Up End Selection (copy)

CONFIRMATION DIALOG BOXES

Whenever you press a button that may cause you to lose some work or is otherwise dangerous, a popup dialog box will appear asking you to confirm the action. This window will contain an ``Abort'' or ``No'' button and a ``Confirm'' or ``Yes'' button. Pressing the ``No'' button cancels the operation, and pressing the ``Yes'' will proceed with the operation.

When _x_m_h is run under a Release 6 session manager it will prompt the user for confirmation during a checkpoint operation. The dialog box asks whether any current changes should be committed (saved) during the checkpoint. Responding ``Yes'' will have the same effect as pressing the ``Commit Changes'' or ``Save Message'' buttons in the respective folder and view windows. Responding ``No'' will cause the checkpoint to continue successfully to completion without actually saving any pending changes. If the session manager disallows user interaction during the checkpoint a ``Yes'' response is assumed; i.e. all changes will be committed during the checkpoint.

Some dialog boxes contain messages from _M_H. Occasionally when the message is more than one line long, not all of the text will be visible. Clicking on the message field will cause the dialog box to resize so that you can read the entire message.

MESSAGE-SEQUENCES

An _M_H message sequence is just a set of messages associated with some name. They are local to a particular folder; two different folders can have sequences with the same name. The sequence named ``all'' is predefined in every folder; it consists of the set of all messages in that folder. As many as nine sequences may be defined for each folder, including the predefined ``all'' sequence. (The sequence ``cur'' is also usually defined for every folder; it consists of only the current message. _x_m_h hides ``cur'' from the user, instead placing a ``+'' by the current message. Also, _x_m_h does not support _M_H's``unseen'' sequence, so that one is also hidden from the user.)

The message sequences for a folder (including one for ``all'') are displayed in the ``Sequence'' menu, below the sequence commands. The table of contents (also known as the ``toc'') is at any one time displaying one message sequence. This is called the ``viewed sequence'', and its name will be displayed in the toc title bar after the folder name. Also, at any time one of the sequences in the menu will have a check mark next to it. This is called the ``selected sequence''. Note that the viewed sequence and the selected sequence are not necessarily the same. (This all pretty much corresponds to the way folders work.)

The OOppeenn SSeeqquueennccee, AAdddd ttoo SSeeqquueennccee, RReemmoovvee ffrroomm SSeeqquueennccee, and DDeelleettee SSeeqquueennccee commands are active only if the viewed folder contains message-sequences other than ``all'' sequence.

Note that none of the above actually affect whether a message is in the folder. Remember that a sequence is a set of messages within the folder; the above operations just affect what messages are in that set.

To create a new sequence, select the ``Pick'' menu entry. A new window will appear, with lots of places to enter text. Basically, you can describe the sequence's initial set of messages based on characteristics of the message. Thus, you can define a sequence to be all the messages that were from a particular person, or with a particular subject, and so on. You can also connect things up with boolean operators, so you can select all things from ``weissman'' with a subject containing ``xmh''.

The layout should be fairly obvious. The simplest cases are the easiest: just point to the proper field and type. If you enter in more than one field, it will only select messages which match all non-empty fields.

The more complicated cases arise when you want things that match one field or another one, but not necessarily both. That's what all the ``or'' buttons are for. If you want all things with subjects that include ``xmh'' or ``xterm'', just press the ``or'' button next to the ``Subject:'' field. Another box will appear where you can enter another subject.

If you want all things either from ``weissman'' or with subject ``xmh'', but not necessarily both, select the ``-Or-'' button. This will essentially double the size of the form. You can then enter ``weissman'' in a from: box on the top half, and ``xmh'' in a subject: box on the lower part.

If you select the ``Skip'' button, then only those messages that _d_o_n_'_t match the fields on that row are included.

Finally, in the bottom part of the window will appear several more boxes. One is the name of the sequence you're defining. (It defaults to the name of the selected sequence when ``Pick'' was pressed, or to ``temp'' if ``all'' was the selected sequence.) Another box defines which sequence to look through for potential members of this sequence; it defaults to the viewed sequence when ``Pick'' was pressed.

Two more boxes define a date range; only messages within that date range will be considered. These dates must be entered in RFC 822-style format: each date is of the form ``dd mmm yy hh:mm:ss zzz'', where dd is a one or two digit day of the month, mmm is the three-letter abbreviation for a month, and yy is a year. The remaining fields are optional: hh, mm, and ss specify a time of day, and zzz selects a time zone. Note that if the time is left out, it defaults to midnight; thus if you select a range of ``7 nov 86'' - ``8 nov 86'', you will only get messages from the 7th, as all messages on the 8th will have arrived after midnight.

``Date field'' specifies which field in the header to look at for this date range; it defaults to ``Date''. If the sequence you're defining already exists, you can optionally merge the old set with the new; that's what the ``Yes'' and ``No'' buttons are all about. Finally, you can ``OK'' the whole thing, or ``Cancel'' it.

In general, most people will rarely use these features. However, it's nice to occasionally use ``Pick'' to find some messages, look through them, and then hit ``Delete Sequence'' to put things back in their original state.

WIDGET HIERARCHY

In order to specify resources, it is useful to know the hierarchy of widgets which compose _x_m_h. In the notation below, indentation indicates hierarchical structure. The widget class name is given first, followed by the widget instance name. The application class name is Xmh.

The hierarchy of the main toc and view window is identical for additional toc and view windows, except that a TopLevelShell widget is inserted in the hierarchy between the application shell and the Paned widget.


Xmh xmh
     Paned xmh
          SimpleMenu  folderMenu
               SmeBSB  open
               SmeBSB  openInNew
               SmeBSB  create
               SmeBSB  delete
               SmeLine  line
               SmeBSB  close
          SimpleMenu  tocMenu
               SmeBSB  inc
               SmeBSB  commit
               SmeBSB  pack
               SmeBSB  sort
               SmeBSB  rescan
          SimpleMenu  messageMenu
               SmeBSB  compose
               SmeBSB  next
               SmeBSB  prev
               SmeBSB  delete
               SmeBSB  move
               SmeBSB  copy
               SmeBSB  unmark
               SmeBSB  viewNew
               SmeBSB  reply
               SmeBSB  forward
               SmeBSB  useAsComp
               SmeBSB  print
          SimpleMenu  sequenceMenu
               SmeBSB  pick
               SmeBSB  openSeq
               SmeBSB  addToSeq
               SmeBSB  removeFromSeq
               SmeBSB  deleteSeq
               SmeLine  line
               SmeBSB  all
          SimpleMenu  viewMenu
               SmeBSB  reply
               SmeBSB  forward
               SmeBSB  useAsComp
               SmeBSB  edit
               SmeBSB  save
               SmeBSB  print
          SimpleMenu  optionMenu
               SmeBSB  reverse
          Viewport.Core  menuBox.clip
               Box  menuBox
                    MenuButton  folderButton
                    MenuButton  tocButton
                    MenuButton  messageButton
                    MenuButton  sequenceButton
                    MenuButton  viewButton
                    MenuButton  optionButton
          Grip  grip
          Label folderTitlebar
          Grip  grip
          Viewport.Core  folders.clip
               Box  folders
                    MenuButton  inbox
                    MenuButton  drafts
                         SimpleMenu  menu
                              SmeBSB 
                                   .
                                   .
                                   .

Grip grip Label tocTitlebar Grip grip Text toc Scrollbar vScrollbar Grip grip Label viewTitlebar Grip grip Text view Scrollbar vScrollbar Scrollbar hScrollbar

_T_h_e _h_i_e_r_a_r_c_h_y _o_f _t_h_e _C_r_e_a_t_e _F_o_l_d_e_r _p_o_p_u_p _d_i_a_l_o_g _b_o_x_:

TransientShell prompt Dialog dialog Label label Text value Command okay Command cancel

_T_h_e _h_i_e_r_a_r_c_h_y _o_f _t_h_e _N_o_t_i_c_e _d_i_a_l_o_g _b_o_x_, _w_h_i_c_h _r_e_p_o_r_t_s _m_e_s_s_a_g_e_s _f_r_o_m _M_H_:

TransientShell notice Dialog dialog Label label Text value Command confirm

_T_h_e _h_i_e_r_a_r_c_h_y _o_f _t_h_e _C_o_n_f_i_r_m_a_t_i_o_n _d_i_a_l_o_g _b_o_x_:

TransientShell confirm Dialog dialog Label label Command yes Command no

_T_h_e _h_i_e_r_a_r_c_h_y _o_f _t_h_e _d_i_a_l_o_g _b_o_x _w_h_i_c_h _r_e_p_o_r_t_s _e_r_r_o_r_s_:

TransientShell error Dialog dialog Label label Command OK

_T_h_e _h_i_e_r_a_r_c_h_y _o_f _t_h_e _c_o_m_p_o_s_i_t_i_o_n _w_i_n_d_o_w_:

TopLevelShell xmh Paned xmh Label composeTitlebar Text comp Viewport.Core compButtons.clip Box compButtons Command close Command send Command reset Command compose Command save Command insert

_T_h_e _h_i_e_r_a_r_c_h_y _o_f _t_h_e _v_i_e_w _w_i_n_d_o_w_:

TopLevelShell xmh Paned xmh Label viewTitlebar Text view Viewport.Core viewButtons.clip Box viewButtons Command close Command reply Command forward Command useAsComp Command edit Command save Command print Command delete

_T_h_e _h_i_e_r_a_r_c_h_y _o_f _t_h_e _p_i_c_k _w_i_n_d_o_w_: _(_U_n_n_a_m_e_d _w_i_d_g_e_t_s _h_a_v_e _n_o _n_a_m_e_._)

TopLevelShell xmh Paned xmh Label pickTitlebar Viewport.Core pick.clip Form form Form groupform _T_h_e _f_i_r_s_t _6 _r_o_w_s _o_f _t_h_e _p_i_c_k _w_i_n_d_o_w _h_a_v_e _i_d_e_n_t_i_c_a_l _s_t_r_u_c_t_u_r_e_: Form rowform Toggle Toggle Label Text Command

Form rowform Toggle Toggle Text Text Command Form rowform Command Viewport.core pick.clip Form form From groupform Form rowform Label Text Label Text Form rowform Label Text Label Text Label Text Form rowform Label Toggle Toggle Form rowform Command Command

APPLICATION-SPECIFIC RESOURCES

The application class name is XXmmhh. Application-specific resources are listed below by name. Application-specific resource class names always begin with an upper case character, but unless noted, are otherwise identical to the instance names given below.

Any of these options may also be specified on the command line by using the X Toolkit Intrinsics resource specification mechanism. Thus, to run _x_m_h showing all message headers,
% xmh -xrm '*HideBoringHeaders:off'

If TTooccGGeeoommeettrryy, VViieewwGGeeoommeettrryy, CCoommppGGeeoommeettrryy, or PPiicckkGGeeoommeettrryy are not specified, then the value of GGeeoommeettrryy is used instead. If the resulting height is not specified (e.g., "", "=500", "+0-0"), then the default height of windows is calculated from fonts and line counts. If the width is not specified (e.g., "", "=x300", "-0+0"), then half of the display width is used. If unspecified, the height of a pick window defaults to half the height of the display.

The following resources are defined:

banner
A short string that is the default label of the folder, Table of Contents, and view. The default shows the program name, vendor, and release.

blockEventsOnBusy
Whether to disallow user input and show a busy cursor while _x_m_h is busy processing a command. If false, the user can `mouse ahead' and type ahead; if true, user input is discarded when processing lengthy _m_h commands. The default is true.

busyCursor
The name of the symbol used to represent the position of the pointer, displayed if bblloocckkEEvveennttssOOnnBBuussyy is true, when _x_m_h is processing a time-consuming command. The default is "watch".

busyPointerColor
The foreground color of the busy cursor. Default is XtDefaultForeground.

checkFrequency
How often to check for new mail, make checkpoints, and rescan the Table of Contents, in minutes. If cchheecckkNNeewwMMaaiill is true, _x_m_h checks to see if you have new mail each interval. If mmaakkeeCChheecckkppooiinnttss is true, checkpoints are made every fifth interval. Also every fifth interval, the Table of Contents is checked for inconsistencies with the file system, and rescanned if out of date. To prevent all of these checks from occurring, set CChheecckkFFrreeqquueennccyy to 0. The default is 1. This resource is retained for backward compatibility with user resource files; see also cchheecckkppooiinnttIInntteerrvvaall, mmaaiillIInntteerrvvaall, and rreessccaannIInntteerrvvaall.

checkNewMail
If true, _x_m_h will check at regular intervals to see if new mail has arrived for any of the top level folders and any opened subfolders. A visual indication will be given if new mail is waiting to be incorporated into a top level folder. Default is true. The interval can be adjusted with mmaaiillIInntteerrvvaall.

checkpointInterval ((ccllaassss IInntteerrvvaall))<> <> SSppeecciiffiieess iinn mmiinnuutteess hhooww oofftteenn ttoo mmaakkee cchheecckkppooiinnttss ooff vvoollaattiillee ssttaattee,, iiff mmaakkeeCChheecckkppooiinnttss iiss ttrruuee.. TThhee ddeeffaauulltt iiss 55 ttiimmeess tthhee vvaalluuee ooff cchheecckkFFrreeqquueennccyy.. <> <> <> <> <>cchheecckkppooiinnttNNaammeeFFoorrmmaatt<> <> SSppeecciiffiieess hhooww cchheecckkppooiinntteedd ffiilleess aarree ttoo bbee nnaammeedd.. TThhee vvaalluuee ooff tthhiiss rreessoouurrccee wwiillll bbee uusseedd ttoo ccoommppoossee aa ffiillee nnaammee bbyy iinnsseerrttiinngg tthhee mmeessssaaggee nnuummbbeerr aass aa ssttrriinngg iinn ppllaaccee ooff tthhee rreeqquuiirreedd ssiinnggllee ooccccuurrrreennccee ooff ``%%dd''.. IIff tthhee vvaalluuee ooff tthhee rreessoouurrccee iiss tthhee eemmppttyy ssttrriinngg,, oorr iiff nnoo ``%%dd'' ooccccuurrss iinn tthhee ssttrriinngg,, oorr iiff ""%%dd"" iiss tthhee vvaalluuee ooff tthhee rreessoouurrccee,, tthhee ddeeffaauulltt wwiillll bbee uusseedd iinnsstteeaadd.. TThhee ddeeffaauulltt iiss ""%%dd..CCKKPP"".. CChheecckkppooiinnttiinngg iiss ddoonnee iinn tthhee ffoollddeerr ooff oorriiggiinn uunnlleessss aann aabbssoolluuttee ppaatthhnnaammee iiss ggiivveenn.. _x_m_h ddooeess nnoott aassssiisstt tthhee uusseerr iinn rreeccoovveerriinngg cchheecckkppooiinnttss,, nnoorr ddooeess iitt pprroovviiddee ffoorr rreemmoovvaall ooff tthhee cchheecckkppooiinntt ffiilleess.. <> <> <> <> <>ccoommmmaannddBBuuttttoonnCCoouunntt<> <> TThhee nnuummbbeerr ooff ccoommmmaanndd bbuuttttoonnss ttoo ccrreeaattee iinn aa bbuuttttoonn bbooxx iinn bbeettwweeeenn tthhee ttoocc aanndd tthhee vviieeww aarreeaass ooff tthhee mmaaiinn wwiinnddooww.. _x_m_h wwiillll ccrreeaattee tthheessee bbuuttttoonnss wwiitthh tthhee nnaammeess _b_u_t_t_o_n_1_, _b_u_t_t_o_n_2 aanndd ssoo oonn,, iinn aa bbooxx wwiitthh tthhee nnaammee _c_o_m_m_a_n_d_B_o_x. The default is 0. _x_m_h users can specify labels and actions for the buttons in a private resource file; see the section ACTIONS AND INTERFACE CUSTOMIZATION.

compGeometry
Initial geometry for windows containing compositions.

cursor
The name of the symbol used to represent the pointer. Default is ``left_ptr''.

debug
Whether or not to print information to stderr as _x_m_h runs. Default is false.

draftsFolder
The folder used for message drafts. Default is ``drafts''.

geometry
Default geometry to use. Default is none.

hideBoringHeaders
If ``on'', then _x_m_h will attempt to skip uninteresting header lines within messages by scrolling them off the top of the view. Default is ``on''.

initialFolder
Which folder to display on startup. May also be set with the command-line option --iinniittiiaall. Default is ``inbox''.

initialIncFile
The absolute path name of your incoming mail drop file. In some installations, for example those using the Post Office Protocol, no file is appropriate. In this case, iinniittiiaallIInnccFFiillee should not be specified, or may be specified as the empty string, and _i_n_c will be invoked without a -file argument. By default, this resource has no value. This resource is ignored if _x_m_h finds an _._x_m_h_c_h_e_c_k file; see the section on multiple mail drops.

mailInterval (_c_l_a_s_s IInntteerrvvaall))<> <> SSppeecciiffiieess tthhee iinntteerrvvaall iinn mmiinnuutteess aatt wwhhiicchh tthhee mmaaiill sshhoouulldd bbee cchheecckkeedd,, iiff mmaaiillWWaaiittiinnggFFllaagg oorr cchheecckkNNeewwMMaaiill iiss ttrruuee.. TThhee ddeeffaauulltt iiss tthhee vvaalluuee ooff cchheecckkFFrreeqquueennccyy.

mailPath
The full path prefix for locating your mail folders. May also be set with the command line option, --ppaatthh. The default is the Path component in the _M_H profile, or ``$HOME/Mail'' if none.

mailWaitingFlag
If true, _x_m_h will attempt to set an indication in its icon when new mail is waiting to be retrieved. If mmaaiillWWaaiittiinnggFFllaagg is true, then cchheecckkNNeewwMMaaiill is assumed to be true as well. The --ffllaagg command line option is a quick way to turn on this resource.

makeCheckpoints
If true, _x_m_h will attempt to save checkpoints of volatile edits. The default is false. The frequency of checkpointing is controlled by the resource cchheecckkppooiinnttIInntteerrvvaall. For the location of checkpointing, see cchheecckkppooiinnttNNaammeeFFoorrmmaatt.

mhPath
What directory in which to find the _M_H commands. If a command isn't found in the user's path, then the path specified here is used. Default is ``/usr/local/mh6''.

newMailBitmap _(_c_l_a_s_s NNeewwMMaaiillBBiittmmaapp_)_<_/_b_> _<_d_d_> _T_h_e _b_i_t_m_a_p _t_o _s_h_o_w _i_n _t_h_e _f_o_l_d_e_r _b_u_t_t_o_n _w_h_e_n _a _f_o_l_d_e_r _h_a_s _n_e_w _m_a_i_l_. _T_h_e _d_e_f_a_u_l_t _i_s _`_`_b_l_a_c_k_6_'_'_. _<_/_d_l_> _<_p_> _<_d_l _c_o_m_p_a_c_t_> _<_d_t_> _<_b_>_n_e_w_M_a_i_l_I_c_o_n_B_i_t_m_a_p ((ccllaassss NNeewwMMaaiillBBiittmmaapp))<> <> TThhee bbiittmmaapp ssuuggggeesstteedd ttoo tthhee wwiinnddooww mmaannaaggeerr ffoorr tthhee iiccoonn wwhheenn aannyy ffoollddeerr hhaass nneeww mmaaiill.. TThhee ddeeffaauulltt iiss ````ffllaagguupp''''.. <> <> <> <> <>nnooMMaaiillBBiittmmaapp ((ccllaassss NNooMMaaiillBBiittmmaapp))<> <> TThhee bbiittmmaapp ttoo sshhooww iinn tthhee ffoollddeerr bbuuttttoonn wwhheenn aa ffoollddeerr hhaass nnoo nneeww mmaaiill.. TThhee ddeeffaauulltt iiss ````bbooxx66''''.. <> <> <> <> <>nnooMMaaiillIIccoonnBBiittmmaapp ((ccllaassss NNooMMaaiillBBiittmmaapp))<> <> TThhee bbiittmmaapp ssuuggggeesstteedd ttoo tthhee wwiinnddooww mmaannaaggeerr ffoorr tthhee iiccoonn wwhheenn nnoo ffoollddeerrss hhaavvee nneeww mmaaiill.. TThhee ddeeffaauulltt iiss ````ffllaaggddoowwnn''''.. <> <> <> <> <>ppiicckkGGeeoommeettrryy<> <> IInniittiiaall ggeeoommeettrryy ffoorr ppiicckk wwiinnddoowwss.. <> <> <> <> <>ppooiinntteerrCCoolloorr<> <> TThhee ffoorreeggrroouunndd ccoolloorr ooff tthhee ppooiinntteerr.. DDeeffaauulltt iiss XXttDDeeffaauullttFFoorreeggrroouunndd.. <> <> <> <> <>pprreeffiixxWWmmAAnnddIIccoonnNNaammee<> <> WWhheetthheerr ttoo pprreeffiixx tthhee wwiinnddooww aanndd iiccoonn nnaammee wwiitthh ""xxmmhh:: "".. DDeeffaauulltt iiss ttrruuee.. <> <> <> <> <>pprriinnttCCoommmmaanndd<> <> AAnn _s_h ccoommmmaanndd ttoo eexxeeccuuttee ttoo pprriinntt aa mmeessssaaggee.. NNoottee tthhaatt ssttddoouutt aanndd ssttddeerrrr mmuusstt bbee ssppeecciiffiiccaallllyy rreeddiirreecctteedd.. IIff aa mmeessssaaggee oorr rraannggee ooff mmeessssaaggeess iiss sseelleecctteedd ffoorr pprriinnttiinngg,, tthhee ffuullll ffiillee ppaatthhss ooff eeaacchh mmeessssaaggee ffiillee aarree aappppeennddeedd ttoo tthhee ssppeecciiffiieedd pprriinntt ccoommmmaanndd.. TThhee ddeeffaauulltt iiss ````eennssccrriipptt >>//ddeevv//nnuullll 22>>//ddeevv//nnuullll''''.. <> <> <> <> <>rreeppllyyIInnsseerrttFFiilltteerr<> <> AAnn _s_h ccoommmmaanndd ttoo bbee eexxeeccuutteedd wwhheenn tthhee _I_n_s_e_r_t bbuuttttoonn iiss aaccttiivvaatteedd iinn aa ccoommppoossiittiioonn wwiinnddooww.. TThhee ffuullll ppaatthh aanndd ffiilleennaammee ooff tthhee ssoouurrccee mmeessssaaggee iiss aappppeennddeedd ttoo tthhee ccoommmmaanndd bbeeffoorree bbeeiinngg ppaasssseedd ttoo _s_h((11)).. TThhee ddeeffaauulltt ffiilltteerr iiss _c_a_t;; ii..ee.. iitt iinnsseerrttss tthhee eennttiirree mmeessssaaggee iinnttoo tthhee ccoommppoossiittiioonn.. IInntteerreessttiinngg ffiilltteerrss aarree:: _s_e_d _'_s_/_^_/_> _/_' oorr _a_w_k _-_e _'_{_p_r_i_n_t _" _" _$_0_}_' oorr _<_m_h _d_i_r_e_c_t_o_r_y_>_/_l_i_b_/_m_h_l _-_f_o_r_m _m_h_l_._b_o_d_y.. <> <> <> <> <>rreessccaannIInntteerrvvaall _(_c_l_a_s_s IInntteerrvvaall_)_<_/_b_> _<_d_d_> _H_o_w _o_f_t_e_n _t_o _c_h_e_c_k _t_h_e _T_a_b_l_e _o_f _C_o_n_t_e_n_t_s _o_f _c_u_r_r_e_n_t_l_y _v_i_e_w_e_d _f_o_l_d_e_r_s _a_n_d _o_f _f_o_l_d_e_r_s _w_i_t_h _m_e_s_s_a_g_e_s _c_u_r_r_e_n_t_l_y _b_e_i_n_g _v_i_e_w_e_d_, _a_n_d _t_o _u_p_d_a_t_e _t_h_e _T_a_b_l_e _o_f _C_o_n_t_e_n_t_s _i_f _x_m_h _s_e_e_s _i_n_c_o_n_s_i_s_t_e_n_c_i_e_s _w_i_t_h _t_h_e _f_i_l_e _s_y_s_t_e_m _i_n _t_h_e_s_e _f_o_l_d_e_r_s_. _T_h_e _d_e_f_a_u_l_t _i_s _5 _t_i_m_e_s _t_h_e _v_a_l_u_e _o_f cchheecckkFFrreeqquueennccyy_. _<_/_d_l_> _<_p_> _<_d_l _c_o_m_p_a_c_t_> _<_d_t_> _<_b_>_r_e_v_e_r_s_e_R_e_a_d_O_r_d_e_r_<_/_b_> _<_d_d_> _W_h_e_n _t_r_u_e_, _t_h_e _n_e_x_t _m_e_s_s_a_g_e _w_i_l_l _b_e _t_h_e _m_e_s_s_a_g_e _p_r_i_o_r _t_o _t_h_e _c_u_r_r_e_n_t _m_e_s_s_a_g_e _i_n _t_h_e _t_a_b_l_e _o_f _c_o_n_t_e_n_t_s_, _a_n_d _t_h_e _p_r_e_v_i_o_u_s _m_e_s_s_a_g_e _w_i_l_l _b_e _t_h_e _m_e_s_s_a_g_e _a_f_t_e_r _t_h_e _c_u_r_r_e_n_t _m_e_s_s_a_g_e _i_n _t_h_e _t_a_b_l_e _o_f _c_o_n_t_e_n_t_s_. _T_h_e _d_e_f_a_u_l_t _i_s _f_a_l_s_e_. _<_/_d_l_> _<_p_> _<_d_l _c_o_m_p_a_c_t_> _<_d_t_> _<_b_>_s_e_n_d_B_r_e_a_k_W_i_d_t_h_<_/_b_> _<_d_d_> _W_h_e_n _a _m_e_s_s_a_g_e _i_s _s_e_n_t _f_r_o_m _x_m_h_, _l_i_n_e_s _l_o_n_g_e_r _t_h_a_n _t_h_i_s _v_a_l_u_e _w_i_l_l _b_e _s_p_l_i_t _i_n_t_o _m_u_l_t_i_p_l_e _l_i_n_e_s_, _e_a_c_h _o_f _w_h_i_c_h _i_s _n_o _l_o_n_g_e_r _t_h_a_n SSeennddWWiiddtthh_. _T_h_i_s _v_a_l_u_e _m_a_y _b_e _o_v_e_r_r_i_d_d_e_n _f_o_r _a _s_i_n_g_l_e _m_e_s_s_a_g_e _b_y _i_n_s_e_r_t_i_n_g _a_n _a_d_d_i_t_i_o_n_a_l _l_i_n_e _i_n _t_h_e _m_e_s_s_a_g_e _h_e_a_d_e_r _o_f _t_h_e _f_o_r_m _S_e_n_d_B_r_e_a_k_W_i_d_t_h_: _v_a_l_u_e_. _T_h_i_s _l_i_n_e _w_i_l_l _b_e _r_e_m_o_v_e_d _f_r_o_m _t_h_e _h_e_a_d_e_r _b_e_f_o_r_e _t_h_e _m_e_s_s_a_g_e _i_s _s_e_n_t_. _T_h_e _d_e_f_a_u_l_t _i_s _2_0_0_0 _(_t_o _a_l_l_o_w _f_o_r _s_e_n_d_i_n_g _m_a_i_l _c_o_n_t_a_i_n_i_n_g _s_o_u_r_c_e _p_a_t_c_h_e_s_)_. _<_/_d_l_> _<_p_> _<_d_l _c_o_m_p_a_c_t_> _<_d_t_> _<_b_>_s_e_n_d_W_i_d_t_h_<_/_b_> _<_d_d_> _W_h_e_n _a _m_e_s_s_a_g_e _i_s _s_e_n_t _f_r_o_m _x_m_h_, _l_i_n_e_s _l_o_n_g_e_r _t_h_a_n SSeennddBBrreeaakkWWiiddtthh _c_h_a_r_a_c_t_e_r_s _w_i_l_l _b_e _s_p_l_i_t _i_n_t_o _m_u_l_t_i_p_l_e _l_i_n_e_s_, _e_a_c_h _o_f _w_h_i_c_h _i_s _n_o _l_o_n_g_e_r _t_h_a_n _t_h_i_s _v_a_l_u_e_. _T_h_i_s _v_a_l_u_e _m_a_y _b_e _o_v_e_r_r_i_d_d_e_n _f_o_r _a _s_i_n_g_l_e _m_e_s_s_a_g_e _b_y _i_n_s_e_r_t_i_n_g _a_n _a_d_d_i_t_i_o_n_a_l _l_i_n_e _i_n _t_h_e _m_e_s_s_a_g_e _h_e_a_d_e_r _o_f _t_h_e _f_o_r_m _S_e_n_d_W_i_d_t_h_: _v_a_l_u_e_. _T_h_i_s _l_i_n_e _w_i_l_l _b_e _r_e_m_o_v_e_d _f_r_o_m _t_h_e _h_e_a_d_e_r _b_e_f_o_r_e _t_h_e _m_e_s_s_a_g_e _i_s _s_e_n_t_. _T_h_e _d_e_f_a_u_l_t _i_s _7_2_. _<_/_d_l_> _<_p_> _<_d_l _c_o_m_p_a_c_t_> _<_d_t_> _<_b_>_s_h_o_w_O_n_I_n_c_<_/_b_> _<_d_d_> _W_h_e_t_h_e_r _t_o _a_u_t_o_m_a_t_i_c_a_l_l_y _s_h_o_w _t_h_e _c_u_r_r_e_n_t _m_e_s_s_a_g_e _a_f_t_e_r _i_n_c_o_r_p_o_r_a_t_i_n_g _n_e_w _m_a_i_l_. _D_e_f_a_u_l_t _i_s _t_r_u_e_. _<_/_d_l_> _<_p_> _<_d_l _c_o_m_p_a_c_t_> _<_d_t_> _<_b_>_s_k_i_p_C_o_p_i_e_d_<_/_b_> _<_d_d_> _W_h_e_t_h_e_r _t_o _s_k_i_p _o_v_e_r _m_e_s_s_a_g_e_s _m_a_r_k_e_d _f_o_r _c_o_p_y_i_n_g _w_h_e_n _u_s_i_n_g _`_`_V_i_e_w _N_e_x_t _M_e_s_s_a_g_e_'_' _a_n_d _`_`_V_i_e_w _P_r_e_v_i_o_u_s _M_e_s_s_a_g_e_'_'_. _D_e_f_a_u_l_t _i_s _t_r_u_e_. _<_/_d_l_> _<_p_> _<_d_l _c_o_m_p_a_c_t_> _<_d_t_> _<_b_>_s_k_i_p_D_e_l_e_t_e_d_<_/_b_> _<_d_d_> _W_h_e_t_h_e_r _t_o _s_k_i_p _o_v_e_r _m_e_s_s_a_g_e_s _m_a_r_k_e_d _f_o_r _d_e_l_e_t_i_o_n _w_h_e_n _u_s_i_n_g _`_`_V_i_e_w _N_e_x_t _M_e_s_s_a_g_e_'_' _a_n_d _`_`_V_i_e_w _P_r_e_v_i_o_u_s _M_e_s_s_a_g_e_'_'_. _D_e_f_a_u_l_t _i_s _t_r_u_e_. _<_/_d_l_> _<_p_> _<_d_l _c_o_m_p_a_c_t_> _<_d_t_> _<_b_>_s_k_i_p_M_o_v_e_d_<_/_b_> _<_d_d_> _W_h_e_t_h_e_r _t_o _s_k_i_p _o_v_e_r _m_e_s_s_a_g_e_s _m_a_r_k_e_d _f_o_r _m_o_v_i_n_g _t_o _o_t_h_e_r _f_o_l_d_e_r_s _w_h_e_n _u_s_i_n_g _`_`_V_i_e_w _N_e_x_t _M_e_s_s_a_g_e_'_' _a_n_d _`_`_V_i_e_w _P_r_e_v_i_o_u_s _M_e_s_s_a_g_e_'_'_. _D_e_f_a_u_l_t _i_s _t_r_u_e_. _<_/_d_l_> _<_p_> _<_d_l _c_o_m_p_a_c_t_> _<_d_t_> _<_b_>_s_t_i_c_k_y_M_e_n_u_<_/_b_> _<_d_d_> _I_f _t_r_u_e_, _w_h_e_n _p_o_p_u_p _c_o_m_m_a_n_d _m_e_n_u_s _a_r_e _u_s_e_d_, _t_h_e _m_o_s_t _r_e_c_e_n_t_l_y _s_e_l_e_c_t_e_d _e_n_t_r_y _w_i_l_l _b_e _u_n_d_e_r _t_h_e _c_u_r_s_o_r _w_h_e_n _t_h_e _m_e_n_u _p_o_p_s _u_p_. _D_e_f_a_u_l_t _i_s _f_a_l_s_e_. _S_e_e _t_h_e _f_i_l_e _c_l_i_e_n_t_s_/_x_m_h_/_X_m_h_._s_a_m_p_l_e for an example of how to specify resources for popup command menus.

tempDir
Directory for _x_m_h to store temporary files. For privacy, a user might want to change this to a private directory. Default is ``/tmp''.

tocGeometry
Initial geometry for main _x_m_h toc and view windows.

tocPercentage
The percentage of the main window that is used to display the Table of Contents. Default is 33.

tocWidth
How many characters to generate for each message in a folder's table of contents. Default is 100. Use less if the geometry of the main _x_m_h window results in the listing being clipped at the right hand boundary, or if you plan to use _m_h_l a lot, because it will be faster, and the extra characters may not be useful.

viewGeometry
Initial geometry for windows showing a view of a message.

MULTIPLE MAIL DROPS

Users may need to incorporate mail from multiple spool files or mail drops. If incoming mail is forwarded to the _M_H _s_l_o_c_a_l program, it can be sorted as specified by the user into multiple incoming mail drops. Refer to the _M_H man page for _s_l_o_c_a_l to learn how to specify forwarding and the automatic sorting of incoming mail in a _._m_a_i_l_d_e_l_i_v_e_r_y file.

To inform _x_m_h about the various mail drops, create a file in your home directory called _._x_m_h_c_h_e_c_k. In this file, a mapping between existing folder names and mail drops is created by giving a folder name followed by the absolute pathname of the mail drop site, with some white space separating them, one mapping per line. _x_m_h will read this file whether or not resources are set for notification of new mail arrival, and will allow incorporation of new mail into any folder with a mail drop. _x_m_h will invoke _i_n_c with the _-_f_i_l_e argument, and if _x_m_h has been requested to check for new mail, it will check directly, instead of using _m_s_g_c_h_k.

An example of _._x_m_h_c_h_e_c_k file format, for the folders ``inbox'' and ``xpert'':

inbox     /usr/spool/mail/converse
xpert     /users/converse/maildrops/xpert


ACTIONS AND INTERFACE CUSTOMIZATION

Because _x_m_h provides action procedures which correspond to command functionality and installs accelerators, users can customize accelerators and new button functionality in a private resource file. For examples of specifying customized resources, see the file _m_i_t_/_c_l_i_e_n_t_s_/_x_m_h_/_X_m_h_._s_a_m_p_l_e. To understand the syntax, see the Appendix of the _X _T_o_o_l_k_i_t _I_n_t_r_i_n_s_i_c_s specification on _T_r_a_n_s_l_a_t_i_o_n _T_a_b_l_e _S_y_n_t_a_x, and any general explanation of using and specifying _X resources. Unpredictable results can occur if actions are bound to events or widgets for which they were not designed.

Here's an example of how to bind actions to your own _x_m_h buttons, and how to redefine the default accelerators so that the Meta key is not required, in case you don't have access to the sample file mentioned above.


! To create buttons in the middle of the main window and give them semantics:

Xmh*CommandButtonCount: 5

Xmh*commandBox.button1.label: Inc Xmh*commandBox.button1.translations: #override\ ,: XmhIncorporateNewMail() unset()

Xmh*commandBox.button2.label: Compose Xmh*commandBox.button2.translations: #override\ ,: XmhComposeMessage() unset()

Xmh*commandBox.button3.label: Next Xmh*commandBox.button3.translations: #override\ ,: XmhViewNextMessage() unset()

Xmh*commandBox.button4.label: Delete Xmh*commandBox.button4.translations: #override\ ,: XmhMarkDelete() unset()

Xmh*commandBox.button5.label: Commit Xmh*commandBox.button5.translations: #override\ ,: XmhCommitChanges() unset()

! To redefine the accelerator bindings to exclude modifier keys, ! and add your own keyboard accelerator for Compose Message:

Xmh*tocMenu.accelerators: #override\n\ !:I: XmhIncorporateNewMail()\n\ !:C: XmhCommitChanges()\n\ !:R: XmhForceRescan()\n\ !:P: XmhPackFolder()\n\ !:S: XmhSortFolder()\n Xmh*messageMenu.accelerators: #override\n\ !:E: XmhComposeMessage()\n\ !space: XmhViewNextMessage()\n\ !:c: XmhMarkCopy()\n\ !:d: XmhMarkDelete()\n\ !:f: XmhForward()\n\ !:m: XmhMarkMove()\n\ !:n: XmhViewNextMessage()\n\ !:p: XmhViewPreviousMessage()\n\ !:r: XmhReply()\n\ !:u: XmhUnmark()\n

_x_m_h provides action procedures which correspond to entries in the command menus; these are given in the sections describing menu commands, not here. In addition to the actions corresponding to commands in the menus, these action routines are defined:

XmhPushFolder([_f_o_l_d_e_r_n_a_m_e_, _._._.]))
This action pushes each of its argument(s) onto a stack of foldernames. If no arguments are given, the selected folder is pushed onto the stack.
XmhPopFolder()
This action pops one foldername from the stack and sets the selected folder.
XmhPopupFolderMenu()
This action should always be taken when the user selects a folder button. A folder button represents a folder and zero or more subfolders. The menu of subfolders is built upon the first reference, by this routine. If there are no subfolders, this routine will mark the folder as having no subfolders, and no menu will be built. In that case the menu button emulates a toggle button. When subfolders exist, the menu will popup, using the menu button action PopupMenu().
XmhSetCurrentFolder()
This action allows menu buttons to emulate toggle buttons in the function of selecting a folder. This action is for menu button widgets only, and sets the selected folder.
XmhLeaveFolderButton()
This action ensures that the menu button behaves properly when the user moves the pointer out of the menu button window.
XmhPushSequence([_s_e_q_u_e_n_c_e_n_a_m_e_, _._._.]))
This action pushes each of its arguments onto the stack of sequence names. If no arguments are given, the selected sequence is pushed onto the stack.
XmhPopSequence()
This action pops one sequence name from the stack of sequence names, which then becomes the selected sequence.
XmhPromptOkayAction()
This action is equivalent to pressing the okay button in the Create Folder popup.
XmhReloadSeqLists()
This action rescans the contents of the public _M_H sequences for the currently opened folder and updates the sequence menu if necessary.
XmhShellCommand( _p_a_r_a_m_e_t_e_r [_, _p_a_r_a_m_e_t_e_r]))
At least one parameter must be specified. The parameters will be concatenated with a space character separator, into a single string, and the list of selected messages, or if no messages are selected, the current message, will be appended to the string of parameters. The string will be executed as a shell command. The messages are always given as absolute pathnames. It is an error to cause this action to execute when there are no selected messages and no current message.
XmhCheckForNewMail()
This action will check all mail drops known to xmh. If no mail drops have been specified by the user either through the _._x_m_h_c_h_e_c_k file or by the iinniittiiaallIInnccFFiillee resource, the _M_H command _m_s_g_c_h_k is used to check for new mail, otherwise, _x_m_h checks directly.
XmhWMProtocols(_[wwmm__ddeelleettee__wwiinnddooww_] _[wwmm__ssaavvee__yyoouurrsseellff_]_)_<_/_b_> _<_d_d_> _T_h_i_s _a_c_t_i_o_n _i_s _r_e_s_p_o_n_s_i_b_l_e _f_o_r _p_a_r_t_i_c_i_p_a_t_i_o_n _i_n _w_i_n_d_o_w _m_a_n_a_g_e_r _c_o_m_m_u_n_i_c_a_t_i_o_n _p_r_o_t_o_c_o_l_s_. _I_t _r_e_s_p_o_n_d_s _t_o _d_e_l_e_t_e _w_i_n_d_o_w _a_n_d _s_a_v_e _y_o_u_r_s_e_l_f _m_e_s_s_a_g_e_s_. _T_h_e _u_s_e_r _c_a_n _c_a_u_s_e _x_m_h _t_o _r_e_s_p_o_n_d _t_o _o_n_e _o_r _b_o_t_h _o_f _t_h_e_s_e _p_r_o_t_o_c_o_l_s_, _e_x_a_c_t_l_y _a_s _i_f _t_h_e _w_i_n_d_o_w _m_a_n_a_g_e_r _h_a_d _m_a_d_e _t_h_e _r_e_q_u_e_s_t_, _b_y _i_n_v_o_k_i_n_g _t_h_e _a_c_t_i_o_n _w_i_t_h _t_h_e _a_p_p_r_o_p_r_i_a_t_e _p_a_r_a_m_e_t_e_r_s_. _T_h_e _a_c_t_i_o_n _i_s _i_n_s_e_n_s_i_t_i_v_e _t_o _t_h_e _c_a_s_e _o_f _t_h_e _s_t_r_i_n_g _p_a_r_a_m_e_t_e_r_s_. _I_f _t_h_e _e_v_e_n_t _r_e_c_e_i_v_e_d _i_s _a _C_l_i_e_n_t_M_e_s_s_a_g_e _e_v_e_n_t _a_n_d _p_a_r_a_m_e_t_e_r_s _a_r_e _p_r_e_s_e_n_t_, _a_t _l_e_a_s_t _o_n_e _o_f _t_h_e _p_a_r_a_m_e_t_e_r_s _m_u_s_t _c_o_r_r_e_s_p_o_n_d _t_o _t_h_e _p_r_o_t_o_c_o_l _r_e_q_u_e_s_t_e_d _b_y _t_h_e _e_v_e_n_t _f_o_r _t_h_e _r_e_q_u_e_s_t _t_o _b_e _h_o_n_o_r_e_d _b_y _x_m_h_. _<_p_> _<_/_d_l_> _<_h_3 _i_d_=_"_C_U_S_T_O_M_I_Z_A_T_I_O_N _U_S_I_N_G _M_H"> CUSTOMIZATION USING _M_H The initial text displayed in a composition window is generated by executing the corresponding _M_H command; i.e. _c_o_m_p, _r_e_p_l, or _f_o_r_w, and therefore message components may be customized as specified for those commands. _c_o_m_p is executed only once per invocation of _x_m_h and the message template is re-used for every successive new composition.

_x_m_h uses _M_H commands, including _i_n_c, _m_s_g_c_h_k, _c_o_m_p, _s_e_n_d, _r_e_p_l, _f_o_r_w, _r_e_f_i_l_e, _r_m_m, _p_i_c_k, _p_a_c_k, _s_o_r_t, and _s_c_a_n. Some flags for these commands can be specified in the _M_H profile; _x_m_h may override them. The application resource ddeebbuugg can be set to true to see how _x_m_h uses _M_H commands.

ENVIRONMENT


HOME - users's home directory
MH - to get the location of the _M_H profile file

FILES

~/.mh_profile - _M_H profile, used if the MH environment variable is not set
~/Mail - directory of folders, used if the _M_H profile cannot be found
~/.xmhcheck - optional, for multiple mail drops in cooperation with _s_l_o_c_a_l.
/usr/local/mh6 - _M_H commands, as a last resort, see mmhhPPaatthh.
~/Mail//.xmhcache - _s_c_a_n output in each folder
~/Mail//.mh_sequences - sequence definitions, in each folder
/tmp - temporary files, see tteemmppDDiirr.

SEE ALSO

X(7), xrdb(1), X Toolkit Intrinsics, Athena Widget Set, mh(1), enscript(1)
At least one book has been published about _M_H and _x_m_h.

BUGS

- When the user closes a window, all windows which are transient for that window should also be closed by _x_m_h.
- When XXmmhhUUsseeAAssCCoommppoossiittiioonn and XXmmhhVViieewwUUsseeAAssCCoommppoossiittiioonn operate on messages in the DDrraaffttssFFoollddeerr, _x_m_h disallows editing of the composition if the same message is also being viewed in another window.
- Occasionally after committing changes, the table of contents will appear to be completely blank when there are actually messages present. When this happens, refreshing the display, or typing Control-L in the table of contents, will often cause the correct listing to appear. If this doesn't work, force a rescan of the folder.
- Should recognize and use the ``unseen'' message-sequence.
- Should determine by itself if the user hasn't used _M_H before, and offer to create the .mh_profile, instead of hanging on inc.
- A few commands are missing (rename folder, resend message).
- WM_DELETE_WINDOW protocol doesn't work right when requesting deletion of the first toc and view, while trying to keep other _x_m_h windows around.
- Doesn't support annotations when replying to messages.
- Doesn't allow folders to be shared without write permission.
- Doesn't recognize private sequences.
- _M_H will report that the _._m_h___s_e_q_u_e_n_c_e_s file is poorly formatted if any sequence definition in a particular folder contains more than _B_U_F_S_I_Z characters. _x_m_h tries to capture these messages and display them when they occur, but it cannot correct the problem.
- Should save a temporary checkpoint file rather than requiring changes to be committed in the non-shutdown case.

AUTHOR

Terry Weissman, formerly of Digital Western Research Laboratory
Donna Converse, MIT X Consortium