Mutt related additions.
This commit is contained in:
parent
824202f442
commit
6a077c5b3e
|
|
@ -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
|
|
||||||
|
|
@ -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,3 +1,4 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
apt-get -y install mpv
|
apt-get -y install mpv
|
||||||
|
|
||||||
mkdir -p ~/.config/mpv
|
mkdir -p ~/.config/mpv
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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}
|
||||||
50
020_mutt.sh
50
020_mutt.sh
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
Loading…
Reference in New Issue