1
0
mirror of https://github.com/ssb22/config.git synced 2023-06-13 17:50:48 +00:00
config/.muttrc

247 lines
13 KiB
Plaintext

# .muttrc settings for large-print terminals
# (i.e. not many rows and columns available)
# (C) Silas S. Brown 2007,2009-2013,2016,2020-23, v1.5.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Where to find history:
# on GitHub at https://github.com/ssb22/config
# and on GitLab at https://gitlab.com/ssb22/config
# and on BitBucket https://bitbucket.org/ssb22/config
# and at https://gitlab.developers.cam.ac.uk/ssb22/config
# and in China: https://gitee.com/ssb22/config
# avoid index taking up too much space when reading the message underneath:
set pager_index_lines = 5 ;
# (mutt default is 0, but some packages increase that quite a lot, so let's set it low)
# try to format messages nicely to the screen width
# - have to do this in a roundabout way because mutt doesn't pass arguments to formatter
# (and be careful not to write anything about the CURRENT terminal
# to the .fmt-command file, as there may be other instances of
# mutt, including batch-run instances with no terminals that
# get restarted after this one starts)
set display_filter = `echo $(if test -e ~/.message-formatter; then echo $HOME/.message-formatter; else echo fmt -w; fi) "\$(if test a\$COLUMNS = a;then stty -F /dev/stderr size|sed -e 's/.* //'; else echo \$COLUMNS; fi)" > ~/.fmt-command; chmod +x ~/.fmt-command ; echo $HOME/.fmt-command`;
# BSD (including Mac) needs -f instead of -F in that stty
# (can't take the default of stdin, as it's the message)
# ATTENTION OLD MUTT USERS: In old versions of mutt, you must
# set charset to us-ascii to stop any unusual characters from playing havoc
# with the terminal (change this if your terminal definitely supports charsets)
#set charset = 'us-ascii' ;
# but in never versions (1.5.20+) you don't need this (it'll be taken from LC_ALL)
# and it's adviseable to set a charset like utf-8 because when (v)iewing and (s)aving
# parts of a message it is now run through iconv!
# (if the incoming message has a broken charset then edit the MIME headers and set it to
# something nonsensical before saving; can then get the actual bytes and figure them out in Wenlin or whatever)
set charset = 'utf-8' ;
# and make sure iconv etc recognises the whole of GB18030
# when it's labelled as GB2312 or GBK
charset-hook GB2312 GB18030;
charset-hook GBK GB18030;
set ascii_chars = 'yes';
# (see near end of this file for a way of viewing messages in any charset whether
# the terminal supports it or not)
# Note: in order to prevent autoview stuff from possibly messing up the terminal,
# you may have to set LC_ALL=C before invoking mutt.
# If you do not have charset set to utf-8:
# When sending messages, you can press Control-T to edit the content type
# and set a charset; save the file in the right charset and DON'T ask mutt to
# convert, because it might have the wrong idea about what it's converting FROM.
# (If using jed or jmacs for mutt then you might want to press
# Control-x i to insert a file that you've saved in something else)
# When sending utf-8 (or other charset) SUBJECT lines, you can press
# :set charset="utf-8"; just before pressing Y to send the message.
# Then :set charset="us-ascii"; after. If you have a patched version
# of mutt then you might try the file_charset option instead.
# Temporarily changing the charset can also be used before replying to
# a message to get the utf-8 chars in the body (but not the subject, unless
# you copy it back in from a browser).
# Be very brief when displaying headers (unless press h to see all)
# (but make sure to include BCC, useful for Copyself viewing,
# and make sure to include Reply-To, for LinkedIn invitations etc)
ignore *;
unignore from date reply-to to cc bcc subject importance;
unhdr_order *;
hdr_order From Date: From: Reply-To: To: Cc: Bcc: Subject: Importance:;
# Briefer index formats etc:
set index_format = "%Z %-15.15L %-25.25s %{%b %d} (%c)" ;
set status_format = "%r %f [#=%?M?%M/?%m%?n? new=%n?%?o? old=%o?%?d? del=%d?%?F? flag=%F?%?t? tag=%t?%?p? post=%p?%?b? inc=%b?%?l? %l?] (%s/%S) %> (%P)" ;
set folder_format = "%t %N %f";
# Other brevity:
set confirmappend = "no";
# - don't need Y/N after entered a folder to save to
set confirmcreate = "yes";
# - but probably DO want this (catch typing mistakes)
set help = "no";
# - saves a line at the top
set save_empty = "no";
set delete = "yes";
# - automatically delete messages marked for deletion when leaving folder
# (alternative is to lose the deletion marks, so might as well)
# But disable the unconfirmed quit key!
# especially as may be hastily trying to Undelete
bind index Q noop
bind pager Q noop
# Similarly it might help to disable the unconfirmed forget-status-and-quit
bind index x noop
bind pager x noop
set edit_headers = 'yes';
set autoedit = 'yes';
# fast_reply is not effective if autoedit, but if above 2 are turned off then this may be useful:
set fast_reply = 'yes';
# Choose an editor that's likely to be OK on small terminals
# emacs could be too heavyweight (unless there's a server that gnuclient can attach to)
# NB jmacs cannot be configured to 'always wrap to screen width' (at least not on the installation I used) so we tell it where to wrap on the command line.
# Don't write anything about current terminal in ~/.e (see display_filter comment above)
# Also, try to change Message-ID: (if present), since some IMAP servers (e.g. GMail 2021-12) don't accept anything other than additions/deletions of parts (not alterations of them) if Message-ID is present and unchanged
# (the second sed has roundabout syntax for GNU+BSD compatibility)
set editor = `echo "if test a\$COLUMNS = a;then export COLUMNS=\$(stty size|sed -e 's/.* //');fi;\$(echo $(which jmacs&&echo echo -rmargin \$COLUMNS||which jed||which emacs||which xemacs)) \$@&&rm \$@~ 2>/dev/null&&sed -i '' -e 's/^Message-I[Dd]: </&1/' \$@ 2>/dev/null||true">~/.e;chmod +x ~/.e;echo $HOME/.e`;
set rfc2047_parameters = "yes";
# - helps decode broken attachments
# simple_search defaults to looking in From and Subject. More useful if also looks in To (if using copyself folder as an extra address book)
set simple_search = "~f %s | ~t %s | ~s %s";
# Colours:
color hdrdefault brightgreen black;
color header brightcyan black "^Subject";
color header brightred black "^Importance: High";
color bold brightcyan black;
color search brightwhite magenta;
color attachment brightyellow blue;
# color normal brightwhite black;
# color body brightyellow black ".";
# don't have the above 2 lines - the "body" regexp overrides quoting
# do this instead:
color normal brightyellow black;
# and the quoting:
color quoted brightgreen black;
color quoted1 brightmagenta black;
color quoted2 brightblue black;
color quoted3 brightred black;
color quoted4 magenta black;
color quoted5 blue black;
color quoted6 red black;
color signature green black;
color error brightwhite red;
color status brightwhite blue;
# note: with the following index colours, earlier is overridden by later
# (so e.g. deleted messages should go last if you want them to always be coloured
# as deleted messages regardless of what other categories they fall into)
# messages from self:
color index brightwhite black "~P";
# deleted messages:
color index magenta black '~D';
# ------------------------------------------------
# Options for handling HTML mail (this needs customising).
# Uncomment 2 lines below to view HTML etc using mailcap
# filters if possible:
#auto_view text/html;
#set implicit_autoview = 'yes';
# You might need to write a ~/.mailcap file
# (or /etc/mailcap if you have system-level access).
# If you're using imapfix to ensure all mail is UTF-8
# (and your terminal handles UTF-8), this should suffice:
# text/html; lynx -assume-charset=utf-8 -display-charset=utf-8 -dump -force_html %s; copiousoutput; description=HTML; nametemplate=%s.html
# BUT if you're on a Mac, there's a bug in one of the Mac's
# character-set handling libraries used by MacPorts/HomeBrew lynx
# (in at least OS X 10.7 through macOS 13, and possibly other
# versions, but not in FreeBSD), that results in lynx deleting
# any UTF-8 byte 0x85 or 0xA0 if immediately followed by
# whitespace etc. The following workaround adds u+200b after,
# which fixes it on earlier macOS but not on macOS 13:
# text/html; sh -c "LC_ALL=C sed -Ee $'s/(\\x85|\\xa0)([^\\x80-\\xff]|$)/\\\\\\\\1\\xe2\\x80\\x8b\\\\\\\\2/g' < %s | lynx -stdin -assume-charset=utf-8 -display-charset=utf-8 -dump -force_html"; copiousoutput; description=HTML; nametemplate=%s.html
# You could also try w3m, which is more likely to silently drop the
# affected characters on macOS 10.13, but at least shows the rest of
# the message rather than stopping with an error:
# text/html; w3m -s -I utf-8 -O utf-8 -T text/html -dump; copiousoutput; description=HTML; nametemplate=%s.html
# Older version for non-imapfix, client-side, charset conversion:
# text/html; ~/mutt/lynx.sh %{charset} %s; copiousoutput; description=HTML; nametemplate=%s.html
# and a ~/mutt/lynx.sh like:
# #!/bin/bash
# L=$(echo "$1"|sed -e s/18030/2312/) # lynx won't recognise "GB18030" labels
# exec lynx -assume-charset="$L" -display-charset="$L" -dump -force_html "$2" | iconv -f $(echo "$L"|sed -e s/2312/18030/ -e s/ISO8859_1/ISO-8859-1/ -e s/ks_*c_*5601-*1*9*8*7*/ksc5636/) -t //TRANSLIT
# (lynx not w3m because some w3m versions stop rendering
# pages that contain very bad HTML part-way through, e.g.
# META tags in the middle of the BODY)
# Also we can have the option to view HTML (and other
# items) in a graphical browser when needed:
# "Print" (send to lpr) is not very useful if larger type is needed
# so let's set that command to send the message to MHonArc for
# HTML formatting for the browser.
set print = 'yes';
set print_decode = 'no';
set print_split = 'no';
set wait_key = 'yes';
# Uncomment one of these:
# Option 1: run Firefox locally if X display is present, else print URL using hostname
#set print_command='cd $(mktemp -d ~/public_html/mailXXX);mhonarc -;echo;if [ a$DISPLAY = a -o ! -e /usr/bin/firefox ];then echo http://$(hostname -f)/~$(whoami)/$(pwd|sed -e "s-.*/--")/maillist.html; else firefox file://$(pwd)/maillist.html;fi;echo When done: rm -r $(pwd)';
# If you've installed MHonarc on a Mac, you might prefer:
# set wait_key = 'no';
# set print_command="cd $(mktemp -d /tmp/mailXXX);sed -e $'s/\\f/From \\\\n/'|LANG=C mhonarc - >/dev/null 2>/dev/null;open maillist.html";
# Option 2: as above but if WEB environment variable is present it overrides hostname
#set print_command="cd $(mktemp -d ~/public_html/mailXXX);sed -e $'s/\\f/From \\\\n/'|LANG=C mhonarc -;[ a\$WEB = a ]&&WEB=$(hostname -f);echo;echo http://\$WEB/~$(whoami)/$(pwd|sed -e 's-.*/--')/maillist.html;echo Then rm -r $(pwd)";
# Note: the above CANNOT be made much longer, because some versions of mutt will truncate it. (And that happens after expansion of environment variables, hence escaping some of those $'s. Some versions of mktemp won't accept fewer than 3 X characters.)
# Option 3: as above but WEB is compulsory, must be a user-specific subdomain and must also accept SSH logins (use .ssh/config if necessary). For running mutt remotely on a server that is not itself a web server but has SSH access to one.
#set print_command="cd \$(mktemp -d);chmod 700 .;sed -e $'s/\\f/From \\\\n/'|LANG=C mhonarc -;echo;echo -n http://\$WEB/;tar -c .|ssh \$WEB 'cd \$(mktemp -d ~/public_html/mailXXX)&&tar -x;chmod a+rx * .;pwd|sed -e s,.*/,,'";
# If you need to do more then make a separate script and call that.
# NB if your MHonarc mangles UTF-8 messages, you might have to export M2H_RCFILE to a file containing
# the contents of http://www.mhonarc.org/MHonArc/doc/rcfileexs/utf-8-encode.mrc.html
# ------------------------------------------------
set sort=reverse-date-sent;
# (old versions of mutt do that anyway, some new versions default to forward-sort of date, let's make it consistent)
# You might want to uncomment the following if using Exim:
# to prevent Bcc from being exposed by Mutt+Exim, set -t option, and ignore the addresses on the command line
# but we can't use bash -c 'sendmail -t #' because mutt won't parse these quotes
# This must be single quoted not double quoted or mutt will try to expand $IFS itself and go wrong:
#set sendmail='/bin/bash -c $1$IFS$2$IFS$3$IFS$4 bash /usr/sbin/sendmail -oem -oi -t'
# and when using the -t option, Bounce won't work, so unbind it:
#bind index b noop
#bind pager b noop
# and make sure write_bcc is still yes:
#set write_bcc='yes';
# Alternatively, you may comment out the above and
# compile msmtp in your home directory:
# set sendmail=$HOME/msmtp/bin/msmtp
# or with a recent-enough version of mutt, just use --enable-smtp