Frequently Asked Questions about EXMH

1. Is it possible to get the cursor keys working in the editor?
1b. Can I paste with the middle mouse button?
2. How do I display ISO-8859 fonts so that my special characters show up?
2b. How do I insert special 8-bit characters (latin-1)
3. I can't get background incorporate to work. What am I doing wrong?
4a. How do I get Tk send to work?
4b. How do I start my X server so it does Xauthority right?
5. Where do I find Faces and Metamail packages?
6. How do you get an X-Face: line into your outgoing mail messages?
6b. How do you display an X-Face: header line?
7. Can I use EXMH as a news reader?
8. How do I change those default wheat-colors for the widgets in EXMH?
9. What's the difference between presort and multidrop inc-styles?
10. How do I fix the "exmh-bg lost UI {process XXXX}" message?
10b. What does "exmh-bg cannot rendez-vous with UI - exiting" mean?
11. How come messages are not really removed when I delete them?
12. Why doesn't the flag go up when there is new mail in the spool file?
13. Why isn't there a Reply button, but only a reply menu?
14. Are there newsgroups or mailing lists for discussion of exmh?
15. How do I set up the templates for mail messages?
16. How do I get a copy of mail I sent saved into a folder (easily)?
17. What is a good alternate Print command to get good formatting?
-------------------------------------------------------------------------

1. Is it possible to get the cursor keys working in the editor?

    Use the Bind dialog to set additional keystroke bindings for various
    editing functions.  For cursor keys, you first need to figure out
    what their X Keysyms are.  I use the "xev" program for this.  Assuming
    the keysyms are Up, Down, Left, and Right, then you'd add
    <Key-Up> to the up1line function, etc.  The Bind dialog lets you
    have multiple sequences for a function - just space separate them.
    You may have to drag the entry widget with the middle mouse button
    to make room to add stuff to the end.

1b. Can I paste with the middle mouse button?

    This is now the default after versions 1.5.1

    Answer for older versions:
    Select Simple Edit from the Bindings menu and do two things.
    First, use the "Scroll Button" setting to change the drag scrolling
    binding from Middle to one of the other choices:
    ShiftMiddle, Right, or None.  This binding lets you "drag" a text
    window around without having to hit the scrollbar.

    Second, change  the selpaste binding to <Button-2> so you can paste
    with middle click.

2. How do I display ISO-8859 fonts so that my special characters show up?

    Put an Xresource specification into your ~/.exmh-defaults file:
    *Text*font: -*-courier-*-*-*-*-*-*-*-*-*-*-iso8859-*
    *Ftoc*Text*font: -*-courier-*-*-*-*-10-*-*-*-*-*-iso8859-*

2b. How do I insert special (8-bit) characters?

    There are many Compose key sequences that are defined to let you
    do this.  Your X environment may also specially map some keys.
    For a list of the Compose key sequences, select the
    Compose Key menu entry under Bindings.  Press the Compose key
    and then the two characters in the left list in order to
    get the special character on the right hand side.  You can redefine
    what the Compose key is mapped to in the Simple Edit Bindings... dialog.

3. I can't get background incorporate to work. What am I doing wrong?

    The most likely cause is that the TK send facility does not work for you
    because of Xauthority issues.  See FAQ 4a & 4b.  If you cannot get send
    working, you have two options.  First, disable the background process
    so that all periodic activity is done in the front-end.  Do this via
    the preferences entry for Background Processing.

    Another cause that might disable inc completely is lack of the MAILDROP
    environment variable.  This should be set to the name of the spool
    file that contains incoming mail (unless you are using POP).  The
    latest Exmh will warn you about this and try to choose a default
    value, but to be safe you should set this up properly.

4a. How do I get Tk send to work?

    Tk "send" lets two TCL interpreters issue commands to each other,
    and it uses the X server for communication.  Beginning with
    TK 3.3, this also honors the Xauthority protocol, unless you compile
    TK with -DTK_NO_SECURITY.  You can test this by running "wish" and
    trying out the following command:
	    send exmh {Exmh_Status "Hello, world!"}
    If this fails you need to recompile or learn how
    to start your X server so that it does Xauthority right.

    Note that even if you set up Xauthority right, you need to
    make sure the old-fashioned xhost list is empty.  Do this:
    xhost -

