############################################################### # Vincent Lefèvre's configuration file for Mutt (dev version) # ############################################################### # Requires the following patches: # * progress. # * simplesearchkw. ignore * unignore from: to: cc: delivered-to: reply-to: subject: organization: date: unignore user-agent: x-label: x-mailer: x-url: x-greylist: unignore x-spam-checker-version: x-spam-status: x-spam-language: unignore x-mailman-approved-at: x-validation-by: #auto_view text/html alternative_order text/enriched text/plain text/html attachments +A */.* mime_lookup application/octet-stream # Bindings # The following is a workaround to bug 3306: # "bind generic" does not work for keys that have default bindings # As a consequence, specific key bindings must be defined later. # $my_gen may be set back to "generic" once this bug is resolved. # Note: "mix" has been removed as it yields an error. set my_gen=index,alias,query,attach,compose,postpone,browser,pgp,smime #set my_gen=generic # Keypad keys macro $my_gen,pager,editor <1105> 0 macro $my_gen,pager,editor 1 macro $my_gen,pager,editor <1075> 2 macro $my_gen,pager,editor 3 macro $my_gen,pager,editor <1073> 4 macro $my_gen,pager,editor 5 macro $my_gen,pager,editor <1074> 6 macro $my_gen,pager,editor 7 macro $my_gen,pager,editor <1072> 8 macro $my_gen,pager,editor 9 macro $my_gen,pager,editor <1101> / macro $my_gen,pager,editor <1103> * macro $my_gen,pager,editor <1104> - macro $my_gen,pager,editor <1077> + macro $my_gen,pager,editor <1102> . # Unbind break-thread, as # can be hit by mistake too easily, # and there is no possible undo. bind index,pager \# noop bind $my_gen,pager : enter-command bind $my_gen,pager ? help bind $my_gen,pager / search bind $my_gen,pager \e/ search-reverse bind generic,pager n search-next bind generic,pager N search-opposite bind $my_gen,pager x exit bind $my_gen,pager + next-line bind $my_gen,pager - previous-line bind $my_gen,pager J next-entry bind $my_gen,pager next-entry bind $my_gen,pager K previous-entry bind $my_gen,pager previous-entry bind $my_gen,pager ' ' next-page bind $my_gen,pager next-page bind $my_gen,pager b previous-page bind $my_gen,pager previous-page bind $my_gen,pager [ half-up bind $my_gen,pager ] half-down bind $my_gen \CL refresh bind $my_gen < top-page bind $my_gen = middle-page bind $my_gen > bottom-page bind $my_gen ( current-top bind $my_gen * current-middle bind $my_gen \' current-middle bind $my_gen ) current-bottom bind $my_gen j next-entry bind $my_gen next-entry bind $my_gen k previous-entry bind $my_gen previous-entry bind $my_gen ^ first-entry bind $my_gen first-entry bind $my_gen $ last-entry bind $my_gen last-entry bind $my_gen \r select-entry bind $my_gen t tag-entry bind $my_gen \; tag-prefix bind $my_gen ! shell-escape bind $my_gen \ew what-key bind editor history-up bind editor history-down bind editor backward-char bind editor forward-char bind editor delete-char #bind editor \CH backspace #bind editor \C? delete-char bind index,pager V show-version bind index,pager \CS sync-mailbox bind index,pager c change-folder bind index,pager \ec change-folder-readonly bind index,pager A create-alias bind index,pager @ display-address bind index,pager v view-attachments bind index,pager j next-undeleted bind index,pager next-undeleted bind index,pager k previous-undeleted bind index,pager previous-undeleted bind index,pager \e next-unread bind index,pager \e previous-unread bind index,pager \en next-thread bind index,pager "\e[1;5C" next-thread bind index,pager \ep previous-thread bind index,pager "\e[1;5D" previous-thread bind index,pager \eN next-subthread bind index,pager \eP previous-subthread bind index,pager \t next-new bind index,pager \e\t previous-new bind index,pager p parent-message bind index,pager P print-message bind index,pager C copy-message bind index,pager \eC decode-copy bind index,pager s save-message bind index,pager \es decode-save bind index,pager | pipe-message bind index,pager f flag-message bind index,pager d delete-message bind index,pager u undelete-message bind index,pager \ed delete-thread bind index,pager \eu undelete-thread bind index,pager \er read-thread bind index \et tag-thread bind index,pager \eD delete-subthread bind index,pager \eU undelete-subthread bind index,pager \eR read-subthread bind index \eT tag-subthread bind index,pager m mail bind index,pager R recall-message bind index,pager,attach B bounce-message bind index,pager,attach F forward-message bind index,pager,attach r reply bind index,pager,attach g group-reply bind index,pager,attach l list-reply macro index,pager \CB ": set my_pipe_decode=\$pipe_decode pipe_decode\r|urlview\r: set pipe_decode=\$my_pipe_decode; unset my_pipe_decode\r" "call urlview to extract URLs out of a message" macro index,pager a ": set pipe_split=yes\r|$HOME/scripts/addlabels " "add labels" macro index,pager \e\CH ": set pipe_split=yes\r|sa-learn --ham --no-sync" "set message as ham (for sa-learn)" macro index,pager \e\CS ": set pipe_split=yes\r|sa-learn --spam --no-sync" "set message as spam (for sa-learn)" macro index,pager \eS "s=spam" "save to spam folder (for do-sa-learn)" macro index,pager \eb "sed '1 { /^^From /d }' | postmap -b -q - pcre:$HOME/wd/config/host/gandi.joooj/etc/postfix/body_checks.pcre | less\r" "check message against postfix body rules" macro index,pager \eh "sed '1 { /^^From /d }' | postmap -h -q - pcre:$HOME/wd/config/host/gandi.joooj/etc/postfix/header_checks.pcre | less\r" "check message against postfix header rules" bind index,pager,attach,compose h display-toggle-weed bind index \CN next-thread bind index \CP previous-thread bind index % toggle-write bind index L limit bind index \eL show-limit bind index o sort-mailbox bind index O sort-reverse bind index \r display-message bind index N toggle-new bind index \e} search bind index \e{ search-reverse bind index T tag-pattern bind index \CT untag-pattern bind index D delete-pattern bind index U undelete-pattern bind index w set-flag bind index W clear-flag bind index Q query bind index ~ mark-message bind index q quit # Note: For some commands and patterns, a leading space is added so that # the entry is not put in the history. But for patterns, an initial space # is a special character, so that one needs to enter a normal character, # then . macro index / ": set simple_search='~f %s | ~s %s'\r" macro index \\ ": set simple_search='~b %s'\r" macro index \e/ ": set simple_search='~f %s | ~s %s'\r" macro index \e\\ ": set simple_search='~b %s'\r" macro index \ef ": set index_format='%4C %Z %[%F] %-15.15F (%4c) %s'\r\CL" macro index \el ": set index_format='%4C %Z %[%F] %-15.15L (%4c) %s'\r\CL" macro index \ey ": set index_format='%4C %-12.12F %-12.12s %y'\r\CL" macro index \CU "~A\r" "untag all" macro index \e ": toggle narrow_tree\r" macro index \e ": toggle ascii_chars\r\CL" macro index y "~y\"( |\\\\\\\`)( |\\\\\\\')\"" "limit to some label" macro index \CA "~ ~A\r" "limit to all" macro index G "!gm\r" "fetch mail" #macro index S "!syncmail joooj\r" "sync mail" bind pager \r next-line bind pager ^ top bind pager < top bind pager top bind pager $ bottom bind pager > bottom bind pager bottom bind pager S skip-quoted bind pager T toggle-quoted bind pager t tag-message bind pager \CN mark-as-new bind pager \\ search-toggle bind pager q exit bind pager Q quit bind attach,compose \r view-attach bind compose q exit bind compose i ispell bind compose s send-message bind compose p postpone-message bind compose | pipe-entry bind compose e edit-message bind compose f edit-fcc bind compose H edit-headers bind compose m edit-mime bind compose B edit-bcc bind compose C edit-cc bind compose F edit-from bind compose R edit-reply-to bind compose S edit-subject bind compose T edit-to bind compose a attach-file bind compose d detach-file bind compose \CD edit-description bind compose \CE edit-encoding bind compose \CF edit-file bind compose \CT edit-type bind compose \CP print-entry bind compose \CS smime-menu bind compose P pgp-menu bind compose \ec copy-file bind compose \er rename-file bind compose \eR toggle-recode bind compose \ed toggle-disposition bind compose \ef filter-entry macro $my_gen,index,pager M "!less $HOME/doc/mutt/manual.txt\r" "Show Mutt documentation" # Variables set arrow_cursor set askcc set attribution="On %{%F %T %z}, %n wrote:" set auto_tag set change_folder_next set check_mbox_size set copy=yes set date_format="!%F %T %Z" set default_hook="~L %s" set delete=ask-yes set edit_headers set editor=$HOME/scripts/mutteditor set envelope_from set nofcc_attach set forward_attribution_intro="----- Forwarded message from %f -----" set forward_attribution_trailer="----- End of forwarded message -----" set nohelp # $hidden_host must be set to "no" so that bounced messages get a correct # FROM address (envelope). Otherwise address rewriting doesn't work (most # login names are local to the machine anyway). set nohidden_host set honor_disposition #set mailcap_path=... set mark_macro_prefix="#" set menu_scroll set message_id_format="<%Y%02m%02d%02H%02M%02S.G%c%p@%f>" set nometoo set mime_forward=ask-no set move=no set pager_index_lines=6 set pager_stop set postponed=~/Mail/postponed #set print_command="iconv -c -t iso-8859-1 | a2ps --encoding=iso1" set print_command="muttprint" set quit=ask-no set record=~/Mail/sent set reply_regexp="^[Rr][Ee]:[ \t]+" set reverse_alias set save_history=10 set sendmail=$HOME/scripts/sendmail-mutt set shell=zsh set signature="iconv -f iso-8859-1 $HOME/.sig|" set nosimple_search_keywords set sort=threads set sort_aux=last-date set spoolfile="=Maildir" set status_format="-%r-Mutt: %f [Msg:%?M?%M/?%m%?n? New:%n?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b? %?L?%L/?%l]---(%s)-%>-(%P)-" set strict_threads set thorough_search set tilde set time_inc=250 # Set $timeout less than $imap_keepalive. See Mutt bug 3507. set timeout=60 set tmpdir=/var/tmp set use_8bitmime set user_agent set nouse_domain set nowait_key set nowrite_bcc # Pretty size settings unset size_show_bytes unset size_show_mb set size_show_fractions unset size_units_on_left # GnuPG # Note: since GPGME is not available or working correctly (see bug 3300) # with every installation of Mutt, the crypt_use_gpgme variable must not # be set here, but in the global Muttrc installed together with Mutt. unset crypt_use_gpgme source ~/share/doc/mutt/samples/gpg.rc # Charset handling # Try codeset first as "locale charmap" outputs "unknown keyword charmap" # with a 0 exit status under Darwin 8.3.0. set charset=`codeset 2> /dev/null || locale charmap`//TRANSLIT set assumed_charset="us-ascii" set attach_charset="us-ascii:utf-8:iso-8859-1" # Color video attributes color attachment lightred black color error brightyellow black color indicator brightred black color markers red black color message lightcyan black color normal lightwhite black color prompt lightcyan black color progress lightwhite red color quoted lightgreen black color signature lightcyan black color status lightyellow magenta color tilde yellow black color tree lightred black color index lightcyan black !~l color index lightgreen black ^~p~P color index lightmagenta black ~sannounce!~s^re: color index lightmagenta black ~s\\(^\\|[^a-z]\\)review color index lightyellow black ~F color index lightyellow red ~Cdebian-security-announce color index lightwhite blue ~l~P color index lightwhite blue ~l~<(~P) color index lightyellow blue ~l~F~P color index lightyellow blue ~l~F~<(~P) color index lightwhite green ~Cmpfr@\\(inria\\|loria\\).fr color index lightyellow green ~F~Cmpfr@\\(inria\\|loria\\).fr color index lightblue yellow ~i@ay>!~P color hdrdefault lightmagenta black color header lightyellow black ^from: color header lightwhite blue ^subject: color header white black ^date: color header lightgreen black ^(to|cc|delivered-to): color header lightcyan black ^(x-mailer|user-agent): color header cyan black ^organization: color header yellow black ^x-label: color body lightyellow black "`sed -n 's/^REGEXP //p' ~/.urlview`" color body lightyellow black [-0-9A-Za-z_%.+]+@[-0-9A-Za-z_.]*[A-Za-z] folder-hook pluto color body lightyellow black ^].* # Mono video attributes mono attachment bold mono status reverse mono hdrdefault none mono header bold ^from: mono header underline ^subject: # Folder-hooks # Warning! In the regexp, an initial ^ character (possibly after "!"), now # means "the current mailbox" at parsing time (which seems to be the empty # string here in the muttrc, thus is ignored), not "beginning of string". # If ^ is needed, enclose the regexp in parentheses. It is advised to do # the same for any prefix character that may be added to _mutt_expand_path # in the future. folder-hook . \ "set index_format='%4C %Z %[%F] %-15.15F %?M?->%4M&(%4c)? %s'" # Disable the following folder-hook for IMAP mailboxes, otherwise the "*" # would be sent as the first character of the password (no workaround?). folder-hook !(^imaps?:) "push " # Ignore the "old" flag with IMAP mailboxes. # Commented out as bug 1262 has been fixed. #folder-hook . "set mark_old" #folder-hook (^imaps?:) "unset mark_old" # Open the oldarc and vfolder mailboxes in read-only mode. folder-hook (^|/)(oldarc|vfolder)$ "set read_only" # Trash mailbox folder-hook . "unset trash" # No longer set trash folder on IMAP/Loria mailbox because virus/spam # messages are saved into it too. #folder-hook (^imaps?://vlefevre@imap\.loria\.fr/INBOX) "set trash='=trash'" # Message-hooks # My default $quote_regexp value was using "^(>[^F]|>F[^r]|>Fr[^o]|>Fro[^m])" # but ">>From " was not regarded as a quoted line. It appears that Mutt has # a special rule for a sequence of ">" followed by "From ". Tests have been # done on different lines and different $quote_regexp values, where Q means # that the line is regarded as quoted: # # ^F ^> ^>. ^>F ^>> ^>[^F] # From . Q - - - - - # >From . - - - - - - # >Frot . - Q Q Q - - # >>From . - Q - - - - # >>>From . - Q Q - Q Q # # For $quote_regexp matching, Mutt behaves as if anything starting # with ">From " were discarded from the line being parsed. Anyway, # this means that by default, just "^>" is necessary. message-hook . \ "set quote_regexp='^(>|[A-Za-z]+> )'" message-hook ~fdavidtg-muttusers@justpickone\.org \ "set quote_regexp='^%'" message-hook ~fschaefer@brasslantern\.com \ "set quote_regexp='^[>}]'" message-hook ~fsal@.*\.nasa\.gov \ "set quote_regexp='^o[\n ]'" # Send-hooks # Warning! If some setting (e.g. my_hdr) is added in a send-hook, # then a "send-hook ." with the default (e.g. unmy_hdr) is needed # for the subsequent mail messages. send-hook . "my_hdr X-Mailer-Info: https://www.vinc17.net/mutt/" send-hook . "unmy_hdr Reply-To" send-hook . "unmy_hdr Mail-Followup-To" # No 8bit to smartgroups mailing-lists to avoid sig separator breakage. send-hook . "set allow_8bit=yes" send-hook @smartgroups\.com "set allow_8bit=no" send-hook . "set followup_to" send-hook mpfr-announce "set nofollowup_to" send-hook mpfr-announce "my_hdr Reply-To: mpfr@inria.fr" # In particular for announces to gmp-discuss related to MPFR releases. send-hook '~Cgmp-discuss ~sMPFR' "my_hdr Mail-Followup-To: mpfr@inria.fr" send-hook '~Cgmp-discuss ~s"^(Announce: GNU MPFR|GNU MPFR.*Release Candidate)"' "my_hdr Reply-To: mpfr@inria.fr" # Message Scoring folder-hook . "unset score" folder-hook . "unscore *" folder-hook (^imaps?://vlefevre@imap\.loria\.fr/INBOX) "source ~/.mutt.score.il" # Private commands source ~/.mutt.private # Aliases and mailing-lists source ~/.mutt.aliases # Local muttrc file source ~/.mutt.local # $Id: muttrc 161134 2023-08-30 15:17:16Z vinc17/cventin $