From 48af1d9bfb4a1a3138e2b3500e36441588036695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20La=C3=ADn?= Date: Sun, 21 Sep 2025 17:34:27 +0200 Subject: [PATCH] feat(neomutt): add terminal mail client --- .config/isyncrc | 22 ++++++ .config/neomutt/.github/README.md | 3 + .config/neomutt/.github/title.png | Bin 0 -> 32577 bytes .config/neomutt/binds | 52 +++++++++++++++ .config/neomutt/mailcap | 16 +++++ .config/neomutt/neomuttrc | 8 +++ .config/neomutt/options | 43 ++++++++++++ .config/neomutt/scripts/dirpicker | 10 +++ .config/neomutt/scripts/filepicker | 11 +++ .config/neomutt/theme | 104 +++++++++++++++++++++++++++++ 10 files changed, 269 insertions(+) create mode 100644 .config/isyncrc create mode 100644 .config/neomutt/.github/README.md create mode 100644 .config/neomutt/.github/title.png create mode 100644 .config/neomutt/binds create mode 100644 .config/neomutt/mailcap create mode 100644 .config/neomutt/neomuttrc create mode 100644 .config/neomutt/options create mode 100755 .config/neomutt/scripts/dirpicker create mode 100755 .config/neomutt/scripts/filepicker create mode 100644 .config/neomutt/theme diff --git a/.config/isyncrc b/.config/isyncrc new file mode 100644 index 00000000..603b6573 --- /dev/null +++ b/.config/isyncrc @@ -0,0 +1,22 @@ +# Remote Vault +IMAPStore proton-remote +Account proton + +# Local Vault +MaildirStore proton-local +Path ~/.mail/proton/ +Inbox ~/.mail/proton/INBOX +Subfolders Verbatim + +# Sync Channel +Channel proton-default +Far :proton-remote: +Near :proton-local: +Patterns * !"All Mail" +Create Both +Expunge Both +SyncState * + +# Sync Inbox +Group proton +Channel proton-default diff --git a/.config/neomutt/.github/README.md b/.config/neomutt/.github/README.md new file mode 100644 index 00000000..affa9d51 --- /dev/null +++ b/.config/neomutt/.github/README.md @@ -0,0 +1,3 @@ +
+ +
diff --git a/.config/neomutt/.github/title.png b/.config/neomutt/.github/title.png new file mode 100644 index 0000000000000000000000000000000000000000..f6631a47d74792ca08e04d3f66d6d377cc6caed6 GIT binary patch literal 32577 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 n(n+H2N-iWD+pv$yW2@LH95jioE70QcAIrz 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 view-mailcap +bind attach l view-mailcap + +bind index,pager B sidebar-toggle-visible + +macro compose A "bash $HOME/.config/neomutt/scripts/filepickersource $HOME/.config/neomutt/tmpfilebash $HOME/.config/neomutt/scripts/filepicker clean" "Attach with yazi" + +# Go to specific folder +macro index gd "$postponed" "go to drafts" +macro index gs "$record" "go to sent" +macro index gi "$spoolfile" "go to inbox" +macro index gt "$trash" "go to trash" diff --git a/.config/neomutt/mailcap b/.config/neomutt/mailcap new file mode 100644 index 00000000..5b7168d8 --- /dev/null +++ b/.config/neomutt/mailcap @@ -0,0 +1,16 @@ +# MS Word documents +application/msword; xdg-open %s +application/vnd.ms-excel; xdg-open %s +application/vnd.openxmlformats-officedocument.presentationml.presentation; xdg-open %s +application/vnd.oasis.opendocument.text; xdg-open %s + +# HTML +text/html; w3m -o auto_image=TRUE -I %{charset} -T text/html; copiousoutput; +text/plain; nvim %s + +# PDF +application/pdf; xdg-open %s + +# Images +image/png; xdg-open %s +image/jpeg; xdg-open %s diff --git a/.config/neomutt/neomuttrc b/.config/neomutt/neomuttrc new file mode 100644 index 00000000..30aedd62 --- /dev/null +++ b/.config/neomutt/neomuttrc @@ -0,0 +1,8 @@ +# vim: filetype=muttrc +# Accounts +source "~/.config/neomutt/accounts/account.com.example" + +# Source Files +source "~/.config/neomutt/binds" +source "~/.config/neomutt/options" +source "~/.config/neomutt/theme" diff --git a/.config/neomutt/options b/.config/neomutt/options new file mode 100644 index 00000000..8b83d871 --- /dev/null +++ b/.config/neomutt/options @@ -0,0 +1,43 @@ +# vim: filetype=muttrc +# General settings +set editor='nvim' +set attach_save_dir="~/downloads/mail-attachments" +set mailcap_path = ~/.config/neomutt/mailcap + +# Open mails on html view by default +auto_view text/html text/calendar +alternative_order text/calendar text/plain text/enriched text/html text/* + +set sidebar_visible=yes +set sidebar_width=30 +set sidebar_short_path=yes + +set pager_stop # don't go to next message automatically +set menu_scroll # scroll in menus +set pager_format="%4C %Z %[!%b %e at %I:%M %p] %.20n %s%* -- (%P)" +set wait_key=no + +set smart_wrap +set reflow_wrap=120 +set reflow_text + +set attach_format = '%u%D%I %t%4n %T%.40d%> [%.12m/%.12M, %.6e%?C?, %C?, %s] ' +set folder_format = '%4C %t %f' + +# Index View Options --------------------------------- +set date_format = "%d/%m/%y at %H:%M" + +# Status Bar {{{ +set status_chars = '—+#~' +set status_on_top = yes + +## status_format - format of summary on the current folder in the index +# https://www.neomutt.org/guide/reference.html#status-format +## +## %??? optionally print string, if>0 +## Default: -%r-NeoMutt: %f [Msgs:%?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 status_format = "%f%r—[%?M?%M/?%m messages, %?n?%n new, ?%?d?%d deleted, ?%?F?%F important, ?%?t?%t selected, ?%?p?%p drafts, ?%l]———(%s/%S)—%>—(%P)———" +set status_format = "%D %?u?[ %u] ?%?R?[ %R] ?%?d?[ %d] ?%?t?[ %t] ?%?F?[ %F] ?%?p?[ %p]? \n \n" + +# Default is: Mutt with %?m?%m messages&no messages?%?n? [%n NEW]? +set ts_status_format = 'mutt %m messages%?n?, %n new?' diff --git a/.config/neomutt/scripts/dirpicker b/.config/neomutt/scripts/dirpicker new file mode 100755 index 00000000..e9b5132f --- /dev/null +++ b/.config/neomutt/scripts/dirpicker @@ -0,0 +1,10 @@ +#!/bin/sh + +tmpfile=$HOME/.config/neomutt/tmpdir + +if \[ -z "$1" \]; then + yazi --cwd-file $tmpfile && + echo "$(awk 'BEGIN {printf "%s", "push "} {printf "%s", "\""$0"\""}' $tmpfile)" >$tmpfile +elif \[ $1 == "clean" \]; then + rm $tmpfile +fi diff --git a/.config/neomutt/scripts/filepicker b/.config/neomutt/scripts/filepicker new file mode 100755 index 00000000..2417f7f2 --- /dev/null +++ b/.config/neomutt/scripts/filepicker @@ -0,0 +1,11 @@ +#!/bin/sh + +tmpfile=$HOME/.config/neomutt/tmpfile + +if \[ -z "$1" \]; then + yazi --chooser-file $tmpfile && + sed -i 's/ /^V /g' $tmpfile && + echo "$(awk 'BEGIN {printf "%s", "push "} {printf "%s", "\""$0"\""}' $tmpfile)" >$tmpfile +elif \[ $1 == "clean" \]; then + rm $tmpfile +fi diff --git a/.config/neomutt/theme b/.config/neomutt/theme new file mode 100644 index 00000000..f55e9fe3 --- /dev/null +++ b/.config/neomutt/theme @@ -0,0 +1,104 @@ +# vim: filetype=muttrc + +# 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 color0 +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 +color body green default "\`[^\`]*\`" # Green text between ` and ` +color body brightblue default "^# \.*" # Headings as bold blue +color body brightcyan default "^## \.*" # Subheadings as bold cyan +color body brightgreen default "^### \.*" # Subsubheadings as bold green +color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow +color body brightcyan default "[;:][-o][)/(|]" # emoticons +color body brightcyan default "[;:][)(|]" # emoticons +color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon? +color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon? +color body red default "(BAD signature)" +color body cyan default "(Good signature)" +color body brightblack default "^gpg: Good signature .*" +color body brightyellow default "^gpg: " +color body brightyellow red "^gpg: BAD signature from.*" +mono body bold "^gpg: Good signature" +mono body bold "^gpg: BAD signature from.*" +color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]" + +# Default index colors: +color index yellow default '.*' +color index_author red default '.*' +color index_number blue default +color index_subject cyan default '.*' + +# For new mail: +color index brightyellow black "~N" +color index_author brightred black "~N" +color index_subject brightcyan black "~N" + +color progress black cyan +# color normal default default # Text is "Text" +# color index color2 default ~N # New Messages are Green +# color index color1 default ~F # Flagged messages are Red +# color index color13 default ~T # Tagged Messages are Red +# color index color1 default ~D # Messages to delete are Red +# color attachment color5 default # Attachments are Pink +# color signature color8 default # Signatures are Surface 2 +# color search color4 default # Highlighted results are Blue +# +# color indicator default color8 # currently highlighted message Surface 2=Background Text=Foreground +# color error color1 default # error messages are Red +# color status color15 default # status line "Subtext 0" +# color tree color15 default # thread tree arrows Subtext 0 +# color tilde color15 default # blank line padding Subtext 0 +# +# color hdrdefault color13 default # default headers Pink +# color header color13 default "^From:" +# color header color13 default "^Subject:" +# +# color quoted color15 default # Subtext 0 +# color quoted1 color7 default # Subtext 1 +# color quoted2 color8 default # Surface 2 +# color quoted3 color0 default # Surface 1 +# color quoted4 color0 default +# color quoted5 color0 default +# +# color body color2 default [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+ # email addresses Green +# color body color2 default (https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+ # URLs Green +# color body color4 default (^|[[:space:]])\\*[^[:space:]]+\\*([[:space:]]|$) # *bold* text Blue +# color body color4 default (^|[[:space:]])_[^[:space:]]+_([[:space:]]|$) # _underlined_ text Blue +# color body color4 default (^|[[:space:]])/[^[:space:]]+/([[:space:]]|$) # /italic/ text Blue +# +# color sidebar_flagged color1 default # Mailboxes with flagged mails are Red +# color sidebar_new color10 default # Mailboxes with new mail are Green