From f9018f8a6eef1179e640f8acaab97b521ab14d89 Mon Sep 17 00:00:00 2001 From: Johannes Löthberg Date: Sun, 6 Nov 2016 03:05:02 +0100 Subject: Switch to neomutt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Johannes Löthberg --- neomutt/config | 197 +++++++++++++++++++++++++++++++++++ neomutt/demize@archlinux.org.muttrc | 4 + neomutt/gpg.rc | 85 +++++++++++++++ neomutt/johannes@kyriasis.com.muttrc | 4 + neomutt/mailcap | 3 + neomutt/sig | 4 + neomutt/themes/comidia | 53 ++++++++++ neomutt/themes/current | 88 ++++++++++++++++ neomutt/tiny.pl | 49 +++++++++ 9 files changed, 487 insertions(+) create mode 100644 neomutt/config create mode 100644 neomutt/demize@archlinux.org.muttrc create mode 100644 neomutt/gpg.rc create mode 100644 neomutt/johannes@kyriasis.com.muttrc create mode 100644 neomutt/mailcap create mode 100644 neomutt/sig create mode 100644 neomutt/themes/comidia create mode 100644 neomutt/themes/current create mode 100755 neomutt/tiny.pl (limited to 'neomutt') diff --git a/neomutt/config b/neomutt/config new file mode 100644 index 0000000..14518ae --- /dev/null +++ b/neomutt/config @@ -0,0 +1,197 @@ +# Compose View Options ------------------------------- +set realname = "Johannes Löthberg" +set from = "johannes@kyriasis.com" +set envelope_from # “From:” from envelope sender +set reverse_name # Reply as whomever it was to +set reply_to # Reply to Reply to: field + +set fast_reply # Skip prompts directly to compose when replying +set fcc_attach # Save attachments with the body +set mime_forward # Forward messages as MIME part +set forward_format = "Fwd: %s" # Format of subject when forwarding +set attribution = "On %d, %n wrote:" # Format of quoting header +set include # Include message in replies +set forward_quote # Include message in forwards + +set charset = "utf-8" # Terminal charset for display/input +set send_charset = "utf-8" # Charset for outgoing messages +set config_charset = "utf-8" + +set edit_headers # Edit headers when editing +set editor = "nvim" # Editor used by mutt +set text_flowed = yes # Generate flowed attachments +set sleep_time = 0 # No delay when opening a maildir! + +set mbox_type = Maildir +set folder = "$HOME/mail" +set tmpdir = "$XDG_CACHE_HOME/mutt/temp" # where to keep temp files +set message_cachedir = "$XDG_CACHE_HOME/mutt/cache/" # where to store bodies +set header_cache = "$XDG_CACHE_HOME/mutt/cache/headers" # where to store headers +set certificate_file = "$XDG_CONFIG_HOME/mutt/certificates" # where to store certs +set mailcap_path = "$XDG_CONFIG_HOME/mutt/mailcap" # entries for filetypes +set signature = "$XDG_CONFIG_HOME/mutt/sig" # my signature file + +set spoolfile = "+inbox" +set mbox = "+archive" +set postponed = "+drafts" +set record = "+sent" + +mailboxes +inbox +sent +drafts +trash +archive +mailboxes +Spam +Ham +learn-spam +learn-ham + +mailboxes +arch-dev-public +arch-bugs +arch-mirrors +arch-projects +aur-general +aur-requests +mailboxes +arch-women +pacman-dev + +mailboxes +isync-devel +opensmtpd + +mailboxes +openldap-technical +openssh-unix-dev + +mailboxes +johannes-lothberg-gmail +lojban +Notes +ccna + +mailboxes ~/5mail/inbox + +set virtual_spoolfile = yes +set nm_record = yes +set nm_record_tags = "-inbox,sent,me" +set nm_default_uri = "notmuch:///home/kyrias/mail" + +virtual-mailboxes \ + "inbox" "notmuch://?query=tag:inbox" \ + "sent" "notmuch://?query=tag:sent" \ + "drafts" "notmuch://?query=tag:drafts" \ + "trash" "notmuch://?query=tag:trash" \ + "unread" "notmuch://?query=tag:unread" \ + "archive" "notmuch://?query=tag:archive" \ + "deleted" "notmuch://?query=tag:deleted" \ + \ + "spam" "notmuch://?query=tag:spam" \ + "ham" "notmuch://?query=tag:ham" \ + "learn-spam" "notmuch://?query=tag:learn-spam" \ + "learn-ham" "notmuch://?query=tag:learn-ham" \ + \ + "arch-dev-public" "notmuch://?query=tag:arch-dev-public" \ + "arch-devops" "notmuch://?query=tag:arch-devops" \ + "arch-bugs" "notmuch://?query=tag:arch-bugs" \ + "arch-mirrors" "notmuch://?query=tag:arch-mirrors" \ + "arch-projects" "notmuch://?query=tag:arch-projects" \ + "arch-security" "notmuch://?query=tag:arch-security" \ + "arch-general" "notmuch://?query=tag:arch-general" \ + "aur-requests" "notmuch://?query=tag:aur-requests" \ + "aur-general" "notmuch://?query=tag:aur-general" \ + "aur-dev" "notmuch://?query=tag:aur-dev" \ + "pacman-dev" "notmuch://?query=tag:pacman-dev" \ + "arch-women" "notmuch://?query=tag:arch-women" \ + "isync-devel" "notmuch://?query=tag:isync-devel" \ + "opensmtpd" "notmuch://?query=tag:opensmtpd" \ + "openldap-technical" "notmuch://?query=tag:openldap-technical" \ + "openssh-unix-dev" "notmuch://?query=tag:openssh-unix-dev" \ + "johannes-lothberg-gmail" "notmuch://?query=tag:johannes-lothberg-gmail" \ + "lojban" "notmuch://?query=tag:lojban" \ + "git" "notmuch://?query=tag:git" \ + "ccna" "notmuch://?query=tag:ccna" \ + "all" "notmuch://?query=*" + +set query_command="goobook -c \"$XDG_CONFIG_HOME\"/goobook/goobookrc query '%s'" +macro index,pager A "goobook -c \"$XDG_CONFIG_HOME/goobook/goobookrc\" add" \ + "add the sender address to Google contacts" +bind editor complete-query + +# Sending email +macro generic "A" ":source \"$XDG_CONFIG_HOME\"/mutt/demize@archlinux.org.muttrc" +macro generic "K" ":source \"$XDG_CONFIG_HOME\"/mutt/johannes@kyriasis.com.muttrc" + + +# Sync email +macro index O 'mbsync -c "$XDG_CONFIG_HOME/mbsyncrc" theos' \ + 'run mbsync to sync all mail' + +set sendmail = "msmtp --file $XDG_CONFIG_HOME/msmtprc -a theos" +set sendmail_wait = 0 +set copy = yes + +unset confirmappend # don't ask, just do! +set quit # don't ask, just do!! +set thorough_search # strip headers and eval mimes before searching + +# Status Bar ----------------------------------------- +set status_chars = " *%A" +set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?o? (%o old)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───" + +# Header Options ------------------------------------- +ignore * # ignore all headers +unignore from to cc delivered-to +unignore date subject In-Reply-To Message-ID +unignore X-Spambayes-Classification X-Spambayes-Trained +#unhdr_order * # some distros order things by default +#hdr_order from: to: cc: date: subject: # and in this order + +# Index View Options --------------------------------- +set date_format = "%d/%m" +set index_format = "[%Z] %D %-20.20F %s" +set sort = threads # like gmail +macro index i ':set sort=threads' +macro index I ':set sort=date-received' +set uncollapse_jump # don't collapse on an unread message +set pager_index_lines = 10 # number of index lines to show +set pager_context = 3 # number of context lines to show +set pager_stop # don't go to next message automatically +set menu_scroll # scroll in menus +set tilde # show tildes like in vim +unset markers # no ugly plus signs +set ignore_list_reply_to = yes # Ignore mangled Reply-To:'s from MLs + +set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+" +alternative_order text/plain text/enriched text/html + +macro index x "?" "change vfolder" +macro index C "?" "copy a message to a mailbox" +macro index M "?" "move a message to a mailbox" +macro index,pager d "+deleted -inbox -unread" "Mark an email as deleted" +bind index,pager D delete-message + +bind index gg first-entry +bind index G last-entry +bind index R group-reply +bind index S sync-mailbox +bind index collapse-thread + +# Pager Key Bindings --------------------------------- +bind pager k previous-line +bind pager j next-line +bind pager gg top +bind pager G bottom +bind pager R group-reply + +# Save and recall drafts +bind compose P postpone-message +bind index P recall-message + +# Move message to archive +macro index,pager a "unset resolve-inbox +archive=archiveset resolve" +macro index ,g "grep -a \^Message-ID: | sed \'s_Message-ID: <\\(.*\\)>_http:\/\/mid.gmane.org\/\\1_\' | xclip " "Copy gmane URL"" + +# View attachments properly. +bind attach view-mailcap + +source ~/.config/mutt/gpg.rc +set pgp_sign_as = 3A9D0BB5 +set pgp_use_gpg_agent = yes +set crypt_use_gpgme = yes +set crypt_autosign = yes +set crypt_replyencrypt = yes +set crypt_verify_sig = yes +set crypt_use_pka = yes + +my_hdr X-Clacks-Overhead: GNU Terry Pratchett + +source ~/.config/mutt/themes/comidia + +subscribe arch-dev-public@archlinux.org +subscribe aur-general@archlinux.org +subscribe aur-dev@archlinux.org +subscribe pacman-dev@archlinux.org +subscribe lojban@googlegroups.com +subscribe openldap-technical@openldap.org +subscribe misc@opensmtpd.org +subscribe git@vger.kernel.org +lists linux-wireless@vger.kernel.org diff --git a/neomutt/demize@archlinux.org.muttrc b/neomutt/demize@archlinux.org.muttrc new file mode 100644 index 0000000..e016376 --- /dev/null +++ b/neomutt/demize@archlinux.org.muttrc @@ -0,0 +1,4 @@ +set from = "demize@archlinux.org" +set sendmail = "orion-sendmail" + +# vim: ft=muttrc diff --git a/neomutt/gpg.rc b/neomutt/gpg.rc new file mode 100644 index 0000000..0ce6322 --- /dev/null +++ b/neomutt/gpg.rc @@ -0,0 +1,85 @@ +# -*-muttrc-*- +# +# Command formats for gpg. +# +# This version uses gpg-2comp from +# http://70t.de/download/gpg-2comp.tar.gz +# +# $Id$ +# +# %p The empty string when no passphrase is needed, +# the string "PGPPASSFD=0" if one is needed. +# +# This is mostly used in conditional % sequences. +# +# %f Most PGP commands operate on a single file or a file +# containing a message. %f expands to this file's name. +# +# %s When verifying signatures, there is another temporary file +# containing the detached signature. %s expands to this +# file's name. +# +# %a In "signing" contexts, this expands to the value of the +# configuration variable $pgp_sign_as. You probably need to +# use this within a conditional % sequence. +# +# %r In many contexts, mutt passes key IDs to pgp. %r expands to +# a list of key IDs. + +# Note that we explicitly set the comment armor header since GnuPG, when used +# in some localiaztion environments, generates 8bit data in that header, thereby +# breaking PGP/MIME. + +# decode application/pgp +set pgp_decode_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - %f" + +# verify a pgp/mime signature +set pgp_verify_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f" + +# decrypt a pgp/mime attachment +set pgp_decrypt_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - %f" + +# create a pgp/mime signed attachment +# set pgp_sign_command="gpg-2comp --comment '' --no-verbose --batch --output - --armor --detach-sign --textmode %?a?-u %a? %f" +set pgp_sign_command="gpg --no-verbose --batch --quiet --output - --armor --detach-sign --textmode %?a?-u %a? %f" + +# create a application/pgp signed (old-style) message +# set pgp_clearsign_command="gpg-2comp --comment '' --no-verbose --batch --output - --armor --textmode --clearsign %?a?-u %a? %f" +set pgp_clearsign_command="gpg --no-verbose --batch --quiet --output - --armor --textmode --clearsign %?a?-u %a? %f" + +# create a pgp/mime encrypted attachment +# set pgp_encrypt_only_command="pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f" +set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f" + +# create a pgp/mime encrypted and signed attachment +# set pgp_encrypt_sign_command="pgpewrap gpg-2comp -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f" +set pgp_encrypt_sign_command="pgpewrap gpg --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f" + +# import a key into the public key ring +set pgp_import_command="gpg --no-verbose --import %f" + +# export a key from the public key ring +set pgp_export_command="gpg --no-verbose --export --armor %r" + +# verify a key +set pgp_verify_key_command="gpg --verbose --batch --fingerprint --check-sigs %r" + +# read in the public key ring +set pgp_list_pubring_command="gpg --no-verbose --batch --quiet --with-colons --list-keys %r" + +# read in the secret key ring +set pgp_list_secring_command="gpg --no-verbose --batch --quiet --with-colons --list-secret-keys %r" + +# fetch keys +# set pgp_getkeys_command="pkspxycwrap %r" + +# pattern for good signature - may need to be adapted to locale! + +# set pgp_good_sign="^gpgv?: Good signature from " + +# OK, here's a version which uses gnupg's message catalog: +# set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`" + +# This version uses --status-fd messages +set pgp_good_sign="^\\[GNUPG:\\] GOODSIG" + diff --git a/neomutt/johannes@kyriasis.com.muttrc b/neomutt/johannes@kyriasis.com.muttrc new file mode 100644 index 0000000..ac66f3b --- /dev/null +++ b/neomutt/johannes@kyriasis.com.muttrc @@ -0,0 +1,4 @@ +set from = "johannes@kyriasis.com" +set sendmail = "msmtp --file $XDG_CONFIG_HOME/msmtprc -a theos" + +# vim: ft=muttrc diff --git a/neomutt/mailcap b/neomutt/mailcap new file mode 100644 index 0000000..ba462b6 --- /dev/null +++ b/neomutt/mailcap @@ -0,0 +1,3 @@ +text/html; chromium-private %s &; test=test -n "$DISPLAY"; needsterminal; +text/html; ~/.config/mutt/tiny.pl %s %{charset} ; copiousoutput ; nametemplate=%s.html +text/plain; ~/.config/mutt/tiny.pl %s %{charset} 't' ; copiousoutput ; nametemplate=%s.html diff --git a/neomutt/sig b/neomutt/sig new file mode 100644 index 0000000..e18e3b0 --- /dev/null +++ b/neomutt/sig @@ -0,0 +1,4 @@ +Sincerely, + Johannes Löthberg + PGP Key ID: 0x50FB9B273A9D0BB5 + https://theos.kyriasis.com/~kyrias/ diff --git a/neomutt/themes/comidia b/neomutt/themes/comidia new file mode 100644 index 0000000..8c264a6 --- /dev/null +++ b/neomutt/themes/comidia @@ -0,0 +1,53 @@ +# +# This theme is from H. D. Lee +# +# This colors file was originally taken from Rosenfeld's +# Modified slightly. +# Running aterm with: +# aterm +sb -geometry 80x60 -bg papayawhip -fg darkgreen -e mutt +# +# color terminals: +# (default, white, black, green, magenta, blue, cyan, yellow, red) +# (bright...) +# (color1,color2,...,colorN-1) +# +# object foreground background +# +color normal default default # normal text +color indicator brightcyan black # actual message +color tree brightmagenta default # thread arrows +color status cyan black # status line +color error brightcyan default # errors +color message cyan default # info messages +color signature red default # signature +color attachment green default # MIME attachments +color search brightyellow red # search matches +color tilde brightmagenta default # ~ at bottom of msg +color markers red default # + at beginning of wrapped lines +color hdrdefault blue default # default header lines +color bold red default # hiliting bold patterns in body +color underline green default # hiliting underlined patterns in body +color quoted cyan default # quoted text +color quoted1 green default +color quoted2 red default +color quoted3 magenta default +color quoted4 blue default +color quoted5 blue default +# +# object foreground backg. RegExp +# +color header red default "^(from|subject):" +color body yellow default "((ftp|http|https)://|(file|news):|www\\.)[-a-z0-9_.:]*[a-z0-9](/[^][{} \t\n\r\"<>()]*[^][{} \t\n\r\"<>().,:!])?/?" +color body cyan default "[-a-z_0-9.+]+@[-a-z_0-9.]+" +color body red default "(^| )\\*[-a-z0-9*]+\\*[,.?]?[ \n]" +color body green default "(^| )_[-a-z0-9_]+_[,.?]?[ \n]" + +uncolor index * # unset all color index entries +color index green default ~F # Flagged +color index red default ~N # New +color index brightblue default ~O # Old +color index magenta default ~T # Tagged +color index yellow default ~D # Deleted +color index blue default '\[(CHRPM|Contrib-Rpm)\]' +color index color240 default "~h ^X.Mailer..Microsoft.Outlook" +color index brightblack default "~n 10-20" diff --git a/neomutt/themes/current b/neomutt/themes/current new file mode 100644 index 0000000..028ab5b --- /dev/null +++ b/neomutt/themes/current @@ -0,0 +1,88 @@ + +## Theme kindly inspired from +## http://nongeekshandbook.blogspot.ie/2009/03/mutt-color-configuration.html + +## Colours for items in the index +color index brightcyan black ~N +color index brightred black ~O +color index brightyellow black ~F +color index black green ~T +color index brightred black ~D +mono index bold ~N +mono index bold ~F +mono index bold ~T +mono index bold ~D + +## Highlights inside the body of a message. + +## URLs +color body brightgreen black "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*" +color body brightgreen black "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+" +mono body bold "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*" +mono body bold "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+" + +## Email addresses. +color body brightgreen black "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+" + +## Header +color header green black "^from:" +color header green black "^to:" +color header green black "^cc:" +color header green black "^date:" +color header yellow black "^newsgroups:" +color header yellow black "^reply-to:" +color header brightcyan black "^subject:" +color header red black "^x-spam-rule:" +color header green black "^x-mailer:" +color header yellow black "^message-id:" +color header yellow black "^Organization:" +color header yellow black "^Organisation:" +color header yellow black "^User-Agent:" +color header yellow black "^message-id: .*pine" +color header yellow black "^X-Fnord:" +color header yellow black "^X-WebTV-Stationery:" + +color header red black "^x-spam-rule:" +color header green black "^x-mailer:" +color header yellow black "^message-id:" +color header yellow black "^Organization:" +color header yellow black "^Organisation:" +color header yellow black "^User-Agent:" +color header yellow black "^message-id: .*pine" +color header yellow black "^X-Fnord:" +color header yellow black "^X-WebTV-Stationery:" +color header yellow black "^X-Message-Flag:" +color header yellow black "^X-Spam-Status:" +color header yellow black "^X-SpamProbe:" +color header red black "^X-SpamProbe: SPAM" + +## Coloring quoted text - coloring the first 7 levels: +color quoted cyan black +color quoted1 yellow black +color quoted2 red black +color quoted3 green black +color quoted4 cyan black +color quoted5 yellow black +color quoted6 red black +color quoted7 green black + +## Default color definitions +color hdrdefault white green +color signature brightmagenta black +color indicator black cyan +color attachment green black +color error red black +color message white black +color search brightwhite magenta +color status brightyellow blue +color tree brightblue black +color normal white black +color tilde green black +color bold brightyellow black +color underline magenta black +color markers brightcyan black + +## Colour definitions when on a mono screen +mono bold bold +mono underline underline +mono indicator reverse diff --git a/neomutt/tiny.pl b/neomutt/tiny.pl new file mode 100755 index 0000000..06b51b7 --- /dev/null +++ b/neomutt/tiny.pl @@ -0,0 +1,49 @@ +#!/usr/bin/perl +################################### +# By: Ventz Petkov # +# Date: 01-05-11 # +# Last: 01-02-13 # +# Parses HTML + Long URLs in MUTT # +################################### + +use URI::Escape; +$file = $ARGV[0]; +@text = (); + +# Only shorten URLs at least this length or more +$tinyurltrigger = 40; + +# If we pass a 2nd argument, it means we want to force HTML check a 'text/plain' file +if(defined($ARGV[2])) { open(FP, $file); for() { push(@text, $_); } close(FP); } +# Otherwise, treat as HTML first +else { @text = `elinks -dump -dump-charset $ARGV[1] -default-mime-type text/html $file`; } + + +# Note: using while (instead of for) b/c for supposedly loads +# everything into memory - no reason to load large emails into memory + +while (my $line = shift @text) { + next if($line =~ /mailto:/); + if($line =~ /(\w+:\/\/\S+)/) { + my $link = $1; + chomp($link); + $size = length($link); + if($size >= $tinyurltrigger) { + eval { + my $alarm = 5; + alarm $alarm; + my $link = uri_escape($link); + $tinyurl=`wget -q -O - http://tinyurl.com/api-create.php?url=$link`; + alarm 0; + }; + + if ($@) { + $line =~ s/(\w+:\/\/\S+)/$link (wget TimeOut)/; } + else { $line =~ s/(\w+:\/\/\S+)/$tinyurl\n\t[>> $link <<]/; } + } + } + print "$line"; +} + + +exit 0; -- cgit v1.2.3-70-g09d2