4b. How do I start my X server so it does Xauthority right?

    The general picture of whats going on is this:
    1) some program generates a magic cookie (arbitrary string) and writes
    this to a file.
    2) The name of this file (often ~/.Xauthority) is passed to the X server
    3) The X server writes an entry for the DISPLAY into your ~/.Xauthority
    file.
    4) Xlib reads ~/.Xauthority when you create a window, and passes the
    cookie value back to the X server.
    
    The specific details vary from server to server.
    Keven Kenny offers this Web page with details about Ultrix,
    X servers, X session managers, etc:

    http://ce-toolkit.crd.ge.com/tkxauth/

    For SunOS and openwin, you should just be able to start up with:

    openwin -auth magic-cookie

    Another person had luck with:

    BTW, the Xauthority stuff seems to work now. All I did was declare
    and export XAUTHORITY from my .profile. I had't done it before since
    the value ($HOME/.Xauthority) is supposed to be the default. We're
    using XDM.


    In more detail, here is what happens under the covers...

    if [ ! \( -d $HOME -a -w $HOME \) ]; then
      echo "Warning: Can't write X authority file" 1>&2 ;
      auth_args=""
    else
      authfname=$HOME/.xnews.`uname -n`$DISPLAY
      ${OPENWINHOME}/lib/mkcookie $authfname -auth magic-cookie
      auth_args="-auth $authfname"
    fi ;
    ${OPENWINHOME}/bin/xnews $auth_args $server_args $xnews_config_args ;;
    
    There is a more lengthy example given in the misc/Xauthority file
    that comes with the exmh distribution.

5. Where do I find Faces and Metamail packages?

    There are pointers to these packages at the end of the man page.

6. How do you get an X-Face: line into your outgoing mail messages?

    The compface program that is part of the faces package will generate
    the X-Face hex string for you.  Check its man page for details.
    If you have a 48x48 X bitmap image in X bitmap .xbm format,
    then you can convert that into an ikon format using some programs
    from the pbmplus package.  The pipeline looks like

    xbmsize48 | xbm2ikon | compface

    If you put an X-Face header in your replcomps file (see FAQ #15)
    then you need to double any % and \ in the X-Face string.  For example,
    abc%def\efg  needs to be written as abc%%def\\xyz in the
    X-Face header of your replcomps files.


6b. How do you display an X-Face: header line?

    Under the Faces preferences, set the X-Face pipeline to be similar to:
    uncompface | ikon2xbm
    (You might need absolute pathnames if these programs are not
    otherwise on your PATH).
    uncompface comes with the faces package.
    ikon2xbm comes with exmh as misc/ikon2xbm.c
    Just compile it with
    cc -o ikon2xbm ikon2xbm.c

    Note, this is slower than I'd like, plus the results are not saved
    anywhere.  The intended use of the X-Face header was that the mail
    agent would update the facesaver database in the background using it.

7. Can I use EXMH as a news reader?

    Well, it actually works ok, but there are various things that would
    make it better at reading news.  To get started, just make a symbolic
    link from your ~/Mail directory into the news spool file system.
    This requires access (e.g., NFS) to the news spool file system, of course.
    You can do it for a single newsgroup, i.e. clari.feature.dilbert.
    My symlink looks like:
    Mail/dilbert -> /net/news/news-1/news/spool/clari/feature/dilbert
    Or, you can link into the interior of the news hierarchy.
    You might run into a problem from the MH folders command that
    limits it to about 300 folders.  Change the NFOLDERS constant in MH
    src/h/mh.h from 300 to 30,000 and you shouldn't have any more trouble ;-)

8. How do I change those default wheat-colors for the widgets in EXMH?

    (See also exmh.COLORS for more color schemes...)
    Here is a set of Xresources that I use to get a grey-family for
    my TK-based applications.  You can put this into your
    ~/.exmh-defaults, or into your ~/.Xdefaults.  This works ok
    on a monochrome screen, although buttons do not highlight
    when you pass the mouse over them.

*activeBackground:			#efefef
*activeForeground:			black
*selector:				black
*background:				#dfdfdf
*foreground:				black
*selectBackground:			#bfdfff
*Scale.activeForeground:		#efefef
*Scale.sliderForeground:		#dfdfdf
*Scrollbar.foreground:			#dfdfdf
*Scrollbar.activeForeground:		#efefef
*Button.disabledForeground:		#7f7f7f
*Checkbutton.disabledForeground:	#7f7f7f
*Radiobutton.disabledForeground:	#7f7f7f
*Menu.disabledForeground:		#7f7f7f

9. What's the difference between presort and multidrop inc-styles?

    The main difference between presort and multidrop is: with
    presort, you don't need a ~/.forward that pipes your messages to slocal
    because exmh will run slocal for you.  The second difference is that
    the presort scheme assumes that messages are completely routed into
    folders, either with the + syntax (slocal patch required) or by
    piping messages through rcvstore in the .maildelivery specification.
    The multidrop scheme assumes you append messages to dropbox files
    with the '>' or 'file' command in your .maildelivery file.

    Thus your options are:
    1. use slocal in your .forward, 
       pipe your messages to rcvstore in .maildelivery,
       and have exmh do background flist updates.
    2. use slocal in your .forward, 
       append messages to files in .maildelivery,
       specify files to folders mapping in .xmhcheck, 
       and have exmh do background multidrop.
    3. empty .forward, 
       pipe your messages to rcvstore in your .maildelivery, 
       and have exmh do background presort.
    4. Note that the following DOES NOT WORK
       empty .forward,
       append messages to files in .maildelivery,
       specify file to folder mapping in .xmhcheck, 
       and have exmh do background presort.
       WON'T WORK

10. How do I fix the "exmh-bg lost UI {process XXXX}" message?

    First - see FAQ # 4 about Tk send and Xauthority.
    is most like a problem with the Tk send command.

    Second - if Tk send works for you, then perhaps it is a problem with
    the ps command setting for exmh(psCmd).  This is set up when
    exmh is installed and is used to query the existence of other
    processes.  On Berkeley-style systems you can just do
    /bin/ps $pid
    While on SysV-style systems you need the -p flag
    /bin/ps -p $pid

10b. What does "exmh-bg cannot rendez-vous with UI - exiting" mean?
    This is a related problem.  Tk send is not working so the
    background process cannot hook up with the user interface.
    See FAQ #4

11. How come messages are not really removed when I delete them?

    By default, MH only renames a message when you delete it.  It is either
    named ,N or #N, depending on how your system is configured.  You can
    take a few different approaches to cleaning up these files.
    1) Set up a cron job to periodically remove them.
    2) Remove them by hand, or add a Purge menu entry to do it.
    3) In your ~/.mh_profile, add a line like:
	rmmproc: /bin/rm
	This causes the MH rmm command to invoke /bin/rm to nuke the message

