Mutt related additions.

This commit is contained in:
Cyteen May 2020-02-14 12:37:51 +00:00
parent 824202f442
commit 6a077c5b3e
10 changed files with 810 additions and 138 deletions

View File

@ -1,88 +0,0 @@
# avoid duplicates
set -x
rm /etc/apt/sources.list
rm /etc/apt/sources.list.d/devuan.list
ACTIVE=/etc/apt/sources.list.d
AVAILABLE=/etc/apt/sources.list-available
mkdir -p "${AVAILABLE}"
SECTION=(main contrib non-free)
<<<<<<< HEAD
ACTIVE_LIST=('ascii' 'ascii-security' 'ascii-proposed-security' 'ascii-updates' 'ascii-backports' 'ascii-proposed')
#ACTIVE_LIST=('beowulf' 'beowulf-security' 'beowulf-proposed-security' 'beowulf-updates' 'beowulf-backports' 'beowulf-proposed')
INACTIVE_LIST=('jessie' 'jessie-security' 'jessie-proposed' 'jessie-updates' 'jessie-backports' 'beowulf' 'beowulf-security' 'beowulf-updates' 'beowulf-backports' 'ceres')
=======
ACTIVE_LIST=('beowulf' 'beowulf-security' 'beowulf-updates' 'beowulf-backports')
#ACTIVE_LIST=('ascii' 'ascii-security' 'ascii-updates' 'ascii-backports')
#INACTIVE_LIST=('jessie' 'jessie-security' 'jessie-updates' 'jessie-backports' 'beowulf' 'beowulf-security' 'beowulf-updates' 'beowulf-backports' 'ceres')
INACTIVE_LIST=('jessie' 'jessie-security' 'jessie-updates' 'jessie-backports' 'ascii' 'ascii-security' 'ascii-updates' 'ascii-backports' 'ceres')
>>>>>>> 28f9022a8c89ab256d49746af2debedcf1764b46
OTHER_LIST=('experimental')
echo ${#ACTIVE_LIST[@]}
for RELEASE in "${ACTIVE_LIST[@]}"; do
echo "${RELEASE}"
bash -c "cat > ${AVAILABLE}/devuan_${RELEASE}.list" <<EOF
deb http://pkgmaster.devuan.org/merged/ ${RELEASE} ${SECTION[@]}
deb-src http://pkgmaster.devuan.org/merged/ ${RELEASE} ${SECTION[@]}
EOF
ln -sf "${AVAILABLE}"/devuan_"${RELEASE}".list "${ACTIVE}"/devuan_"${RELEASE}".list
done
echo ${#INACTIVE_LIST[@]}
for RELEASE in "${INACTIVE_LIST[@]}"; do
echo "${RELEASE}"
bash -c "cat > ${AVAILABLE}/devuan_${RELEASE}.list" <<EOF
deb http://pkgmaster.devuan.org/merged/ ${RELEASE} ${SECTION[@]}
deb-src http://pkgmaster.devuan.org/merged/ ${RELEASE} ${SECTION[@]}
EOF
done
echo ${#OTHER_LIST[@]}
for RELEASE in "${OTHER_LIST[@]}"; do
echo "${RELEASE}"
bash -c "cat > ${AVAILABLE}/devuan_${RELEASE}.list" <<EOF
deb http://packages.devuan.org/devuan ${RELEASE} main
deb-src http://packages.devuan.org/devuan ${RELEASE} main
EOF
done
bash -c "cat > ${AVAILABLE}/saltstack.list" <<EOF
# wget -q -O- "http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key" | apt-key add -
deb http://debian.saltstack.com/debian stretch-saltstack main
EOF
ln -sf "${AVAILABLE}"/saltstack.list "${ACTIVE}"/saltstack.list
wget -q -O- http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key | apt-key add -
# the docker packages have go over to systemd so these wont install
bash -c cat > "${AVAILABLE}"/docker.list <<EOF
#apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
# Debian stretch
deb http://apt.dockerproject.org/repo debian-stretch main
EOF
ln -sf "${AVAILABLE}"/docker.list "${ACTIVE}"/docker.list
bash -c "apt-key adv --keyserver hkp://p80.pool.sks-keyserv:w
ers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D"
apt-get update && apt-get install -y --force-yes devuan-keyring
#bash -c "cat > /etc/apt/sources.list.d/x2go.list" <<'EOF'
## apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E
## X2Go Repository (release builds)
#deb http://packages.x2go.org/debian jessie main
#
## X2Go Repository (sources of release builds)
#deb-src http://packages.x2go.org/debian jessie main
#
## X2Go Repository (nightly builds)
##deb http://packages.x2go.org/debian jessie heuler
#
## X2Go Repository (sources of nightly builds)
##deb-src http://packages.x2go.org/debian jessie heuler
#
## apt-get install x2goserver x2goserver-xsession
#EOF

42
010_generate-gpg.sh Executable file
View File

@ -0,0 +1,42 @@
# Generate GPG public private key pair, run `gpg --full-gen-key`.
#FIXME unattended key generation does not work.
EMAIL=default@foo.bar
#export GNUPGHOME="$(mktemp -d)"
cat >keydetails <<EOF
%echo Generating a basic OpenPGP key
Key-Type: RSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: User 1
Name-Comment: User 1
Name-Email: ${EMAIL}
Expire-Date: 0
%no-ask-passphrase
%no-protection
%pubring pubring.kbx
%secring trustdb.gpg
# Do a commit here, so that we can later print "done" :-)
%commit
%echo done
EOF
gpg --verbose --batch --gen-key keydetails
# Set trust to 5 for the key so we can encrypt without prompt.
echo -e "5\ny\n" | gpg2 --command-fd 0 --expert --edit-key ${EMAIL} trust;
# Test that the key was created and the permission the trust was set.
gpg --list-keys
# Test the key can encrypt and decrypt.
gpg -e -a -r ${EMAIL} keydetails
# `pass` must be installed and initialized to encrypt passwords.
# Be sure it is installed and run `pass init <yourgpgemail>`.
# creates ${HOME}/.password-store/
pass init ${EMAIL}

1
020_mpv.conf → 020_mpv.sh Normal file → Executable file
View File

@ -1,3 +1,4 @@
#!/usr/bin/env bash
apt-get -y install mpv
mkdir -p ~/.config/mpv

102
020_mutt-khard.sh Executable file
View File

@ -0,0 +1,102 @@
#FIXME: Install khard contacts support in mutt NOT TESTED YET
apt-get install -y khard
# khard integration
# khard is a command-line addressbook that uses locally-stored carddav address book entries.
# You can use vdirsyncer to sync those with CardDAV servers.
# Create new contact with:
# 'khard new -a address_book -i template.yaml'
# or with:
# 'cat template.yaml | khard new -a address_book'
NEOMUTTCONF=~/.config/mutt
cat >> ${NEOMUTTCONF}/muttrc <<'EOF'
## khard integration
# khard is a command-line addressbook that uses locally-stored carddav address book entries.
# You can use vdirsyncer to sync those with CardDAV servers.
# Create new contact with:
# 'khard new -a address_book -i template.yaml'
# or with:
# 'cat template.yaml | khard new -a address_book'
set query_command= "khard email -p %s"
bind editor <Tab> complete-query
bind editor ^T complete
macro index,pager A \
"<pipe-message>khard add-email<return>" \
"add the sender email address to khard"
EOF
mkdir -p ~/.contacts/family/
mkdir -p ~/.contacts/friends/
mkdir -p ~/.contacts/business/
# /usr/share/doc/khard/examples/khard/khard.conf.example
~/.config/khard/khard.conf <<'EOF'
[addressbooks]
[[family]]
path = ~/.contacts/family/
[[friends]]
path = ~/.contacts/friends/
[[business]]
path = ~/.contacts/business/
[general]
debug = no
default_action = list
editor = vim
merge_editor = vimdiff
[contact table]
# display names by first or last name: first_name / last_name
display = first_name
# group by address book: yes / no
group_by_addressbook = no
# reverse table ordering: yes / no
reverse = no
# append nicknames to name column: yes / no
show_nicknames = no
# show uid table column: yes / no
show_uids = yes
# sort by first or last name: first_name / last_name
sort = last_name
# localize dates: yes / no
localize_dates = yes
# set a comma separated list of preferred phone number types in descending priority
# or nothing for non-filtered alphabetical order
preferred_phone_number_type = pref, cell, home
# set a comma separated list of preferred email address types in descending priority
# or nothing for non-filtered alphabetical order
preferred_email_address_type = pref, work, home
[vcard]
# extend contacts with your own private objects
# these objects are stored with a leading "X-" before the object name in the vcard files
# every object label may only contain letters, digits and the - character
# example:
# private_objects = Jabber, Skype, Twitter
private_objects = Jabber, Skype, Twitter
# preferred vcard version: 3.0 / 4.0
preferred_version = 3.0
# Look into source vcf files to speed up search queries: yes / no
search_in_source_files = no
# skip unparsable vcard files: yes / no
skip_unparsable = no
EOF

124
020_mutt-notmuch-afew.sh Normal file
View File

@ -0,0 +1,124 @@
#FIXME: NOT TESTED YET needs notmuch-mutt installed first
#FIXME: add afew tagging: https://readthedocs.org/projects/afew/downloads/pdf/latest/
apt-get install -y afew # provides /usr/bin/afew
mkdir -p ~/.config/afew/
# Put a list of filters into ~/.config/afew/config :
cat > ~/.config/afew/config <<'EOF'
# This is the default filter chain
[SpamFilter]
[KillThreadsFilter]
[ListMailsFilter]
[ArchiveSentMailsFilter]
[InboxFilter]
EOF
MAILDIR_PATH=
# https://notmuchmail.org/initial_tagging/
# The [new] config section allows you to control which tags new messages receive. By default, notmuch config will use the tags inbox and unread.
# An ad-hoc approach to initial message tagging, which sets all new messages to get the new tag:
#sed -i 's,^\(tags=\).*,\1'new\;',' ~/.notmuch-config
sed -i '/\[new\]/{n;s/.*/tags=new\;/}' .notmuch-config
# After running notmuch new, all new messages will be marked new. You can then do various tag post-processing by just acting on messages with that tag.
MAILDIR="$HOME/.local/share/mail" # set by mutt-wizard setup
# And create a post-new hook for notmuch.
mkdir -p ${MAILDIR}/.notmuch/hooks
cat > ${MAILDIR}/.notmuch/hooks/post-new.notmuch.example <<EOF
# immediately archive all messages from "me"
notmuch tag -new -- tag:new and from:me@example.com
# delete all messages from a spammer:
notmuch tag +deleted -- tag:new and from:spam@spam.com
# tag all message from notmuch mailing list
notmuch tag +notmuch -- tag:new and to:notmuch@notmuchmail.org
# finally, retag all "new" messages "inbox" and "unread"
notmuch tag +inbox +unread -new -- tag:new
EOF
# Note: the queries do not generally include tag:new because this is implied when afew is run with the new flag.
cat > ${MAILDIR_PATH}/.notmuch/hooks/post-new.afew.example <<EOF
[ArchiveSentMailsFilter]
[Filter.1]
message = Delete all messages from spammer
query = from:spam@spam.com
tags = +deleted;-new
[Filter.2]
message = Tag all messages from the notmuch mailing list
query = to:notmuch@notmuchmail.org
tags = +notmuch
[InboxFilter]
EOF
cat > ${MAILDIR_PATH}/.notmuch/hooks/post-new <<'EOF'
!/bin/sh
/usr/bin/afew --tag --new
EOF
#---------------------------------------------------------------------
cat > ~/.config/afew/afew.config-example <<'EOF'
# global configuration
[global]
#[MailMover]
#folders = INBOX Junk
#max_age = 15
##rules
#INBOX = 'tag:spam':Junk 'NOT tag:inbox':Archive
#Junk = 'NOT tag:spam and tag:inbox':INBOX 'NOT tag:spam':Archive
# This is the default filter chain
#[SpamFilter]
#[KillThreadsFilter]
#[ListMailsFilter]
#[ArchiveSentMailsFilter]
#[InboxFilter]
# Let's say you like the SpamFilter, but it is way too polite
# 1. create an filter object and customize it
#[SpamFilter.0] # note the index
#message = meh
# 2. create a new type and...
#[ShitFilter(SpamFilter)]
#message = I hatez teh spam!
# create an object or two...
#[ShitFilter.0]
#[ShitFilter.1]
#message = Me hatez it too.
# 3. drop a custom filter type in ~/.config/afew/
#[MyCustomFilter]
# To create a custom generic filter, define it inline with
# your above filter chain. E.g.:
# ...
# [ListMailsFilter]
#
# [Filter.1]
# query = from:boss@office.com
# tags = +office
#
# [ArchiveSentMailsFilter]
# ...
EOF

49
020_mutt-notmuch.sh Normal file
View File

@ -0,0 +1,49 @@
#FIXME: Install notmuch mail indexer for mutt NOT TESTED YET
# NB the following macro is already in mutt-wizard.muttrc
#macro index \Cf "<enter-command>unset wait_key<enter><shell-escape>read -p 'Enter a search term to find with notmuch: ' x; echo \$x >~/.cache/mutt_terms<enter><limit>~i \"\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;s/\^id:// for@a;$,=\"|\";print@a' | perl -le '@a=<>; chomp@a; s/\\+/\\\\+/ for@a;print@a' \`\"<enter>" "show only messages matching a notmuch pattern"
apt-get install -y notmuch-mutt
NEOMUTTCONF="$HOME/config/mutt/"
MAILDIR="$HOME/.local/share/mail" # set by mutt-wizard setup
cat >> ${NEOMUTTCONF}/muttrc <<'EOF'
# notmuch
set nm_default_uri = "notmuch:///home/default/.local/share/mail"
virtual-mailboxes "My INBOX" "notmuch://?query=tag:inbox"
macro index <F8> \
"<enter-command>unset wait_key<enter><shell-escape>/usr/bin/notmuch-mutt --prompt search<enter><change-folder-readonly>~/.cache/mutt_results<enter>" \
"search mail (using notmuch)"
macro index <F9> \
"<enter-command>unset wait_key<enter><pipe-message>/usr/bin/notmuch-mutt thread<enter><change-folder-readonly>~/.cache/mutt_results<enter><enter-command>set wait_key<enter>" \
"search and reconstruct owning thread (using notmuch)"
tag-transforms "attachment" "@" \
"encrypted" "" \
"signed" "✎"
tag-formats "attachment" "GA" \
"encrypted" "GE" \
"signed" "GS"
EOF
mkdir -p ${MAILDIR}/.notmuch/hooks
cat > ${MAILDIR}/.notmuch/hooks/post-new.notmuch.example <<EOF
# immediately archive all messages from "me"
notmuch tag -new -- tag:new and from:me@example.com
# delete all messages from a spammer:
notmuch tag +deleted -- tag:new and from:spam@spam.com
# tag all message from notmuch mailing list
notmuch tag +notmuch -- tag:new and to:notmuch@notmuchmail.org
# finally, retag all "new" messages "inbox" and "unread"
notmuch tag +inbox +unread -new -- tag:new
EOF

409
020_mutt-wizard.sh Executable file
View File

@ -0,0 +1,409 @@
#!/usr/bin/bash
cd /var/tmp
apt-get install -y neomutt urlscan w3m w3m-img ripmime isync msmtp vdirsyncer pass mailsync libnotify-bin lynx urlview
echo 'alias mutt="neomutt "' >> ~/.zsh_aliases.d/002_neomutt.zsh
BASE_USER=LukeSmithxyz
BASE_REPO=mutt-wizard
PROJECT=${BASE_USER}/${BASE_REPO}
PRERELEASE=false
# RELEASE=$(curl "https://api.github.com/repos/${PROJECT}/releases?per_page=5" | jq -r '.[0] | select( .prerelease = false ) |.tag_name')
# VERSION=$(echo "${RELEASE}" | cut -c 2- | cut -f1 -d"-")
VERSION=$( date +%Y-%m-%d_ )git
DOWNLOAD_DIR=/tmp
# make a containing directory
mkdir -p /var/tmp/${BASE_REPO}-"${RELEASE}"
cd /var/tmp/${BASE_REPO}-"${RELEASE}" || exit
cat > ./description-pak << EOF
A system for automatically configuring mutt and isync with a simple interface and safe passwords
EOF
cat > ./checkinstall_it.sh << 'EOF'
# '$ mw add' and follow the prompts.
MUTTWIZARDCONF="/usr/local/share/mutt-wizard"
MUTTDIR="$HOME/.config/mutt"
ACCDIR="${MUTTDIR}/accounts"
COLORSCHEMES="${MUTTDIR}/colorschemes"
FONTS="${MUTTDIR}/fonts"
mkdir -p ${COLORSCHEMES}
mkdir -p ${fonts}
mkdir -p $ACCDIR
git clone https://github.com/sheoak/neomutt-powerline-nerdfonts.git ${MUTTDIR}/powerline
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/neonwolf-256.neomuttrc
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/zenburn.neomuttrc
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/vombatidae.neomuttrc
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/solarized-dark-256.neomuttrc
#wget -c -P ${COLORSCHEMES} https://git.sthu.org/?p=shutils.git;a=blob_plain;f=dotfiles/mutt/colors-gruvbox-shuber.muttrc;hb=master
#wget -c -P ${COLORSCHEMES} https://git.sthu.org/?p=shutils.git;a=blob_plain;f=dotfiles/mutt/colors-gruvbox-shuber-extended.muttrc;hb=master
cat >${COLORSCHEMES}/colors-gruvbox-shuber-extended.muttrc <<EOF
color compose header color223 color234
color compose security_encrypt color175 color234
color compose security_sign color109 color234
color compose security_both color142 color234
color compose security_none color208 color234
EOF
cat >${COLORSCHEMES}/colors-gruvbox-shuber.muttrc <<EOF
# gruvbox dark (contrast dark):
# bg0 = 234
# bg1 = 237
# bg2 = 239
# bg3 = 241
# bg4 = 243
#
# gray = 245
#
# fg0 = 229
# fg1 = 223
# fg2 = 250
# fg3 = 248
# fg4 = 246
#
# red = 167
# green = 142
# yellow = 214
# blue = 109
# purple = 175
# aqua = 108
# orange = 208
# See http://www.mutt.org/doc/manual/#color
color attachment color109 color234
color bold color229 color234
color error color167 color234
color hdrdefault color246 color234
color indicator color223 color237
color markers color243 color234
color normal color223 color234
color quoted color250 color234
color quoted1 color108 color234
color quoted2 color250 color234
color quoted3 color108 color234
color quoted4 color250 color234
color quoted5 color108 color234
color search color234 color208
color signature color108 color234
color status color234 color250
color tilde color243 color234
color tree color142 color234
color underline color223 color239
color sidebar_divider color250 color234
color sidebar_new color142 color234
color index color142 color234 ~N
color index color108 color234 ~O
color index color109 color234 ~P
color index color214 color234 ~F
color index color175 color234 ~Q
color index color167 color234 ~=
color index color234 color223 ~T
color index color234 color167 ~D
color header color214 color234 "^(To:|From:)"
color header color142 color234 "^Subject:"
color header color108 color234 "^X-Spam-Status:"
color header color108 color234 "^Received:"
color body color142 color234 "[a-z]{3,256}://[-a-zA-Z0-9@:%._\\+~#=/?&,]+"
#color body color142 color234 "[a-zA-Z]([-a-zA-Z0-9_]+\\.){2,256}[-a-zA-Z0-9_]{2,256}"
color body color208 color234 "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
color body color208 color234 "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
color body color234 color214 "[;:]-*[)>(<lt;|]"
color body color229 color234 "\\*[- A-Za-z]+\\*"
color body color214 color234 "^-.*PGP.*-*"
color body color142 color234 "^gpg: Good signature from"
color body color167 color234 "^gpg: Can't.*$"
color body color214 color234 "^gpg: WARNING:.*$"
color body color167 color234 "^gpg: BAD signature from"
color body color167 color234 "^gpg: Note: This key has expired!"
color body color214 color234 "^gpg: There is no indication that the signature belongs to the owner."
color body color214 color234 "^gpg: can't handle these multiple signatures"
color body color214 color234 "^gpg: signature verification suppressed"
color body color214 color234 "^gpg: invalid node with packet of type"
EOF
# split the existing mutt-wizard.muttrc into two to separate the colours from everything else so other colourschemes can be used.
cat > ${MUTTWIZARDCONF}/mutt-wizard.muttrc <<'EOF'
# vim: filetype=neomuttrc
# This file contains all of mutt-wizard's default settings.
# mutt-wizard will have this file sourced from your muttrc.
# In the interest of seamless updating, do not edit this file.
# If you want to override any settings, set those in your muttrc.
set mailcap_path = /usr/local/share/mutt-wizard/mailcap
set date_format="%y/%m/%d %I:%M%p"
set index_format="%2C %Z %?X?A& ? %D %-15.15F %s (%-4.4c)"
set sort = 'reverse-date'
set smtp_authenticators = 'gssapi:login'
set query_command = "abook --mutt-query '%s'"
set rfc2047_parameters = yes
set sleep_time = 0 # Pause 0 seconds for informational messages
set markers = no # Disables the `+` displayed at line wraps
set mark_old = no # Unread mail stay unread until read
set mime_forward = yes # attachments are forwarded with mail
set wait_key = no # mutt won't ask "press key to continue"
set fast_reply # skip to compose when replying
set fcc_attach # save attachments with the body
set forward_format = "Fwd: %s" # format of subject when forwarding
set forward_quote # include message in forwards
set reverse_name # reply as whomever it was to
set include # include message in replies
set mail_check=60 # to avoid lags using IMAP with some email providers (yahoo for example)
auto_view text/html # automatically show html (mailcap uses w3m)
auto_view application/pgp-encrypted
alternative_order text/plain text/enriched text/html
bind index,pager i noop
bind index,pager g noop
bind index \Cf noop
# General rebindings
bind index j next-entry
bind index k previous-entry
bind attach <return> view-mailcap
bind attach l view-mailcap
bind editor <space> noop
bind index G last-entry
bind index gg first-entry
bind pager,attach h exit
bind pager j next-line
bind pager k previous-line
bind pager l view-attachments
bind index D delete-message
bind index U undelete-message
bind index L limit
bind index h noop
bind index l display-message
bind index <space> tag-entry
#bind browser h goto-parent
macro browser h '<change-dir><kill-line>..<enter>' "Go to parent folder"
bind index,pager H view-raw-message
bind browser l select-entry
bind pager,browser gg top-page
bind pager,browser G bottom-page
bind index,pager,browser d half-down
bind index,pager,browser u half-up
bind index,pager S sync-mailbox
bind index,pager R group-reply
bind index \031 previous-undeleted # Mouse wheel
bind index \005 next-undeleted # Mouse wheel
bind pager \031 previous-line # Mouse wheel
bind pager \005 next-line # Mouse wheel
bind editor <Tab> complete-query
macro index,pager a "<enter-command>set my_pipe_decode=\$pipe_decode pipe_decode<return><pipe-message>abook --add-email<return><enter-command>set pipe_decode=\$my_pipe_decode; unset my_pipe_decode<return>" "add the sender address to abook"
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
macro index O "<shell-escape>mbsync -a<enter>" "run mbsync to sync all mail"
macro index \Cf "<enter-command>unset wait_key<enter><shell-escape>read -p 'Enter a search term to find with notmuch: ' x; echo \$x >~/.cache/mutt_terms<enter><limit>~i \"\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;s/\^id:// for@a;$,=\"|\";print@a' | perl -le '@a=<>; chomp@a; s/\\+/\\\\+/ for@a;print@a' \`\"<enter>" "show only messages matching a notmuch pattern"
macro index A "<limit>all\n" "show all messages (undo limit)"
# Sidebar mappings
set sidebar_visible = yes
set sidebar_width = 20
set sidebar_short_path = yes
set sidebar_next_new_wrap = yes
set mail_check_stats
set sidebar_format = '%B%?F? [%F]?%* %?N?%N/? %?S?%S?'
bind index,pager \Ck sidebar-prev
bind index,pager \Cj sidebar-next
bind index,pager \Co sidebar-open
bind index,pager \Cp sidebar-prev-new
bind index,pager \Cn sidebar-next-new
bind index,pager B sidebar-toggle-visible
EOF
cat > ${MUTTWIZARDCONF}/mutt-wizard-colors.muttrc <<'EOF'
# Default index colors:
color index yellow default '.*'
color index_author red default '.*'
color index_number blue default
color index_subject cyan default '.*'
# New mail is boldened:
color index brightyellow black "~N"
color index_author brightred black "~N"
color index_subject brightcyan black "~N"
# Tagged mail is highlighted:
color index brightyellow blue "~T"
color index_author brightred blue "~T"
color index_subject brightcyan blue "~T"
# Other colors and aesthetic settings:
mono bold bold
mono underline underline
mono indicator reverse
mono error bold
color normal default default
color indicator brightblack white
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
# Regex highlighting:
color header blue default ".*"
color header brightmagenta default "^(From)"
color header brightcyan default "^(Subject)"
color header brightwhite default "^(CC|BCC)"
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<>\"]"
EOF
cat >> ${MUTTDIR}/muttrc <<'EOF'
source accounts/1-cyteen42.muttrc
source /usr/local/share/mutt-wizard/mutt-wizard.muttrc
#source /usr/local/share/mutt-wizard/mutt-wizard-colors.muttrc
set sort = threads
set sort_aux = reverse-last-date-received
color progress white red
#source colorschemes/neonwolf-256.neomuttrc
#source colorschemes/zenburn.neomuttrc
#source colorschemes/vombatidae.neomuttrc
source colorschemes/solarized-dark-256.neomuttrc
# for solarized:
# you must load solarized 16 colors theme BEFORE this
# you terminal 16 colors must be set to solarized theme
source powerline/powerline.neomuttrc
#source powerline/powerline-rounded.neomuttrc
# for gruvbox:
source colorschemes/colors-gruvbox-shuber.muttrc
# For neomutt uncomment this line:
source colorschemes/colors-gruvbox-shuber-extended.muttrc
# you must load gruvbox theme BEFORE this
# you terminal 16 colors must be set to gruvbox theme
#source powerline/colors/gruvbox-powerline.neomuttrc
#source powerline/powerline.neomuttrc
EOF
mkdir -p $ACCDIR/${PROFILE_NAME}
cat > $ACCDIR/1-${PROFILE_NAME}.muttrc <<EOF
# vim: filetype=neomuttrc
# muttrc file for account ${PROFILE_NAME}
set realname = ${REAL_NAME}
set from = ${FROM}
set sendmail = "/usr/bin/msmtp -a mutt"
alias me ${REAL_NAME} <${EMAIL}>
set folder = "/home/${USER_NAME}/.local/share/mail/mutt"
set header_cache = /home/${USER_NAME}/.cache/mutt-wizard/
set message_cachedir = /home/${USER_NAME}/.cache/mutt-wizard/
set mbox_type = Maildir
EOF
# auto-generated with mutt-wizard: 'mw add' and follow the instructions
# mailboxes populated from the email account imap server so for a clean
# account just put in the standard =Inbox =Drafts =Trash =Sent =Junk
PROFILE_NAME=cyteen42
EMAIL=cyteen42@yahoo.co.uk
REAL_NAME="cyteen may"
mkdir -p $ACCDIR/${PROFILE_NAME}
cat > $ACCDIR/${PROFILE_NAME}.muttrc <<EOF
# vim: filetype=neomuttrc
# muttrc file for account ${PROFILE_NAME}
set realname = ${REAL_NAME}
set from = "${EMAIL}"
set sendmail = "msmtp -a ${PROFILE_NAME}"
alias me ${REAL_NAME} <${EMAIL}>
set folder = "/home/default/.local/share/mail/${PROFILE_NAME}"
set header_cache = /home/default/.cache/mutt-wizard/${PROFILE_NAME}/headers
set message_cachedir = /home/default/.cache/mutt-wizard/${PROFILE_NAME}/bodies
set mbox_type = Maildir
bind index,pager gg noop
bind index,pager g noop
bind index,pager M noop
bind index,pager C noop
bind index gg first-entry
macro index o "<shell-escape>mailsync -V ${PROFILE_NAME}<enter>" "run mbsync to sync ${PROFILE_NAME}"
unmailboxes *
set spoolfile = "+Inbox"
set record = "+Sent"
set postponed = "+Drafts"
set trash = "+Trash"
mailboxes "=Bulk\ Mail" "=eBay\ -\ won" "=eBay\ -\ dispatched" "=Archives.2013" "=2600hz\ Blog" "=devuan_list" "=Drafts" "=Inbox" "=aliexpress" "=Raspberry\ Pi" "=Archives.2014" "=paypal" "=greencycle\ taken" "=tutum" "=Junk" "=dinodirect" "=Archives.2017" "=eBay\ -\ confirmed" "=greencycle\ offered" "=diyaudio" "=Trash" "=greencycle\ wanted" "=artisan" "=Draft" "=Archives.2015" "=eBay" "=Archives" "=eBay\ -\ Ending" "=Sent" "=dealextreme" "=eBay\ -\ new\ items" "=Archive" "=Drafts.2013"
macro index,pager gi "<change-folder>=Inbox<enter>" "go to inbox" # mw-autogenerated
macro index,pager Mi ";<save-message>=Inbox<enter>" "move mail to inbox" # mw-autogenerated
macro index,pager Ci ";<copy-message>=Inbox<enter>" "copy mail to inbox" # mw-autogenerated
macro index,pager gs "<change-folder>=Sent<enter>" "go to sent" # mw-autogenerated
macro index,pager Ms ";<save-message>=Sent<enter>" "move mail to sent" # mw-autogenerated
macro index,pager Cs ";<copy-message>=Sent<enter>" "copy mail to sent" # mw-autogenerated
macro index,pager gd "<change-folder>=Drafts<enter>" "go to drafts" # mw-autogenerated
macro index,pager Md ";<save-message>=Drafts<enter>" "move mail to drafts" # mw-autogenerated
macro index,pager Cd ";<copy-message>=Drafts<enter>" "copy mail to drafts" # mw-autogenerated
macro index,pager gt "<change-folder>=Trash<enter>" "go to trash" # mw-autogenerated
macro index,pager Mt ";<save-message>=Trash<enter>" "move mail to trash" # mw-autogenerated
macro index,pager Ct ";<copy-message>=Trash<enter>" "copy mail to trash" # mw-autogenerated
macro index,pager gj "<change-folder>=Junk<enter>" "go to junk" # mw-autogenerated
macro index,pager Mj ";<save-message>=Junk<enter>" "move mail to junk" # mw-autogenerated
macro index,pager Cj ";<copy-message>=Junk<enter>" "copy mail to junk" # mw-autogenerated
macro index,pager ga "<change-folder>=Archives.2013<enter>" "go to archive" # mw-autogenerated
macro index,pager Ma ";<save-message>=Archives.2013<enter>" "move mail to archive" # mw-autogenerated
macro index,pager Ca ";<copy-message>=Archives.2013<enter>" "copy mail to archive" # mw-autogenerated
EOF
#mbsync ${PROFILE_NAME}

View File

@ -1,50 +0,0 @@
#!/usr/bin/env bash
gpgme
mu
# https://neomutt.org/guide/
apt-get install -y neomutt urlscan w3m w3m-img ripmime isync khard msmtp vdirsyncer notmuch-mutt pass mailsync libnotify-bin lynx urlview
mkdir ~/Mail
NEOMUTTCONF=~/.config/mutt
COLORSCHEMES=${NEOMUTTCONF}/colorschemes
FONTS=${NEOMUTTCONF}/fonts
mkdir -p ${COLORSCHEMES}
MUTT_CONF=~/.mutt
mkdir -p ${MUTT_CONF}
cat > ${MUTT_CONF}/muttrc <<'EOF'
EOF
git clone https://github.com/sheoak/neomutt-powerline-nerdfonts.git ${NEOMUTTCONF}/powerline
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/neonwolf-256.neomuttrc
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/zenburn.neomuttrc
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/vombatidae.neomuttrc
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/solarized-dark-256.neomuttrc
# edit neomutt configuration:
cat > ~/.config/neomutt/neomuttrc <<"EOF"
source colorschemes/vombatidae.neomuttrc
# for solarized:
# you must load solarized 16 colors theme BEFORE this
# you terminal 16 colors must be set to solarized theme
source powerline/powerline.neomuttrc
# for gruvbox:
# you must load gruvbox theme BEFORE this
# you terminal 16 colors must be set to gruvbox theme
#source powerline/colors/gruvbox-powerline.neomuttrc
#source powerline/powerline.neomuttrc
EOF
#gpg --full-gen-key

View File

@ -0,0 +1,51 @@
#!/usr/bin/env bash
DRIVER_VER=2.46
cd /var/tmp
wget -c https://chromedriver.storage.googleapis.com/${DRIVER_VER}/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
pip3 install selenium
cat > protonMailGenerator.py <<EOF
from selenium import webdriver
import time
url = 'https://protonmail.com/'
driver = webdriver.Chrome('/var/tmp/chromedriver')
driver.get(url)
driver.find_element_by_xpath('//*[@title="Sign Up"]').click()
time.sleep(2)
driver.find_element_by_class_name('panel-heading').click()
time.sleep(4)
driver.find_element_by_id('freePlan').click()
time.sleep(2)
driver.find_element_by_id('username').send_keys('usernameForUser')
time.sleep(1.5)
driver.find_element_by_id('password').send_keys('passwordForUser')
time.sleep(2)
driver.find_element_by_id('passwordc').send_keys('passwordForUser')
time.sleep(2)
driver.find_element_by_class_name('signUpProcess-btn-create').click()
time.sleep(1)
driver.find_element_by_id('confirmModalBtn').click()
EOF
python3 protonMailGenerator.py

32
generate-gpg-key.sh Normal file
View File

@ -0,0 +1,32 @@
#!/usr/bin/env bash
set +x
#apt-get install -y rng-tools gnupg2
sudo rngd -b -r /dev/urandom
export GNUPGHOME="$(mktemp -d)"
cat >keydetails <<EOF
%echo Generating a basic OpenPGP key
Key-Type: DSA
Key-Length: 1024
Subkey-Type: ELG-E
Subkey-Length: 1024
Name-Real: Joe Tester
Name-Comment: with stupid passphrase
Name-Email: joe@foo.bar
Expire-Date: 0
Passphrase: abc
# Do a commit here, so that we can later print "done" :-)
%commit
%echo done
EOF
gpg --batch --full-gen-key keydetails
gpg --list-secret-keys
echo -e "5\ny\n" | gpg --command-fd 0 --expert --edit-key joe@foo.bar trust;
gpg --list-keys
gpg -e -a -r joe@foo.bar keydetails