From bd71cfc168235b3d12d1b0616127244547eefb6f Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Sat, 19 Mar 2022 11:34:29 +0100 Subject: [PATCH] mail: Use new neomutt styling, extend html view --- bootstrap/packages.tsv | 13 +- mail/.config/glow/email.json | 204 +++++++++++++++++++++++++++ mail/.config/isync/mbsyncrc | 4 +- mail/.config/msmtp/config | 2 +- mail/.config/neomutt/colors | 226 ++++++++++++++++++++++++++---- mail/.config/neomutt/mailcap | 30 +++- mail/.config/neomutt/maps | 2 + mail/.config/neomutt/settings | 89 ++++++++---- mail/.local/bin/render-prettyhtml | 6 + 9 files changed, 501 insertions(+), 75 deletions(-) create mode 100644 mail/.config/glow/email.json create mode 100755 mail/.local/bin/render-prettyhtml diff --git a/bootstrap/packages.tsv b/bootstrap/packages.tsv index dfae361..743f256 100644 --- a/bootstrap/packages.tsv +++ b/bootstrap/packages.tsv @@ -33,6 +33,7 @@ bind A complete, highly portable implementation of the DNS protocol R bluez Daemons for the bluetooth protocol stack R bluez-utils Development and debugging utilities for the bluetooth protocol stack R brightnessctl Lightweight brightness control tool R +btop A monitor of system resources, bpytop ported to C++ R busted Elegant Lua unit testing (CLI) R caddy Fast web server with automatic HTTPS R calcurse A text-based personal organizer. R @@ -120,6 +121,7 @@ linux-firmware Firmware files for Linux R linux-headers Headers and scripts for building modules for the Linux kernel R littler a hash-bang and simple command line pipe front end for GNU R A logrotate Rotates system logs automatically R +lsof Lists open files for running Unix processes R lswt List Wayland toplevels A lua-format LuaFormatter - Code formatter for Lua A lua-language-server Lua Language Server coded by Lua R @@ -142,7 +144,7 @@ mopidy-scrobbler Mopidy extension for scrobbling played tracks to Last.fm A mopidy-spotify Mopidy extension for playing music from Spotify A moreutils A growing collection of the unix tools that nobody thought to write thirty years ago R mosh Mobile shell, surviving disconnects with local echo and line editing R -mpv-mpris MPRIS (Media Player Remote Interface Spec) plugin for mpv A +mpv-mpris MPRIS plugin for mpv R msmtp A mini smtp client R nano Pico editor clone with enhancements R ncmpcpp Almost exact clone of ncmpc with some new features R @@ -172,7 +174,7 @@ os-prober Utility to detect other OSes on a set of drives R p7zip Command-line file archiver with high compression ratio R parallel A shell tool for executing jobs in parallel R paru-bin Feature packed AUR helper A -pass-coffin A password store extension that hides data inside a GPG coffin A +pass-coffin A password store extension that hides data inside a signed and encrypted coffin A pass-ssh A pass extension that creates ssh keys with an automatically generated passphrases stored in pass and outputs the public key using fzf or rofi A pavucontrol PulseAudio Volume Control R pdfjs PDF reader in javascript R @@ -194,6 +196,7 @@ pyright Type checker for the Python language R python-adblock Brave's adblock library in Python R python-black Uncompromising Python code formatter R python-dictcc commandline tool for dict.cc A +python-html2text A HTML to markdown-structured text converter R python-openpyxl A Python library to read/write Excel 2007 xlsx/xlsm files R python-pagelabels Python library to manipulate PDF page numbers and labels. A python-pdfminer.six Community maintained fork of pdfminer A @@ -221,13 +224,12 @@ rtv Browse Reddit from your terminal A sc-im A spreadsheet program based on SC A screen Full-screen window manager that multiplexes a physical terminal R sfz A simple static file server A -shellcheck-bin Shell script analysis tool (binary release) A +shellcheck-bin Shell script analysis tool (binary release, static) A shfmt Format shell programs R siggo A terminal gui for signal-cli, written in Go. A slurp Select a region in a Wayland compositor R speedtest-cli Command line interface for testing internet bandwidth using speedtest.net R sshfs FUSE client based on the SSH File Transfer Protocol R -steam Valve's digital software delivery system R stow Manage installation of multiple softwares in the same directory tree R surfraw Shell Users' Revolutionary Front Rage Against the Web R swaybg Wallpaper tool for Wayland compositors R @@ -237,6 +239,7 @@ taskopen Script for taking notes and open urls with taskwarrior A tasksh A shell command that wraps Taskwarrior commands A tex-gyre-fonts Substitute PostScript fonts in OpenType format R texlab A cross-platform implementation of the Language Server Protocol for LaTeX. R +thermald The Linux Thermal Daemon program from 01.org R tigervnc Suite of VNC servers and clients. Based on the VNC 4 branch of TightVNC. R timew Timewarrior, A command line time tracking application R tllocalmgr-git A shell and command-line utility to manage TeXLive on Arch Linux A @@ -258,7 +261,6 @@ ufw Uncomplicated and easy to use CLI tool for managing a netfilter firewall R unclutter A small program for hiding the mouse cursor R unrar The RAR uncompression program R unrtf Command-line program which converts RTF documents to other formats R -upower Abstraction for enumerating power devices, listening to device events and querying history and statistics R urlview-xdg-git A curses URL parser for text files. Git version, adds support for QUITONLAUNCH option and XDG Base Directory specification compliance. A usql-bin Universal command-line interface for SQL databases A v4l2loopback-dkms v4l2-loopback device – module sources R @@ -282,6 +284,7 @@ wireless_tools Tools allowing to manipulate the Wireless Extensions R wpa_actiond Daemon that connects to wpa_supplicant and handles connect and disconnect events A wtype xdotool type for wayland R xdg-user-dirs Manage user directories like ~/Desktop and ~/Music R +xorg-xrandr Primitive command line interface to RandR extension R xsv A fast CSV toolkit written in Rust A yaml-language-server-bin Language server implementation for YAML files and optional schema support A youtube-dl A command-line program to download videos from YouTube.com and a few more sites R diff --git a/mail/.config/glow/email.json b/mail/.config/glow/email.json new file mode 100644 index 0000000..adb0482 --- /dev/null +++ b/mail/.config/glow/email.json @@ -0,0 +1,204 @@ +{ + "document": { + "block_prefix": "\n", + "block_suffix": "\n", + "color": "7", + "margin": 2 + }, + "block_quote": { + "indent": 0, + "color": "3", + "indent_token": "│ ", + "italic": true, + "margin": 1 + }, + "paragraph": {}, + "list": { + "level_indent": 2, + "color": "7" + }, + "heading": { + "block_suffix": "\n", + "color": "4", + "bold": true + }, + "h1": { + "prefix": " ", + "suffix": " ", + "color": "7", + "background_color": "4", + "bold": true + }, + "h2": { + "prefix": "## " + }, + "h3": { + "prefix": "### " + }, + "h4": { + "prefix": "#### " + }, + "h5": { + "prefix": "##### " + }, + "h6": { + "prefix": "###### ", + "color": "5", + "bold": false + }, + "text": {}, + "strikethrough": { + "crossed_out": true + }, + "emph": { + "italic": true, + "color": "3" + }, + "strong": { + "bold": true, + "color": "3" + }, + "hr": { + "color": "0", + "format": "\n―――――――――――――――――――\n" + }, + "item": { + "block_prefix": "• " + }, + "enumeration": { + "block_prefix": ". ", + "color": "6" + }, + "task": { + "ticked": "[✓] ", + "unticked": "[ ] " + }, + "link": { + "color": "6", + "underline": true + }, + "link_text": { + "color": "5", + "bold": true + }, + "image": { + "color": "6", + "underline": true + }, + "image_text": { + "color": "5", + "format": "Image: {{.text}} →" + }, + "code": { + "color": "7", + "prefix": " ", + "suffix": " ", + "background_color": "#44475a" + }, + "code_block": { + "color": "3", + "margin": 2, + "chroma": { + "text": { + "color": "#ansilightgray" + }, + "error": { + "color": "#ansilightgray", + "background_color": "#ansidarkred" + }, + "comment": { + "color": "#ansidarkgray" + }, + "comment_preproc": { + "color": "#ansipurple" + }, + "keyword": { + "color": "#ansipurple" + }, + "keyword_reserved": { + "color": "#ansipurple" + }, + "keyword_namespace": { + "color": "#ansipurple" + }, + "keyword_type": { + "color": "#ansiteal" + }, + "operator": { + "color": "#ansipurple" + }, + "punctuation": { + "color": "#ansilightgray" + }, + "name": { + "color": "#ansiteal" + }, + "name_builtin": { + "color": "#ansiteal" + }, + "name_tag": { + "color": "#ansipurple" + }, + "name_attribute": { + "color": "#ansidarkgreen" + }, + "name_class": { + "color": "#ansiteal" + }, + "name_constant": { + "color": "#ansidarkblue" + }, + "name_decorator": { + "color": "#ansidarkgreen" + }, + "name_exception": {}, + "name_function": { + "color": "#ansidarkgreen" + }, + "name_other": {}, + "literal": {}, + "literal_number": { + "color": "#ansiturquoise" + }, + "literal_date": {}, + "literal_string": { + "color": "#ansibrown" + }, + "literal_string_escape": { + "color": "#ansipurple" + }, + "generic_deleted": { + "color": "#ansidarkred" + }, + "generic_emph": { + "color": "#ansibrown", + "italic": true + }, + "generic_inserted": { + "color": "#ansidarkgreen" + }, + "generic_strong": { + "color": "#ansiyellow", + "bold": true + }, + "generic_subheading": { + "color": "#ansidarkblue" + }, + "background": { + "background_color": "#44475" + } + } + }, + "table": { + "center_separator": "┼", + "column_separator": "│", + "row_separator": "─" + }, + "definition_list": {}, + "definition_term": {}, + "definition_description": { + "block_prefix": "\n🠶 " + }, + "html_block": {}, + "html_span": {} +} diff --git a/mail/.config/isync/mbsyncrc b/mail/.config/isync/mbsyncrc index cba9b9a..815c415 100644 --- a/mail/.config/isync/mbsyncrc +++ b/mail/.config/isync/mbsyncrc @@ -3,8 +3,8 @@ IMAPAccount gmail # Address to connect to Host imap.gmail.com -UserCmd "pass show misc/aerc-gmail-app-password | grep username | cut -d: -f2" -PassCmd "pass show misc/aerc-gmail-app-password | head -n1" +UserCmd "pass show misc/gmail-app-password | grep username | cut -d: -f2" +PassCmd "pass show misc/gmail-app-password | head -n1" # To store the password in an encrypted file use PassCmd instead of Pass # PassCmd "gpg2 -q --for-your-eyes-only --no-tty -d ~/.mailpass.gpg" # diff --git a/mail/.config/msmtp/config b/mail/.config/msmtp/config index 840a0b2..fd173cb 100644 --- a/mail/.config/msmtp/config +++ b/mail/.config/msmtp/config @@ -12,7 +12,7 @@ port 587 from marty.oehme@gmail.com user marty.oehme@gmail.com # password plain-text-password-goes-here -passwordeval "gpg --quiet --for-your-eyes-only --no-tty --decrypt $XDG_DATA_HOME/pass/misc/aerc-gmail-app-password.gpg" +passwordeval "pass show misc/gmail-app-password | head -n1" # Set a default account account default : personal-gmail diff --git a/mail/.config/neomutt/colors b/mail/.config/neomutt/colors index 7b7d1b3..faae263 100644 --- a/mail/.config/neomutt/colors +++ b/mail/.config/neomutt/colors @@ -1,39 +1,39 @@ -# taken from https://gideonwolfe.com/posts/workflow/neomutt/intro/ -# Header colors: +# # taken from https://gideonwolfe.com/posts/workflow/neomutt/intro/ +# # Header colors: color header blue default ".*" color header brightmagenta default "^(From)" color header brightcyan default "^(Subject)" color header brightwhite default "^(CC|BCC)" -mono bold bold -mono underline underline -mono indicator reverse -mono error bold -color normal default default -color indicator brightyellow default # currently selected message. default makes bar clear, disabled arrow to save space. -color sidebar_highlight red default -color sidebar_divider brightblack black -color sidebar_flagged red black -color sidebar_new green black -color normal brightyellow default -color error red default -color tilde black default -color message cyan default -color markers red white -color attachment white default -color search brightmagenta default -color status brightyellow black -color hdrdefault brightgreen default -color quoted green default -color quoted1 blue default -color quoted2 cyan default -color quoted3 yellow default -color quoted4 red default -color quoted5 brightred default -color signature brightgreen default -color bold black default -color underline black default -color normal default default +# mono bold bold +# mono underline underline +# mono indicator reverse +# mono error bold +# color normal default default +# color indicator brightyellow default # currently selected message. default makes bar clear, disabled arrow to save space. +# color sidebar_highlight red default +# color sidebar_divider brightblack black +# color sidebar_flagged red black +# color sidebar_new green black +# color normal brightyellow default +# color error red default +# color tilde black default +# color message cyan default +# color markers red white +# color attachment white default +# color search brightmagenta default +# color status brightyellow black +# color hdrdefault brightgreen default +# color quoted green default +# color quoted1 blue default +# color quoted2 cyan default +# color quoted3 yellow default +# color quoted4 red default +# color quoted5 brightred default +# color signature brightgreen default +# color bold black default +# color underline black default +# color normal default default color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL @@ -67,3 +67,167 @@ color index_author brightred black "~N" color index_subject brightcyan black "~N" color progress black cyan +# Nerd icons idea based on https://github.com/sheoak/neomutt-powerline-nerdfonts/ +# Dracula colors based on Dracula Theme by Paul Townsend + + +# Formatting ---------------------------------------------------------------------- +set date_format = "%a %d %h %H:%M" +set index_format=" %zc %zs %zt | %-35.35L %@attachment_info@ %?M10?~(%1M) ?%-30.100s %> %?Y?%Y ? %(!%a %d %h %H:%M) " +set pager_format="%n %T %s%*  %{!%d %b · %H:%M} %?X? %X?%P" +set status_format = " %D %?u? %u ?%?R? %R ?%?d? %d ?%?t? %t ?%?F? %F ?%?p? %p? \n \n" +set compose_format="-- NeoMutt: Compose [Approx. msg size: %l Atts: %a]%>-" +# set vfolder_format = "%N %?n?%3n& ? %8m  · %f" +set attach_format = "%u%D  %T%-75.75d %?T?%& ? %5s · %m/%M" +set sidebar_format = '%D%?Z? [%Z]?%* %?S?%S?' +index-format-hook attachment_info '=B text/calendar ~X 1' ' ' +index-format-hook attachment_info '=B text/calendar' " " +index-format-hook attachment_info '~X 1' " " +index-format-hook attachment_info '~A' " " + + +# General Colors ------------------------------------------------------------------ +color normal default default # general text +color error color231 color212 # error messages +color message default default # messages at the bottom +color prompt default default # prompt text +color search black color10 # search highlight + + +# Statusbar Colors ---------------------------------------------------------------- +color status color141 default +color status color7 color8 '([a-zA-Z0-9\.,]|\[|\])(\s)' # bubble content 1 +color status color7 color8 '(\s)([a-zA-Z0-9\.,]|\[|\])' # bubble content 2 +color status color7 color8 '(\% )' # % symbol +color status color7 color8 '(\S)' # empty spaces +color status color8 default '(|)' # statusline "bubbles" +color status color69 black '(\` )' # bubble account variation +color status white color69 '([a-zA-Z0-9\.]+)( )' # account text +color status green color8 '' # Unread messages count +color status blue color8 '' # Read messages count icon +color status yellow color8 '' # Flagged icon +color status red color8 '' # Pending delete icon + + +# Index Colors -------------------------------------------------------------------- +color index color15 default '~N' # new messages +color index color8 default '~R' # read messages +color index color8 default '~Q' # messages which have been replied to +color index_collapsed color4 default # collapsed thread (message count text) +color index color5 default '!~Q^~p' # sent only to me and haven't been replied to +color index color22 default '~h X-Label..' # messages with a complete label +color index color6 default '~F' # flagged messages +color index color6 default '~F~N' # flagged messages (new) +color index color14 default '~F~R' # flagged messages (read) +color index color1 default '~D' # deleted messages +color index color1 default '~D~N' # deleted messages (new) +color index color9 default '~D~R' # deleted messages (read) +color index color3 default '~T' # tagged messages +color index color3 default '~T~N' # tagged messages (new) +color index color11 default '~T~R' # tagged messages (read) +color tree color8 color8 # thread tree lines/arrow +color indicator default color8 # selection indicator +color index_date color8 default # date is always the same colour +color index_label color6 default # label is always the same colour + + +# Sidebar Colors ------------------------------------------------------------------ +color sidebar_indicator color14 black # currently selected mailbox +color sidebar_highlight white color8 # highlighted, but not open, mailbox. +color sidebar_ordinary color8 default # Color to give mailboxes by default +color sidebar_divider color8 black # divider between sidebar & content +color sidebar_flagged red black # mailboxes containing flagged mail +color sidebar_new green black # mailboxes containing new mail +color sidebar_unread color7 default # mailboxes containing unread mail +color sidebar_unread color7 default # mailboxes containing unread mail + + +# Message Headers ----------------------------------------------------------------- +color hdrdefault color8 default + + +# Message Body -------------------------------------------------------------------- + +# Attachments +color attachment color8 default + +# Signature +color signature color8 default + +# emails +# color body color14 default '[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+' + +# hide "mailto" +color body color0 color0 '' + +# URLs +color body color3 default '(https?|ftp)://[-\.,/%~_:?&=\#a-zA-Z0-9\+]+' + +# Dividers +color body color8 default '(^[-_]*$)' + +# Important info in calendar invites +color body color6 default '^(Date\/Time|Location|Organiser|Invitees|Teams Meeting)(:| \~\~)' + +# Quotes +color quoted color61 default +color quoted1 color117 default +color quoted2 color84 default +color quoted3 color215 default +color quoted4 color212 default + +# Forward/reply headers +color body color8 default '(^(To|From|Sent|Subject):.*)' + +# Patch syntax highlighting +# color body brightwhite default '^[[:space:]].*' +# color body yellow default ^(diff).* +# color body white default ^[\-\-\-].* +# color body white default ^[\+\+\+].* +# color body green default ^[\+].* +# color body red default ^[\-].* +# color body brightblue default [@@].* +# color body cyan default ^(Signed-off-by).* +# color body brightwhite default ^(Cc) +# color body yellow default "^diff \-.*" +# color body brightwhite default "^index [a-f0-9].*" +# color body brightblue default "^---$" +# color body white default "^\-\-\- .*" +# color body white default "^[\+]{3} .*" +# color body green default "^[\+][^\+]+.*" +# color body red default "^\-[^\-]+.*" +# color body brightblue default "^@@ .*" +# color body green default "LGTM" +# color body brightmagenta default "-- Commit Summary --" +# color body brightmagenta default "-- File Changes --" +# color body brightmagenta default "-- Patch Links --" +# color body green default "^Merged #.*" +# color body red default "^Closed #.*" +# color body brightblue default "^Reply to this email.*" + + +# Misc ----------------------------------------------------------------------------- + +# no addressed to me, to me, group, cc, sent by me, mailing list +set to_chars=" " + +# unchanged mailbox, changed, read only, attach mode +set status_chars = " " +ifdef crypt_chars set crypt_chars = " " +set flag_chars = " " + +# hide some tags +set hidden_tags = "unread,draft,flagged,passed,replied,attachment,signed,encrypted" +tag-transforms "replied" "↻ " \ + "encrytpted" "" \ + "signed" "" \ + "attachment" "" \ + +# The formats must start with 'G' and the entire sequence is case sensitive. +tag-formats "replied" "GR" \ + "encrypted" "GE" \ + "signed" "GS" \ + "attachment" "GA" \ + + # don't put '+' at the beginning of wrapped lines +set markers=no diff --git a/mail/.config/neomutt/mailcap b/mail/.config/neomutt/mailcap index 0c8fb9a..acbeddc 100644 --- a/mail/.config/neomutt/mailcap +++ b/mail/.config/neomutt/mailcap @@ -1,8 +1,28 @@ -text/html; $BROWSER %s -text/html; w3m -I %{charset} -T text/html -dump; copiousoutput; -video/*; setsid umpv --quiet %s &; copiousoutput -audio/*; mpv %s ; -application/*; mkdir -p /tmp/mutt \; cp %s /tmp/mutt \; xdg-open /tmp/mutt/$(basename %s) & +# open html emails in browser (or whatever GUI program is used to render HTML) +text/html; xdg-open %s ; nametemplate=%s.html +# render html emails inline using magic (uncomment the line below to use lynx instead) +# text/html; lynx -assume_charset=%{charset} -display_charset=utf-8 -collapse_br_tags -dump %s; nametemplate=%s.html; copiousoutput +text/html; render-prettyhtml %s; nametemplate=%s.html; copiousoutput; text/plain; $EDITOR %s ; + +# show calendar invites +text/calendar; render-calendar-attachment.py %s; copiousoutput; +application/ics; mutt-viewical; copiousoutput; + +# open images externally +image/*; nsxiv %s ; + +# open videos in mpv +video/*; mpv --autofit-larger=90\%x90\% %s; needsterminal; +video/*; setsid mpv --quiet %s &; copiousoutput + +# open spreadsheets in sc-im +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; sc-im %s; needsterminal + +# open anything else externally +application/pdf; xdg-open %s; + +application/*; mkdir -p /tmp/mutt \; cp %s /tmp/mutt \; xdg-open /tmp/mutt/$(basename %s) & application/pgp-encrypted; gpg -d '%s'; copiousoutput; application/pgp-keys; gpg --import '%s'; copiousoutput; + diff --git a/mail/.config/neomutt/maps b/mail/.config/neomutt/maps index a57a8f9..fee8617 100644 --- a/mail/.config/neomutt/maps +++ b/mail/.config/neomutt/maps @@ -44,6 +44,8 @@ bind pager gg top bind pager G bottom # compose postpone bind compose p postpone-message +# markdown to html for composition +macro compose M "F pandoc -s -f markdown -t html \ny^T^Utext/html; charset=UTF-8\n" "Convert from MD to HTML" # since we unbound the original g bind index,pager R group-reply diff --git a/mail/.config/neomutt/settings b/mail/.config/neomutt/settings index 450a765..735c43a 100644 --- a/mail/.config/neomutt/settings +++ b/mail/.config/neomutt/settings @@ -11,63 +11,90 @@ set from = "marty.oehme@gmail.com" set mail_check = 60 set mail_check_stats -# Basic settings -set quit # at least for rapid prototyping -unset mark_old # things should only be new/unread or I actually looked at them -set pipe_decode # get rid of headers when passing messages along -set wait_key = no # don't wait for user input after shell cmds, auto-view, piping, etc -# Pager settings -# filetypes and mailcap +set quit # at least for rapid prototyping +set sleep_time = 0 # no pause for info messages +set mark_old = no # things should only be new/unread or I actually looked at them +set pager_read_delay = 3 # mark read after 3 sec +set pipe_decode # get rid of headers when passing messages along +set auto_tag # apply commands to all tagged messages automatically +set wait_key = no # don't wait for user input after shell cmds, auto-view, piping, etc +set thorough_search = no # don't pre-process mail for ~b/~B searches +set flag_safe # make it impossible to delete flagged mails + # Pager settings + # filetypes and mailcap set mailcap_path = "~/.config/neomutt/mailcap:~/.mailcap:/usr/share/neomutt/mailcap:/etc/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap" -# Consult mime.types for determining types of these attachments + # Consult mime.types for determining types of these attachments mime_lookup application/octet-stream -alternative_order multipart/mixed multipart/related text/plain -alternative_order text/html text/plain text/enriched text/* -# This requires a ~/.mailcap entry with the copiousoutput flag, such as: -# text/html; lynx -dump -width ${COLUMNS:-80} %s; nametemplate=%s.html; copiousoutput -# Prefer plain text to html but multipart to plain for those only sending that + # This requires a ~/.mailcap entry with the copiousoutput flag, such as: + # text/html; lynx -dump -width ${COLUMNS:-80} %s; nametemplate=%s.html; copiousoutput + # Prefer plain text to html but multipart to plain for those only sending that +auto_view application/ics +auto_view text/calendar +auto_view text/plain auto_view text/html -# Remember to `mkdir -p ~/.neomutt/hcache` first: +alternative_order text/calendar application/ics text/plain text/enriched text/html text/* multipart/mixed multipart/related text/plain +set count_alternatives = yes # look for attachments also in multipart/alternatives + # Remember to `mkdir -p ~/.neomutt/hcache` first: set header_cache= "~/.neomutt/hcache" -# Compose settings -set edit_headers # allow editing headers while writing mail -set sig_dashes # separate signature from mail -set fast_reply # automatically fill in from and subject for replies + # Compose settings +set edit_headers # allow editing headers while writing mail +set sig_dashes # separate signature from mail +set fast_reply # automatically fill in from and subject for replies set forward_format = "Fwd: %s" -set reply_to # default send back to reply-to: header instead of from: header -set reverse_name # default to reply as person e-mail was originally sent to -set include # include original msg in reply -set forward_quote # include original msg as quote in fwd -# set editor = "emacsclient -a emacs -t" -# set editor = "vim" +set reply_to # default send back to reply-to: header instead of from: header +set reverse_name # default to reply as person e-mail was originally sent to +set include # include original msg in reply +set forward_quote # include original msg as quote in fwd +set forward_format = "FW: %s" # subject for forwarding +set mime_forward = no # forward attachments with mail +set fcc_attach # attachments saved with body + # set editor = "emacsclient -a emacs -t" + # set editor = "vim" set mime_type_query_command = "xdg-mime query filetype" -# send settings + # send settings set sendmail = "/usr/bin/msmtp -a personal-gmail" set sendmail_wait = 0 # Display Settings +set allow_ansi # allow escape codes for color etc set sort = threads set sort_re # thread based on regex below set reply_regex = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*" +set quote_regex = "^( {0,4}[>|:#%]| {0,4}[A-Za-z0-9]+[>|]+)+" set sort_aux = reverse-last-date-received -set date_format = "%z/%m/%d %I:%M%p" +# set date_format = "%z/%m/%d %I:%M%p" # set date_format = "%m/%d" -set index_format = "%4C [%Z] %{%y/%b %d} %-20.20F %s" +# set index_format = "%4C [%Z] %{%y/%b %d} %-20.20F %s" # sidebar view options set sidebar_visible = yes -set sidebar_width = 18 -set sidebar_format = "%B%?F? [%F]?%* %?N?%N/?%S" +set sidebar_width = 24 +# set sidebar_format = "%B%?F? [%F]?%* %?N?%N/?%S" +set sidebar_divider_char = ' ░' +set sidebar_folder_indent = yes +set sidebar_indent_string = ' - ' +set sidebar_visible = no +set sidebar_next_new_wrap = yes +set sidebar_short_path = yes +set sidebar_component_depth = 0 color sidebar_new color221 color233 # statusbar view options set status_chars = " *%A" -set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───" +# set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───" # pager view options -set pager_index_lines = 5 +set pager_index_lines = 10 set pager_context = 3 set pager_stop # do not go to next msg if at bottom of pager set menu_scroll = yes set tilde # show tildes for blank lines unset markers # no + markers for wrapped stuff +set wrap = 90 +#### Thread ordering +set use_threads=reverse +set sort='last-date' +set collapse_all = yes +set uncollapse_new = no +set thread_received = yes +set narrow_tree=no # hide headers except for those explicitly unignored ignore * unignore From To Cc Bcc Date Subject Message-ID diff --git a/mail/.local/bin/render-prettyhtml b/mail/.local/bin/render-prettyhtml new file mode 100755 index 0000000..26fd0aa --- /dev/null +++ b/mail/.local/bin/render-prettyhtml @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# render html as markdown and display in glow, supports syntax highlighting +# requires: html2text, glow +# author: CEUK +perl -0777pe 's/()(.*?)(<\/code>)/\1\2\3\n```\2\n\4\n```\n\5/gs' "$1" | html2text | sed -re 's/^\s+(```(\w+)?)/\1/gm' >/tmp/mutt.md +glow -s ~/.config/glow/email.json /tmp/mutt.md | sed 's/\x1b\[[6-9;]*m//g'