12. Why doesn't the flag go up when there is new mail in the spool file?

    The appearance of the exmh icon relates to the contents of your
    mail folders, not your spool file.  This reflects a bias towards
    background inc'ing, which periodically transfers (and maybe sorts)
    mail into your folders.  Check out flag.tcl for the details.

13. Why isn't there a Reply button, but only a menu?

    There are really lots of variations on reply, that's why.
    You should pick your favorite one and define a personal button
    for it so that *you* get what *you* want. You can define a repl
    button by putting these resources into your ~/.exmh-defaults file

    *Mops.ubuttonlist: myrepl
    *Mops.myrepl.text: Repl
    *Mops.myrepl.command: Msg_Reply {any valid repl arguments here}

    See the MH man page on repl for more details.  Common flags include
    -cc me -nocc me -cc all -nocc all -filter form

14. Are there newsgroups or mailing lists for discussion of exmh?

    There are three mailing lists, and an archive.

    First, and **this is important**, send subscription requests to the
    corresponding -request address, not the main lists.  Please.

    Second, subscribe to only one of the lists.  They are connected,
    so you will get duplicate mail if you join more than one.

    exmh-announce@parc.xerox.com - subscribe to this to receive announcements
	about new exmh releases.  To join, send a message to:
    exmh-announce-request@parc.xerox.com
	The body should have this format, exactly:
	subscribe exmh-announce you@your.host

    exmh-users@parc.xerox.com - subscribe to this to join a discussion of
	exmh.  This list also gets announcement messages.
	To join, send a message to:
    exmh-users-request@parc.xerox.com
	The body should have this format, exactly:
	subscribe exmh-users you@your.host

    exmh-workers@parc.xerox.com - subscribe to this to join a discussion
	among hackers that are interested in programming new stuff for exmh.
	This gets all the exmh-user and exmh-announce traffic.
	To join, send a message to:
    exmh-workers-request@parc.xerox.com
	The body should have this format, exactly:
	subscribe exmh-workers you@your.host

    The comp.mail.mh newsgroup has more information about basic MH stuff.

    The directory, parcftp.xerox.com:/pub/exmh/archive has some of the
    list messages archived.  These are files created with the packf
    program, and they are compressed.

