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.
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.
send exmh {Exmh_Status "Hello, world!"}
In addition, if there are any hosts explicitly lists, you must explicitly remove them:
xhost -localhost
There is a Background Processing preferences setting to clear out your xhost list automatically. You need to restart exmh for this setting to take effect.
The general picture of whats going on is this:
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 in the software page.
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.
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.
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 ;-)
(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
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
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
This is a related problem. Tk send is not working so the background process cannot hook up with the user interface. See FAQ #4
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
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.
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
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. exmh-announce@parc.xerox.com - subscribe to this to receive announcements about new exmh releases. Send a message to exmh-announce-request@parc.xerox.com with the word Subscribe in the subject or body to be added to the list. Say "unsubscribe" to be removed from the list. exmh-users@parc.xerox.com - subscribe to this to join a discussion of exmh. This list also gets announcement messages. Subscribe by sending a message to exmh-users-request. exmh-workers@parc.xerox.com - subscribe to this to join a discussion among hackers that are interested in programming new stuff for exmh. 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.
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 occurrences 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-----------------
<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.
This is a feature of the scan and inc MH programs. They take a macro file that describes how to generate this display. The default is buried in your MH lib directory as scan.form, or scan.default
Here is what I have for the default:
%; NOTE: This file is supplied for reference only; it shows the
default
%; format string (for non-UK sites) which was compiled into "scan".
%; See the source file "h/scansbr.h" for details.
%4(msg)%<(cur)+%| %>%<{replied}-%?{encrypted}E%| %>\
%02(mon{date})/%02(mday{date})%<{date} %|*%>\ %<(mymbox{from})%<{to}To:%14(friendly{to})%>%>%<(zero)%17(friendly{from})%>
\ %{subject}%<{body}<<%{body}>>%>
Copy this into ~/Mail/scan.form Add scan: -form scan.form inc: -form scan.form to your .mh_profile
NOTE: Exmh depends on the output of the scan form to have the message number come first, followed by a character that can be either a space or a plus '+' to mark the current message So - leave this magic at the front (you can change the 4 as noted below)
%4(msg)%<(cur)+%| %>
Now edit the form as described below.
Remove the trailing "%<{body}<<%{body}>>%>" from the scan.form
Change the leading "%4(msg)" to "%5(msg)" (or %6 to allow > 99999
MH provides an annotation facility that will cause new message headers to be added to a message when you reply to or forward the message. In addition, the default scan.form adds a dash (-) to the scan listing for annotated messages so you can see their status in the folder table of contents.
To get annotations you must add to your .mh_profile.
repl: -annotate
If you have other profile options for repl, just add -annotate. Note: it won't work to abbreviate it as -anno.
Did you know you can colorize rfc822 headers in the message display by setting *m_tagnames and related X resources? This feature has been around for some time, but seems to be little-known. Here's what I have in my ~/.exmh-defaults-color file.
*m_tagnames: hidden subject from x-filters-matched content-type
x-mailer repl ied replied-to
m_tagnames lists headers that have display resources associated with them. There are two special ones, "hidden" applies to the headers that are scrolled off the top of the display. "general" applies to the ones that are visible by default. The rest are just literal names of headers.
The display resources are anything that is valid for the Tk text widget tag facility. The most useful ones are font and foreground, but you can check out the Tk text widget man page for all the possibilities. Here is what I use:
*m_hidden: -font 6x10
*m_subject: -foreground blue
*m_x-filters-matched: -foreground "medium sea green"
*m_content-type: -foreground "medium sea green"
*m_x-mailer: -foreground "medium sea green"
*m_from: -foreground blue
*m_replied: -foreground "violet red"
Create a file called .signature in your home directory. Then when you hit the Sign button, sedit will add the contents of that file to the end of your message. To create multiple messages, just create multiple files with .signature as a prefix (for example, .signature and .signature.rant). Then the Sign button becomes a Sign... menu.
Another trick is to create an executable program that doesn't take any arguments and outputs text. If you call this program .signature.something, sedit will append the output of the program to the end of your message when you choose that signature file.