15. How do I set up the templates for mail messages.

    MH uses 4 template files depending on the operation.  Default versions
    of the files are in the MH library directory.  Copy these defaults
    into your ~/Mail directory so you can customize them.  The files are:

    components - used when you send a new message.  Put the headers and
	any text you want in your message.  Remember to leave either a blank
	line between the headers and the body, or a line of all dashes.

    replcomps - used when you reply to a message.  This file is complex
	because it contains directives that indicate how to fill in the headers
	based on the content of the mail you are replying to.  See the repl
	man page for details.  If you want to put literal values in the headers,
	you have to double any occurences of % or \ because these are special
	characters in the formatting commands.  If you want plain text in the
	body, you have to begin these lines with a colon.  Otherwise the
	lines after the header are discarded.  The same rules about separating
	the headers and the body apply.  If you want to add comments to the
	template, start the line with a semi-colon.

    reply filters - the -filter argument to repl specifies a filter that
	inserts and formats the body of the message to which you are replying.
	See the repl man page for details.

    forwcomps -- used when forwarding a message.  This is more like the
	components file than the replcomps file.

    forward filters -- these control what headers are retained in the
	forwarded messages, and how those messages are forwarded.

    ---------cut here for sample components file-----------
To: 
Subject: 
Fcc: outbox
Cc: 
X-Face: "HxE|?EnC9fVMV8f70H83&{fgLE.|FZ^$>@Q(yb#N,Eh~N]e&]=>r5~UnRml1:4EglY{9B+
 :'wJq$@c_C!l8@<$t,{YUr4K,QJGHSvS~U]H`<+L*x?eGzSk>XH\W:AK\j?@?c1o<k;j'Ei/UL)!*0
 ILwSR)J\bc)gjz!rrGQ2#i*f:M:ydhK}jp4dWQW?;0{,#iWrCV$4~%e/3)$1/D


----------------------------------
	Brent Welch	Xerox-PARC
    ------------end sample components file-----------------

    ---------cut here for replcomps - compare X-Face-Header differences------
%(lit)%(formataddr %<{reply-to}%|%<{from}%|%{sender}%>%>)\
%<(nonnull)%(void(width))%(putaddr To: )\n%>\
%(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\
%<(nonnull)%(void(width))%(putaddr cc: )\n%>\
%<{subject}Subject: Re: %{subject}\n%>\
%<{date}In-reply-to: %<(mbox{from})%(mbox{from})%|%(friendly{from})%>\
's message of \
%<(nodate{date})%{date}%|%(tws{date})%>.%<{message-id}
	     %{message-id}%>\n%>\
X-Face: "HxE|?EnC9fVMV8f70H83&{fgLE.|FZ^$>@Q(yb#N,Eh~N]e&]=>r5~UnRml1:4EglY{9B+
 :'wJq$@c_C!l8@<$t,{YUr4K,QJGHSvS~U]H`<+L*x?eGzSk>XH\\W:AK\\j?@?c1o<k;j'Ei/UL)!*0
 ILwSR)J\\bc)gjz!rrGQ2#i*f:M:ydhK}jp4dWQW?;0{,#iWrCV$4~%%e/3)$1/D
Fcc: outbox\n

    --------------end sample replcomps file----------------

    --------cut here for sample reply filter---------------
from:nocomponent,formatfield=\
">>>%(friendly{text}) said:" 
body:component="> ",offset=1,overflowoffset=4
:
:---------------------------------
:	Brent Welch	Xerox PARC
    ----------end of sample reply filter-------------------

    ----------cut here for sample forwcomps file-----------
To:
Cc:
Subject:
Fcc: outbox

    ----------end of forwcomps file------------------------

    ----------cut here for sample forward filter-----------
width=80,overflowtext=,overflowoffset=10
leftadjust,compress,compwidth=9
Date:formatfield="%<(nodate{text})%{text}%|%(tws{text})%>"
From:
To:
cc:
Subject:
:
body:nocomponent,overflowoffset=0,noleftadjust,nocompress
    ----------end of sample forward filter-----------------

16. How do I get a copy of mail I sent saved into a folder (easily).

    Use the Fcc: header, which puts a copy of your out-going mail into
    a folder.

    1) add the Fcc: header to the various component files described in FAQ #15.

    2) For replies only, you can also add a "-fcc sent-mail"
    argument to your MH profile entries for repl.

17. What is a good alternate Print command to get good formatting?

    <Ethan Miller says:>
    I use the mp package to print mail (and other files as well).
    Mailp (one of the commands in mp) prints mail nicely.
    My print command is:
    mailp -landscape -twosided -bsdprinter $file

    <Anne Possoz adds:>
    But without metamail piped to mp, in certain circumstances like
    mail coming from MacIntosh (is0-8859, quote-printable) the accents
    do not come right. That is why we use:

    metamail $file | mp -l | lp

    You can get mp at ftp.x.org in contrib/utilities.

